Está en la página 1de 8

8 Canales de PWM con un 16F628A

ELECTRNICA
etiquetas: tutoriales

http://www.neoteo.com/8-canales-de-pwm-con-un-16f628a/

Luego del mtico 16F84A, el microcontrolador que le sucede en complejidad es el tambin


popular16F628A. Con su aparicin en el mercado, marc un avance significativo por sobre el
16F84A en incontables aspectos, uno de ellos es la incorporacin de un mdulo
CCP (Capture/Compare/PWM). La posibilidad de incorporar en forma nativa un generador de
seal PWM simplific mucho los trabajos al momento de emular una salida analgica desde el chip.
Hasta aqu todos haban sido 1s y 0s, los LEDs slo encendan o apagaban y los motores
funcionaban o no, mientras que necesitabas tener la posibilidad de atenuar la iluminacin de un LED,
variar la velocidad de un motor y otras aplicaciones que requeran una urgente salida analgica. De
manera muy inteligente, y sin dejar de trabajar con niveles lgicos, veremos los mtodos ms
frecuentes para aprovechar no slo una salida PWM, sinoocho a partir de un microcontrolador
sencillo y muy econmico.
Con el trabajo de hoy veremos de manera muy sencilla y didctica, algunas posibilidades que existen
dentro del mundo de los microcontroladores que te ayudarn a comprender muchos conceptos que
son importantes en la fase inicial, cuando nos decidimos a trabajar con estos dispositivos. Por
supuesto que lo primero que debemos aclarar y definir es el concepto de PWM. Qu es
el PWM?Pulse-Width Modulation o lo que en castellano significa modulacin por ancho de pulsos.
Es decir, partiendo de una seal de amplitud y frecuencia fija, vamos a proceder a variar el ancho del
semiciclo activo, comprimindolo o expandindolo para as lograr transportar dentro de la seal una
informacin variable que utilizaremos para diversas aplicaciones segn la necesidad del desarrollo
que emprendamos.

En la grfica vemos claramente que, manteniendo una frecuencia constante (representada por el
Perodo) de la seal de salida de cualquiera de los puertos de un microcontrolador, podemos aplicar
una variacin del tiempo de duracin de la mencionada salida en estado alto (referencias de color
rojo). De esta manera, si la variacin es en aumento, incrementar el valor promedio de
la tensinaplicada en el dispositivo conectado (referencias de color verde). En el caso de la
aplicacin de un ancho de pulso mnimo, observaremos una salida de tensin promedio casi nula,
por lo que si tenemos all conectado un LED, el mismo lucir prcticamente apagado. Por el
contrario, si el ancho de pulsos que le imponemos a nuestra seal es el mximo posible, el mismo
LED brillar en toda su intensidad.

Con este artilugio electrnico estaremos acercndonos mucho a una salida analgica con la que
podremos variar velocidades de motores, intensidad de brillo de un conjunto de LEDs y hasta las
aplicaciones ms interesantes y divertidas que se nos ocurran. La idea de funcionamiento inicial es
muy simple y se sustenta en el funcionamiento del Timer0 del microcontrolador. Habilitando el
overflow del TMR0 (T0IE = 1) y manejando su incremento con una variable BYTE, podemos jugar
con valores que irn desde 0 hasta 255, donde desbordar y recomenzar el ciclo de cuenta. Por lo
tanto, lo primero que haremos es (dentro del programa fuente) habilitar las interrupciones y darle
un marco funcional y operativo ajustando los registros pertinentes para un funcionamiento correcto
del TMR0.

Una vez que la interrupcin (PWM_INT) est preparada para acumular los valores que comenzarn
a aparecer en la variable DUTY0 para finalmente entregar el resultado en el puerto B (seccin del
programa indicada en rojo difuso), ya estaremos listos para organizar y preparar la variable DUTY0
con valores comprendidos entre 0 y 255. Entre las ms sencillas y prcticas para experimentar
dentro de la mayora de los programas que manejan el lenguaje BASIC, se encuentra la
instruccin POT. Esta sencilla instruccin ser capaz de leer un potencimetro, una resistencia
variable del tipo preset, un termistor, un LDR, un NTC, un PTC y cualquier otra resistencia que no
supere los 50K.

