8 Canales de PWM con un 16F628AELECTRÓNICA etiquetas: tutoriales http://www.neoteo.com/8-canales-de-pwm-con-un-16f628a/ De manera muy inteligente. y sin dejar de trabajar con niveles lógicos. veremos los métodos más frecuentes para aprovechar no sólo una salida PWM. variar la velocidad de un motor y otras aplicaciones que requerían una urgente salida analógica. vamos a proceder a variar el ancho del semiciclo activo. marcó un avance significativo por sobre el 16F84A en incontables aspectos. mientras que necesitabas tener la posibilidad de atenuar la iluminación de un LED. Con el trabajo de hoy veremos de manera muy sencilla y didáctica. comprimiéndolo o expandiéndolo para así lograr transportar dentro de la señal una información variable que utilizaremos para diversas aplicaciones según la necesidad del desarrollo que emprendamos. Con su aparición en el mercado. Hasta aquí todos habían sido 1’s y 0’s. el microcontrolador que le sucede en complejidad es el también popular16F628A. sinoocho a partir de un microcontrolador sencillo y muy económico. cuando nos decidimos a trabajar con estos dispositivos.Luego del mítico 16F84A. La posibilidad de incorporar en forma nativa un generador de señal PWM simplificó mucho los trabajos al momento de “emular” una salida analógica desde el chip. uno de ellos es la incorporación de un módulo CCP (Capture/Compare/PWM). algunas posibilidades que existen dentro del mundo de los microcontroladores que te ayudarán a comprender muchos conceptos que son importantes en la fase inicial. . Es decir. Por supuesto que lo primero que debemos aclarar y definir es el concepto de PWM. los LEDs sólo encendían o apagaban y los motores funcionaban o no. partiendo de una señal de amplitud y frecuencia fija. ¿Qué es el PWM?Pulse-Width Modulation o lo que en castellano significa modulación por ancho de pulsos. por lo que si tenemos allí conectado un LED. incrementará el valor promedio de la tensiónaplicada en el dispositivo conectado (referencias de color verde). el mismo lucirá prácticamente apagado. podemos aplicar una variación del tiempo de duración de la mencionada salida en estado alto (referencias de color rojo).En la gráfica vemos claramente que. Por el contrario. observaremos una salida de tensión promedio casi nula. si el ancho de pulsos que le imponemos a nuestra señal es el máximo posible. el mismo LED brillará en toda su intensidad. manteniendo una frecuencia constante (representada por el Período) de la señal de salida de cualquiera de los puertos de un microcontrolador. si la variación es en aumento. De esta manera. . En el caso de la aplicación de un ancho de pulso mínimo. se encuentra la instrucción POT. un LDR.Con este artilugio electrónico estaremos acercándonos mucho a una salida analógica con la que podremos variar velocidades de motores. Esta sencilla instrucción será capaz de leer un potenciómetro. una resistencia variable del tipo preset. . donde desbordará y recomenzará el ciclo de cuenta. un termistor. un PTC y cualquier otra resistencia que no supere los 50K. podemos jugar con valores que irán desde 0 hasta 255. Habilitando el overflow del TMR0 (T0IE = 1) y manejando su incremento con una variable BYTE. ya estaremos listos para organizar y preparar la variable DUTY0 con valores comprendidos entre 0 y 255. Entre las más sencillas y prácticas para experimentar dentro de la mayoría de los programas que manejan el lenguaje BASIC. 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. intensidad de brillo de un conjunto de LEDs y hasta las aplicaciones más interesantes y divertidas que se nos ocurran. Una vez que la interrupción (PWM_INT) esté preparada para acumular los valores que comenzarán a aparecer en la variable DUTY0 para finalmente entregar el resultado en el puerto B (sección del programa indicada en rojo difuso). La idea de funcionamiento inicial es muy simple y se sustenta en el funcionamiento del Timer0 del microcontrolador. un NTC. al ubicar los 8 LEDs en forma de círculo. De esta forma. a cada vuelta del lazo. completaremos la conexión de todo el puerto B con 8 LEDs indicadores a la salida e implementaremos un recorrido secuencial que. estará informando al PIC si la resistencia ha variado o no. el funcionamiento es muy claro y sencillo y nos invita a profundizar en la experimentación. como en el caso anterior. el LED que estamos utilizando para el ensayo variará entre máximos y mínimos y a ese comportamiento podemos darle mayor o menor velocidad según el ajuste del retardo que se ubica entre cada lazo FOR – NEXT. Esto se conectará al pin 0 del puerto B y. tiempo que será directamente proporcional a la resistencia que adopte P1. En el final del ensayo con el hardware. Observarás en el código fuente la implementación de un comando que no habíamos utilizado hasta ahora y es el comando Complemento “ ~ ” . Mediante la instrucción POT. el microcontrolador mide el tiempo de descarga del capacitor. Pero es bueno dejarlo en la etapa inicial a la velocidad que te lo entregamos para poder apreciar el efecto “cuasi-analógico” que ofrecen los LEDs. nos permitirá observar un agradable efecto que. En nuestro caso. la instrucción llevará un límite de 255 para cargar al máximo la variableDUTY0. podemos variar en velocidad para darle un poco de “vértigo” al movimiento. 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.La aplicación del circuito es muy sencilla y sólo se necesita un capacitor en serie con la resistencia variable. La sintaxis del ejemplo mostrado en la gráfica devolverá un valor máximo de 100 y lo cargará en la variable VAR1. Veremos el funcionamiento del sistema de la siguiente forma: Como habrás apreciado en el video. Al16F628A debemos alimentarlo con una fuente de alimentación de 5Volts y aplicarle en su conexión de oscilador un cristal de cuarzo de 4Mhz. dinámico y con luces en movimiento. Luego. También puedes utilizar este sistema de control PWM para cargas importantes de varios amperes. no podrás evitar ganar el mote de “friki del año”. puedes optar por una construcción a partir de una batería de 9Voltios y un 7805. sacando el ejemplo del popular artículo del POV. Si lo que deseas es construir un gadget llamativo. se enciende de golpe y a pleno DUTY6 siguiendo así toda la vuelta. cuando se apaga totalmente DUTY5. Seguramente. observarás que.Aquí necesitaremos 8 acumuladores y 8 variables DUTY. DUTY6 se irá incrementando al mismo ritmo desde 1 a 255. que puedes eliminar para notar la diferencia. En cambio. Observa el video: Por supuesto que el circuito es tan sencillo y simple que no merece aclaraciones especiales. Esto es muy interesante de ver y ensayar porque permite una transición suave desde un LED al contiguo. de 1010101010 es 0101010101. A toda esta aplicación que hemos visto se le puede agregar conexión RS232 al ordenador para variar parámetros como velocidad. una resistencia de 4K7 para el MCLR por pin 4. más ocho resistencias de 220 ohms y 8 LEDs del color que gustes y quedarás como un rey regalando a tus chicas un presente navideño tan original. la función del “complemento” será muy sencilla de entender y muy útil. de esta forma. pero sin duda alguna muchos te pedirán una demostración de lo que es capaz de hacer tu maravilla. Si no se utiliza esta línea de código. y para dar un ejemplo. Como todos sabemos. donde puedas manejar motores y/o luminarias incandescentes de varias decenas de watts. selección de salidas activadas y muchas aplicaciones más. el complemento de 1 es 0. de 11 es 00. mientras DUTY5 vaya decrementando su valor desde 255 hasta 1. y así con cualquier número binario. mientras uno se apaga el otro comienza a encenderse y la transición es más suave y agradable. Por lo tanto. Para esto es importante que utilices un circuito . efectos de transición de encendido. La primera es que a medida que la frecuencia aumenta. Recordemos que los humanos pueden escuchar frecuencias hasta los 20kHZ. sin embargo. 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. todas las salidas pueden mantener una probable sincronía requerida por la aplicación. 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 regulación lineal de velocidad. Para eliminar este fenómeno. En los circuitos. es una buena idea utilizar el mínimo de frecuencia posible con la finalidad de reducir pérdidas. la mecánica de los motores va a atenuar el ruido en virtud de su imposibilidad de resonar a tan altas frecuencias. también lo hace la demanda de corriente debido a pérdidas propias de un circuito conmutado. En condiciones de bajo consumo. Además. la capacitancia y/o inductancia que intervienen son factores que deben ser considerados para la correcta elección de la frecuencia del PWM. La segunda es que la capacitancia e inductancia de la carga tienden a limitar la respuesta en frecuencia del circuito. Es muy importante que conozcas las posibilidades que te brinda este artículo de poder obtener hasta 8 salidas PWM con un ajuste individual para cada salida en lo que refiere a su factor de trabajo (DutyCycle). puede ayudarte a resolver muchos problemas de control. Un motor va a tener una respuesta más rápida a cambio de un "DutyCycle" a frecuencias mayores. hay dos reglas de oro en lo que respecta a la frecuencia del PWM. pero del modo en que te lo hemos presentado. aplicado apropiadamente. . la frecuencia de PWM depende de la aplicación.optimizado con un MOSFETde potencia que pueda manejar una carga de varios amperes. Un ejemplo que te recomendamos sería un circuito como el siguiente: En general. PWM se puede lograr hasta con 555. 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. hecho que con los 555 eso sería impensado. Sin embargo. hay que utilizar este tipo de motores a frecuencias mayores que los 4kHz. Esta aplicación va mucho más allá que un simple juego de luces en forma de círculo o un emulador del efecto de Knight Rider. Otra consideración que no debes dejar de tener en cuenta es el ruido provocado por el motor. sino que estás ante un verdadero sistema de control que. Podemos afirmar en pocas palabras que el circuito propuesto hoy es un verdadero expansor de salidas PWM para cualquier sistema. un PIC que traiga más de dos módulos CCP. siempre tendrás la posibilidad de hacer trabajar a este 16F628A (que controlará tus LEDs RGB o tus motores) como esclavo de otros procesadores más específicos abocados a cualquier función especial. además. Disfrútalo. Download:Los archivos fuente de los ejemplos de este artículo . puede costar muchos euros. Es decir. pero nunca alcanzarías a sumar ocho unidades a un costo tan irrisorio como el circuito propuesto. mientras que tú podrás controlar todo un mecanismo complejo con muy poco gasto y.Por otra parte. también puedes utilizar el/los módulos CCP que traen en forma nativa los microcontroladores.