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.

 

Nota: El artículo es de una Electrónica Total de 2004

 

 

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.

 

Figura 1 - Control lineal.
Figura 1 - Control lineal.

 

 

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.

 

Figura 2 - Control PWM con llave.
Figura 2 - Control PWM con llave.

 

 

Obs.: Lo anterior es válido considerando una sola llave en el control. Al utilizar un transistor bipolar como llave, por ejemplo, tendremos una disipación en el mismo debido a la caída de tensión VCE (caída de tensión entre colector y emisor). Sin embargo, con fines didácticos, consideraremos una llave en el control y, por tanto, que no exista esta caída de tensión, recibiendo la carga toda la energía en Vcc (Vm=Vcc).

 

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.

 

Figura 3 - Tiempos T1 y T2 para control PWM.
Figura 3 - Tiempos T1 y T2 para control PWM.

 

 

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.

 

Obs.: Muchos ingenieros y técnicos suelen llamar al período "T1" "Duty Cicle". Estamos de acuerdo en que nuestro lector debe acostumbrarse a este término y lo usaremos de ahora en adelante.

 

 

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.

 

Obs.: CCPR1L: CCP1CON <CCP1x : CCP1Y> = valor de 10 bits insertados para resolución.
Obs.: CCPR1L: CCP1CON = valor de 10 bits insertados para resolución. | Clique na imagem para ampliar |

 

 

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)

 


| Clique na imagem para ampliar |

 

 

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").

 

Figura 4 - Circuito eléctrico.
Figura 4 - Circuito eléctrico. | Clique na imagem para ampliar |

 

 

 

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).

 

Figura 5 - Montaje en matriz de contacto.
Figura 5 - Montaje en matriz de contacto. | Clique na imagem para ampliar |

 

 

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.

 

Figura 6 - Tipos de drivers.
Figura 6 - Tipos de drivers.

 

 

 

 

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.

 

Buscador de Datasheets



N° de Componente