La aplicacin del circuito es muy sencilla y slo se necesita un capacitor en serie con la resistencia
variable. Mediante la instruccin POT, el microcontrolador mide el tiempo de descarga del capacitor,
tiempo que ser directamente proporcional a la resistencia que adopte P1. La sintaxis del ejemplo
mostrado en la grfica devolver un valor mximo de 100 y lo cargar en la variable VAR1. Esto se
conectar al pin 0 del puerto B y, a cada vuelta del lazo, estar informando al PIC si la resistencia ha
variado o no. En nuestro caso, la instruccin llevar un lmite de 255 para cargar al mximo la
variableDUTY0. Veremos el funcionamiento del sistema de la siguiente forma:
Como habrs apreciado en el video, el funcionamiento es muy claro y sencillo y nos invita a
profundizar en la experimentacin. La primera posibilidad clara es la de hacer un contador de 1 a 255
por pasos de 1 en forma ascendente y luego en forma descendente. De esta forma, el LED que
estamos utilizando para el ensayo variar entre mximos y mnimos y a ese comportamiento
podemos darle mayor o menor velocidad segn el ajuste del retardo que se ubica entre cada
lazo FOR NEXT.
En el final del ensayo con el hardware, completaremos la conexin de todo el puerto B con 8 LEDs
indicadores a la salida e implementaremos un recorrido secuencial que, al ubicar los 8 LEDs en
forma de crculo, nos permitir observar un agradable efecto que, como en el caso anterior, podemos
variar en velocidad para darle un poco de vrtigo al movimiento. Pero es bueno dejarlo en la etapa
inicial a la velocidad que te lo entregamos para poder apreciar el efecto cuasi-analgico que
ofrecen los LEDs. Observars en el cdigo fuente la implementacin de un comando que no
habamos utilizado hasta ahora y es el comando Complemento ~

Aqu necesitaremos 8 acumuladores y 8 variables DUTY; la funcin del complemento ser muy
sencilla de entender y muy til. Como todos sabemos, el complemento de 1 es 0, de 11 es 00, de
1010101010 es 0101010101, y as con cualquier nmero binario. Por lo tanto, y para dar un ejemplo,
mientras DUTY5 vaya decrementando su valor desde 255 hasta 1, DUTY6 se ir incrementando al
mismo ritmo desde 1 a 255. Esto es muy interesante de ver y ensayar porque permite una transicin
suave desde un LED al contiguo. Si no se utiliza esta lnea de cdigo, que puedes eliminar para
notar la diferencia, observars que, cuando se apaga totalmente DUTY5, se enciende de golpe y a
pleno DUTY6 siguiendo as toda la vuelta. En cambio, de esta forma, mientras uno se apaga el
otro comienza a encenderse y la transicin es ms suave y agradable. Observa el video:
Por supuesto que el circuito es tan sencillo y simple que no merece aclaraciones especiales.
Al16F628A debemos alimentarlo con una fuente de alimentacin de 5Volts y aplicarle en su conexin
de oscilador un cristal de cuarzo de 4Mhz. Si lo que deseas es construir un gadget llamativo,
dinmico y con luces en movimiento, puedes optar por una construccin a partir de una batera de
9Voltios y un 7805, sacando el ejemplo del popular artculo del POV. Luego, una resistencia de 4K7
para el MCLR por pin 4, ms ocho resistencias de 220 ohms y 8 LEDs del color que gustes y
quedars como un rey regalando a tus chicas un presente navideo tan original. Seguramente, no
podrs evitar ganar el mote de friki del ao, pero sin duda alguna muchos te pedirn una
demostracin de lo que es capaz de hacer tu maravilla.
A toda esta aplicacin que hemos visto se le puede agregar conexin RS232 al ordenador para
variar parmetros como velocidad, efectos de transicin de encendido, seleccin de salidas
activadas y muchas aplicaciones ms. Tambin puedes utilizar este sistema de control PWM para
cargas importantes de varios amperes, donde puedas manejar motores y/o luminarias
incandescentes de varias decenas de watts. Para esto es importante que utilices un circuito

