domingo, 8 de enero de 2017

PWM avr I - Introducción

En un dispositivo digital, como lo es un microcontrolador  (MCU), todas las entradas y salidas tiene solo dos estados, prendido o apagado (0 ó 1). Por lo tanto se pueden hacer facilmente aplicaciones para prender y apagar un LED, prender y apagar algún otro dispositivo, transmitir 0 y/o 1. Pero estas aplicaciones no son las únicas que se pueden realizar, en algunos casos necesitaremos controlar el brillo de una lampara (o LED), hacer girar un motor, etc. Para estos ejemplos, con prender y apagar algo no es suficiente, se necesitan aplicar otra técnica y esta es llamada  PWM  o Modulación de Ancho de Pulso (Pulse Width Modulation).

Esta técnica es utilizada para generar señales analógicas mediante la utilización de un dispositivo digital ( como el MCU). En esta entrada les voy a explicar funciona el PWM, en un Atmega2560 (Arduino Mega).

En esta entrada voy a utilizar un Arduino Mega 2560, pero no utilizaré el lenguaje Arduino, sino que utilizaré el entorno eclipse, y programaré directamente en lenguaje C. Material interesante es el datasheet de avr.

PWM - Modulación de Ancho de Pulso

La mayoría de los dispositivos digitales generan dos tipos de salidas. Encendido ó HIGH que son 5 V, y apagado ó LOW que es representado con 0 V. Pero, ¿qué sucede si quisiéramos generar una salida de 2V o 3.2V? La solución es la utilización de la técnica de PWM. 

Normalmente, la señal de salida de un MCU tiene una forma cuadrada, que tiene algunas características a notar:
  • La señal se encuentra en un intervalo de tiempo en HIGH. (Ton)
  • La señal se encuentra en un intervalo de tiempo en LOW.  (Toff)
  • Cuando la señal se encuentra en HIGH la salida es de 5V.
  • Cuando la señal se encuentra en LOW la salida es de 0V.

Figura 1: Señal cuadrada de la salida normal de un MCU

Duty Cycle (ciclo de trabajo)

El ciclo de trabajo se define con la siguiente fórmula:

(Ton/Ttotal) * 100 = Duty Cycle

Esto es el porcentaje del tiempo que la señal se encuentra en HIGH. Como se puede observar en la Figura 1 el Ton = Toff  = Mitad del tiempo del periodo. Si la frecuencia de la salida (5V) es alta, entonces se obtendría  2.5V.

Por ejemplo si se quiere generar 1V como salida, se tendría que hacer un simple despeje de fórmulas y una regla de 3 simple,  se obtendría el ciclo de trabajo necesario para generar 1 Volt.

Si 5V -> 100% of Vcc
    1V -> x = 20%

Entonces el ciclo de trabajo es 20%.

Haciendo

(20/100)*1 = 0.2 -> Ton.

Otro ejemplo,  si se tiene un Duty cycle de 75% se tiene un 75% del Vcc de salida, es decir 3.75V.

En próximas entradas mostraré como generar una señal PWM con un AVR. 



No hay comentarios:

Publicar un comentario