Generación de 3 PWM, probamos led RGB

En algunas ocasiones necesitamos generar más señales PWM de las que el PIC puede hacer por Hardware. Para ello podemos recurrir a generarlas por Sofware con la sencilla ayuda del Timer.


En este artículo generamos tres señales PWM con mismo periodo pero distinto Duty, y las utilizamos para iluminar un LED RGB.

Para generar tres PWM utilizando el Timer tendremos tres variables que marcarán el momento en el que queremos disparar cada uno de ellos. Son variables de 8 bits, lo que nos da una resolución de 256 valores distintos para el Duty Cycle.

 

En cada ejecución de la interrupción del Timer comparamos un contador de Ticks con cada uno de esos tres valores, y cuando haya coincidencia disparamos el que corresponda.

Cuando los Ticks llegan a 0, bajamos las tres señales puesto que trabajan con el mismo periodo.

Los leds RGB son unos estupendos dispositivos que encierran en un único encapsulado tres leds que producen los tres colores básicos: rojo, verde y azul.

 

 

Con esta pequeña utilidad tenemos la posibilidad de observar toda la gama cromática que podemos obtener de uno de estos ingenios de manera muy sencilla, mediante una interface RS232 con el PC, con comandos RGB. Concretamente 256 x 256 x 256 = 16M colores.

Así, si conectamos nuestro PIC al puerto serie del PC, podemos enviarle comandos como estos:

R120G60B240 -> establece Rojo = 120, Verde = 60 y Azul = 240
R34G180 -> establece Rojo = 34, Verde = 180 y deja el azul como estaba.

 

El programa también realiza una bonita demo que «pasea» nuestro led por toda la gama cromática que es capaz de ofrecernos.

A continuación unas capturas de pantalla:

 

 

Y aquí un vídeo de la Demo:

 

Podéis descargar el programa y la simulación Proteus en la zona de Descargas, concretamente aquí: Generación de 3 PWM por software.

Algunos de vosotros me habéis escrito porque no tenéis Proteus, reclamándome el esquema del circuito. Es muy simple y se deduce fácilmente viendo el código, pero lo pego a continuación:

Que lo disfrutes.

Share