El uso adecuado de los recursos (periféricos) de un microcontrolador puede ayudar a desarrollar infinidad de proyectos y solucionar una cantidad muy grande de problemas, ya sea en domótica como en automatización industrial. En este artículo describiremos cómo utilizar el periférico "CCP" (Capture, Compare, PWM) del microcontrolador PIC16F628A en modo PWM.
CONTROL PWM X CONTROL LINEAL
Siempre que queramos controlar la potencia total entregada a una carga DC del tipo resistivo o incluso de otro tipo, podemos hacerlo de forma lineal. Esto se puede hacer usando un potenciómetro, por ejemplo. Vea la figura 1.
El lector notará que, en este ejemplo, hay un gran consumo de corriente. Note que cuando Vm = Vcc/2 tendremos el control lineal disipando la misma potencia del motor:
Entonces se puede afirmar que este tipo de control es poco eficiente, especialmente en la banda de 0 a Vcc/2.
Sin embargo, este mismo control se podría realizar variando el tiempo en que la carga permanece a plena potencia y a potencia cero. O sea, controlaríamos la potencia entregada a través de una "llave". Cuando está cerrado, la carga recibiría toda la potencia, cuando está abierto, no se entregaría energía. Observe la figura 2.
Tenga en cuenta que ahora ya no tenemos control lineal. Y "todo o nada", y la carga se queda con toda la tensión Vcc o no. Por lo tanto, no hay disipación en el control (llave).
De acuerdo con la velocidad a la que se abre y se cierra la llave, entregaríamos más o menos tensión a carga (tensión media).
Un control PWM (Pulse Width Modulation, o en buen español "Modulación por Ancho de Pulso) le permite hacer precisamente eso. Variamos el "tiempo" que la carga recibe plena potencia versus el tiempo que la carga no recibe ningún poder. Esto se hace a través de pulsos con tiempo controlado.
El "tiempo" de estos pulsos determinará la cantidad de tensión entregada. Cuanto mayor sea la duración de "T1" y menor la duración de "T2", mayor será la potencia entregada. Cuanto más corta sea la duración de "T1" y más larga la duración de "T2", menor será la potencia. Vale la pena señalar que los pulsos siempre tienen el valor máximo de la tensión aplicada, por lo que estamos siempre entregando la tensión máxima soportada por el elemento controlado. En el caso de un motor, por ejemplo, podemos garantizar el torque máximo para una banda mucho mayor de velocidad (rotación). Cuidado para la figura 3.
Otro dato importante se refiere al período total (frecuencia). Siempre será fijo, es decir, la suma de los periodos de "T1" Es "T2" siempre será el mismo, tanto para la situación de "Velocidad más alta" como para la de "Velocidad más baja" en el gráfico.
Vemos que este método de control es ideal para aplicaciones de motores DC, control de brillo de LEDs, "black light" de LCDs, etc.
PWM con PIC16F628A
El PIC16F628A tiene internamente un periférico de control PWM completo con salida de resolución de 10 bits en el pino "9" (RB3/CCP). Este periférico opera independientemente del programa, siendo sólo necesario "setear" algunos registros para utilizar el canal CCP.
Hay dos puntos importantes que el lector debe tener en cuenta sobre el uso del canal PWM del PIC16F628A (CCP). Comparte el pino de 1/O RB3 (pino 9) y cuando el CCP está en uso, este pino de 1/0 se desactivará como el 1/0 digital del PIC, mientras que el CCP está siendo usado. Recuerde cuando use el CCP como PWM, configure el pino RB3 como salida del comando TRISB.
El otro punto es que la base de tiempo para el PWM se realiza a través del "Timer2" (TMR2) del PIC y, por tanto, el programa de usuario no debe hacer uso de este, dejándolo libre para el PWM (CCP). El tiempo contado por TMR2 se puede dividir por una "prescale", aumentando el tiempo a contar.
Para configurar un PWM, primero debemos definir su período de trabajo. Para calcular este período en el PIC, utilice la fórmula dada a continuación: (F1)
La frecuencia PWM se puede calcular con la fórmula:
F = 1 / TPWM
Para calcular el "duty cicle", el lector debe dividir el período que el pulso permanece en un nivel alto (T1) para el período total del PWM. Para calcular el tiempo que el pulso permanece en un nivel alto debemos usar: (F2)
Entonces: (F3)
Observando cuidadosamente la fórmula pasada, el lector puede notar que el valor de "duty cicle" para el PIC depende del valor ingresado en CCPR1L, en PR2 y los bits 4 y 5 de CCP1CON (CCP1X y CCP1Y), no depende del valor del cristal ingresado en el PIC.
Anteriormente dijimos que la resolución PWM en el PIC es de 10 bits. Por tanto, debemos entender que nuestro pulso puede variar del 0% al 100% con una resolución máxima de 1024 puntos.
La fórmula para calcular el número máximo de bits que definirá el número máximo de puntos PWM (resolución) viene dada por:
Quizás este "volumen" de fórmulas pueda parecer algo confuso para el lector. En este caso, nada mejor que un ejemplo para resolver todas las dudas posibles. Calculemos los valores a insertar en los registros PIC para un PWM operando a una frecuencia de 3.906 kHz, con oscilador interno o externo a 4 MHz:
Primero convertimos nuestra frecuencia a periodo:
Ahora calcularemos el valor a insertar en PR2, considerando el "preescale" como "1" (frecuencia de T en síOSC): (F4)
Calculemos ahora la resolución. (F5)
Creemos que el lector ahora tiene suficiente información para calcular su propio valor PWM para el PIC. Tenga en cuenta que antes que nada es necesario definir la frecuencia de trabajo deseada, teniendo en cuenta la frecuencia de operación del PIC y la resolución deseada.
UN EJEMPLO PRÁCTICO
En la figura 4 el lector tiene un circuito eléctrico usando un PIC16F628A en el control del brillo de un LED, a través del canal CCP (PWM). Tenga en cuenta que el circuito es bastante simple. Solo tenemos el microcontrolador (CL1), un capacitor cerámico de100nF de desacoplamiento (C1) y dos llaves (S1 y S2) tipo "push-button" NA (normalmente abierto) que permiten aumentar o disminuir la luminosidad del LED (D1). Los resistores R2 y R3 son resistores "pull-down" para ayudar a leer las llaves (las mismas se leen en el nivel lógico "1").
El PIC16F628A tiene un oscilador interno de 4 MHz con una precisión del 1%, más que suficiente para nuestra propuesta. Por lo tanto, el cristal y los dos capacitores cerámicos que se usan en otros tipos de PIC no son necesarios.
La energía del circuito debe realizarse a través de una fuente de 5V DC regulada con 300mA corriente mínima. ¡Atención a la pregunta de la fuente!
Como nuestro lector ya sabrá, todo microcontrolador necesita un programa para funcionar. Estaremos considerando que el lector interesado en probar el circuito aquí presentado tiene experiencia con microcontroladores PIC Microchip®, principalmente en cuanto a la compilación y grabación del programa en el microcontrolador (uso de MPASM o MPLAB y cualquier grabadora) y por lo tanto no presentamos nada acerca de en este artículo.
Para lectores sin experiencia con microcontroladores PIC Microchip®, recomendamos leer el artículo "Microcontroladores PIC - Consejos para montajes exitosos", por el autor Márcio José Soares (¡el que escribe!), publicado en el número 98. Este artículo detalla puntos importantes sobre "Hardware y Software” de los microcontroladores, el uso de compiladores y también consejos sobre cómo adquirir una buena grabadora.
Consejo: Saber Marketing, http://www.sabermarketing.com.br, vende ediciones que ya no están disponibles en los quioscos. ¡Consulte sobre los números a los que se hace referencia en este artículo! Nuestro montaje se realizó en una matriz de contacto y se puede apreciar en la figura 5. No ofrecemos un "Iayout" de placa para nuestro lector, ya que este no es un montaje definitivo y su uso debe ser únicamente con el propósito de aprender la teoría pasada (uso del canal CCP - modo PWM - del .PIC).
En el programa "PIC_PWM_F628. ASM", que se puede obtener gratuitamente en el sitio web de la revista http://www.eletronicatotal.com.br en la sección "downloads", demostramos cómo se hizo la implementación de todos los registros descritos. El estudio del programa ayudará en la comprensión del funcionamiento dolor circuito y el uso del CCP del PIC's (se ha comentado todo el programa para facilitar su comprensión).
SUGERENCIAS DE USO
El lector podrá utilizar el CCP del PIC, en modo PWM, para controlar motores DC, resistencias utilizadas en calefacción y muchas otras cargas (resistivas o no). El control de "back ligth" desde un LCD también es totalmente posible (en la edición n° 101 demostramos el control de un display de cristal líquido con el mismo PIC). Un ejemplo de aplicación es el control de la intensidad de esta, vía “software”.
Sin embargo, el lector debe prestar atención a la corriente máxima suministrada por el pino de I/O del PIC, que es de alrededor de 20 mA como máximo. En este caso, el uso de "unidades". Además de permitir un mayor drenaje de corriente por parte de la carga del variador, el nuevo circuito también podrá trabajar con otras tensiones, según la carga a implementar. En la figura 6 tenemos algunos ejemplos.
Dónde obtener más información
El lector interesado en más información sobre los microcontroladores PIC puede realizar una búsqueda en Internet. Recomendamos comenzar con el sitio web del fabricante. En él puede encontrar "Data Books", "Application Notes" y muchas otras informaciones. La dirección es http://www.microchip.com.
Para aquellos que no hablan inglés, la lectura de artículos en revistas como este y muchos otros ya publicados en Electrónica Total y en otras y también la lectura de algunos libros puede ayudar mucho.
Conclusión
El uso de periféricos del microcontrolador puede ayudar al lector a desarrollar proyectos complejos con un mínimo esfuerzo en términos de "software". De esta forma, se ahorra tiempo y se aumenta la "precisión" final que implica un determinado proyecto. esperamos que estas información ayudará a nuestros lectores y que pasen a formar parte de su biblioteca de referencia sobre "microcontroladores". ¡Felices pruebas y hasta la próxima!
Semiconductores:
CI1 – PIC16F628A-I/P - microcontrolador
Microchip
D1 - LED común redondo
Resistores
R1 - 330 Ω (naranja, naranja, marrón)
R2, R3 - 10 KΩ (marrón, negro, naranja)
Capacitores
C1 - 100 nF - 0,1 µF - capacitor cerámico
Varios
S1, S2 - Llaves mini tipo “push but-tonos” NA
Matriz de contactos para montaje, hilos rígidos delgados para conexiones, fuente de energía 5 VDC regulados com 300 mA mínimos, etc.