optimizado con un MOSFETde potencia que pueda manejar una carga de varios amperes. Un
ejemplo que te recomendamos sera un circuito como el siguiente:

En general, la frecuencia de PWM depende de la aplicacin. Sin embargo, hay dos reglas de oro en
lo que respecta a la frecuencia del PWM. La primera es que a medida que la frecuencia aumenta,
tambin lo hace la demanda de corriente debido a prdidas propias de un circuito conmutado. La
segunda es que la capacitancia e inductancia de la carga tienden a limitar la respuesta en
frecuencia del circuito. En condiciones de bajo consumo, es una buena idea utilizar el mnimo de
frecuencia posible con la finalidad de reducir prdidas. En los circuitos, la capacitancia y/o
inductancia que intervienen son factores que deben ser considerados para la correcta eleccin de la
frecuencia del PWM.
Los sistemas operados por PWM son utilizados frecuentemente en el control de motores debido a la
eficacia de los sistemas conmutados en contraste con los de regulacin lineal de velocidad. Un
aspecto importante a la hora de elegir la frecuencia de PWM para el control de un motor es la
respuesta del motor ante cambios en el "DutyCycle" (ciclo de trabajo) del PWM. Un motor va a tener
una respuesta ms rpida a cambio de un "DutyCycle" a frecuencias mayores. Otra consideracin
que no debes dejar de tener en cuenta es el ruido provocado por el motor. Los motores de corriente
continua del tipo "brushed" (con escobillas y colector) hacen un ruido intolerable dentro del rango
audible cuando son llevados a altas frecuencias. Para eliminar este fenmeno, hay que utilizar
este tipo de motores a frecuencias mayores que los 4kHz. Recordemos que los humanos pueden
escuchar frecuencias hasta los 20kHZ; sin embargo, la mecnica de los motores va a atenuar el
ruido en virtud de su imposibilidad de resonar a tan altas frecuencias.
Es muy importante que conozcas las posibilidades que te brinda este artculo de poder
obtener hasta 8 salidas PWM con un ajuste individual para cada salida en lo que refiere a su factor
de trabajo (DutyCycle). Esta aplicacin va mucho ms all que un simple juego de luces en forma de
crculo o un emulador del efecto de Knight Rider, sino que ests ante un verdadero sistema de
control que, aplicado apropiadamente, puede ayudarte a resolver muchos problemas de control.
Adems, PWM se puede lograr hasta con 555, pero del modo en que te lo hemos presentado, todas
las salidas pueden mantener una probable sincrona requerida por la aplicacin, hecho que con los
555 eso sera impensado.

Por otra parte, tambin puedes utilizar el/los mdulos CCP que traen en forma nativa los
microcontroladores, pero nunca alcanzaras a sumar ocho unidades a un costo tan irrisorio como
el circuito propuesto. Es decir, un PIC que traiga ms de dos mdulos CCP, puede costar muchos
euros, mientras que t podrs controlar todo un mecanismo complejo con muy poco gasto y,
adems, siempre tendrs la posibilidad de hacer trabajar a este 16F628A (que controlar tus LEDs
RGB o tus motores) como esclavo de otros procesadores ms especficos abocados a cualquier
funcin especial. Podemos afirmar en pocas palabras que el circuito propuesto hoy es un
verdadero expansor de salidas PWM para cualquier sistema. Disfrtalo.
Download:Los archivos fuente de los ejemplos de este artculo

También podría gustarte