Guia-PWM

7

Click here to load reader

description

Guia para programar PWM en una tarjeta AVR- aTMEL

Transcript of Guia-PWM

  • Sistemas con procesadores Prctica perifrico: Pulse width modulator (PWM)

    Prof. Martha Luca Cano Morales

    Introduccin

    Una seal PWM puede ser usada para generar seales anlogas, esto se logra usando como base un tren de

    pulsos digitales con un periodo constante (frecuencia fija). Para generar diferentes niveles de voltaje se vara el

    ciclo til, es decir que el ancho de pulso de la seal aumenta o disminuye; al promediar la seal digital sobre un

    periodo se tiene una seal anloga proporcional al ciclo til. Un ciclo til del 50% genera una seal anloga igual

    a la mitad del voltaje de alimentacin, mientras que un ciclo til del 75% genera una seal anloga igual al 75%

    del voltaje de alimentacin [1].

    Una seal PWM puede ser usada en varias aplicaciones, dos de ellas son el manejo de la intensidad de luz en

    LEDs o el manejo de velocidad en motores DC.

    Generar una seal PWM con la tarjeta Atmel XMEGA B1 Xplained

    En el microcontrolador Xmega128 B1 se genera una seal PWM usando un timer/counter tipo 0 en modo

    comparacin. En este modo el timer/counter usa un contador base para contar ciclos de reloj y 4 canales de

    comparacin (CCx) con los cuales compara el contador base. Cada canal de comparacin tiene un pin asociado

    en el cual se ver la seal PWM generada como producto de la comparacin. [3]

    Funcionamiento de la comparacin

    El periodo de la seal PWM es controlado por PER, mientras que los registros CCx controlan el ciclo til de la

    seal. El contador cuenta desde 0 hasta PER y luego reinicia en 0. El pinx se pone en 1 al inicio del conteo y baja

    a cero en el momento en el cual el conteo iguala el valor en el registro CCx correspondiente. [3] Ver figura 1.

    Figura 1. Ciclo til del 70%. tomado y adaptado de [3]

  • Sistemas con procesadores Prctica perifrico: Pulse width modulator (PWM)

    Prof. Martha Luca Cano Morales

    Configuracin para la generacin de la seal PWM

    Para el desarrollo de esta prctica se usa el timer/counter TE0. Para ver a seal generada en el pinx se debe

    asegurar los siguientes pasos:

    1. Configurar la direccin del pin asociado como salida. (registro PORTE.DIR)

    2. Seleccionar el modo Single Slope para la generacin de la seal (registro TCE0.CTRLB)

    3. Habilitar el canal CCx correspondiente (registro TCE0.CTRLB). Al habilitar el canal se asegura que la seal

    se ver en el pin correspondiente. El canal CCA est asociado al pin 0 del puerto, el canal B al pin 1, el

    canal C al pin 2 y el canal D al pin 3.

    4. Configurar el periodo de la seal de conteo base. (registro TCE0.PER para el periodo y TCE0.CTRLA para

    la preescalizacion)

    5. Configurar el ciclo til de la seal (registro TCE0.CCxBUF)

    Clculo del periodo y del ciclo til

    El periodo de la seal PWM se calcula teniendo en cuenta la frecuencia de reloj del microcontrolador, la pre-

    escalizacin del conteo y el valor mximo de conteo (registro TCE0.PER). La ecuacin 1 muestra la relacin entre

    estas variables.

    (Ec. 1)

    Para esta prctica se usa el reloj configurado por defecto, es decir el reloj interno de 2MHz. Las pre-

    escalizaciones disponibles son: 1, 2, 4, 8, 64, 256 y 1024. A partir de estos dos valores y de la frecuencia de seal

    deseada se calcula el valor de TCE0.PER

    Ejemplo. Se desea tener una seal PWM con frecuencia 500Hz. Se selecciona una preescalizacin de 1 y

    teniendo en cuenta que el reloj es de 2MHz, el valor de TCE0.PER es:

    El ciclo til de cada canal est definido por el valor en el registro TCE0.CCxBUF de acuerdo a la ecuacin 2.

    (EC. 2)

    Ejemplo. Se desea un ciclo til del 75% en el canal A para la seal de 500 Hz del ejemplo anterior, el valor de

    TCE0.CCABUF es:

  • Sistemas con procesadores Prctica perifrico: Pulse width modulator (PWM)

    Prof. Martha Luca Cano Morales

    Cdigo de configuracin de 3 seales PWM para controlar un LED RGB

    En la figura 2 se muestra el cdigo que configura 3 canales PWM en los pines 0, 1 y 2 del Puerto E. La frecuenia

    de la seal es de 500Hz y el ciclo til de cada canal es 75%, 50% y 25% para los canales A,B y C respectivamente.

    Lea el cdigo, identifique y entienda cada una de las instrucciones de acuerdo a lo explicado en el punto

    anterior.

    Figura 2

    Crculo cromtico RGB

    Las seales PWM generadas se usarn para controlar un LED RGB, el cual se compone de 3 leds, uno rojo, uno

    verde y uno azul. Estos tres colores corresponden a los colores primarios del espectro lumnico visible, a partir

    de los cuales se pueden obtener otros colores.

    La figura 3 muestra el crculo cromtico RGB en el cual se distribuyen de forma proporcional el rojo, el azul y el

    verde para formar colores secundarios y colores.

  • Sistemas con procesadores Prctica perifrico: Pulse width modulator (PWM)

    Prof. Martha Luca Cano Morales

    Figura 3. Tomado de http://timvandevall.com/rgb-color-wheel-hex-values-printable-blank-color-wheel-templates/

    Los colores secundarios y terciarios son el resultado de sumar los tres colores primarios con una intensidad

    lumnica especfica para cada color. En el crculo cromtico RGB esta intensidad lumnica se divide en 255

    niveles, donde 0 es ninguna intensidad lumnica (color apagado) y 255 la mxima intensidad lumnica.

    Relacionando estos niveles con la seal PWM, 0 corresponde a un ciclo til del 0% y 255 a un ciclo til del 100%.

    Por ejemplo si se desea obtener el color Cyan {RGB (0,255,255)} , el led rojo debe tener un ciclo til del 0%, el

    led verde de 100% y el led azul de 100%. Por otro lado si se desea obtener el color naranja {RGB(255,127,0)} , el

    led rojo debe tener un ciclo til del 100%, el led verde de 50% y el led azul de 0%.

    El crculo cromtico se divide en 12 secciones. Si tomamos nicamente los colores primarios y secundarios (Red,

    Yellow, Green, Cyan, Blue y Magenta) tenemos 6 secciones. Observe que en cada una de estas secciones slo

    vara la intensidad de un color a la vez:

    Entre Red y Yellow aumenta la intensidad del led verde de 0 a 255.

    Entre Yellow y Green disminuye la intensidad del led rojo de 255 a 0.

    Entre Green y Cyan aumenta la intensidad del led azul de 0 a 255.

    Entre Cyan y Blue disminuye la intensidad el led verde de 255 a 0.

    Entre Blue y Magenta aumenta la intensidad del led rojo de 0 a 255.

    Entre Magenta y Red disminuye la intensidad del led azul de 255 a 0.

  • Sistemas con procesadores Prctica perifrico: Pulse width modulator (PWM)

    Prof. Martha Luca Cano Morales

    Montaje del circuito de prueba

    El voltaje de encendido de los LEDs vara de acuerdo a su color. Los valores tpicos de encendido de un LED RGB

    en encapsulado de 5mm transparente son: 2 voltios para el rojo, y 3.4 voltios para el verde y el azul [5].

    El microcontrolador de la tarjeta Atmel Xmega B1 Xplained se encuentra alimentado a 3.3 voltios, por lo tanto

    las seales PWM generadas tendrn una amplitud mxima de 3.3 voltios, la cual no cumple con el voltaje de

    encendido del verde y del azul; por lo tanto se debe usar un transistor el cual permite usar una fuente de

    alimentacin de 5 voltios para encender el LED a la vez que se usa la seal PWM generada como control de

    encendido y apagado. La figura 4 muestra el circuito que se debe implementar para controlar un LED RGB de

    nodo comn.

    Figura 4

  • Sistemas con procesadores Prctica perifrico: Pulse width modulator (PWM)

    Prof. Martha Luca Cano Morales

    El transistor 2n2222 funciona como un interruptor, cuando en su base (B) hay un voltaje de 3.3v deja pasar

    corriente entre su colector (C) y su emisor (E) y el color correspondiente se enciende (interruptor cerrado).

    Cuando en su base hay 0v no deja pasar corriente y por tanto el color correspondiente se apaga (interruptor

    abierto).

    El voltaje de alimentacin de 5 voltios se toma de la seal V_BUS disponible en el Header J3.

    Para calcular las resistencias que van en serie con cada color se usa la ecuacin 3.

    (Ec. 3)

    Donde voltaje fuente es 5v, voltaje color es 2 para el rojo y 3.4 para el verde y el azul, y corriente LED es 10 mA.

    Nota: Esta misma configuracin de transistor 2n2222 se puede usar para controlar un motor de 3.3 voltios o de

    5v (respectivamente el voltaje de fuente ser 3.3v o 5v). Sin embargo se debe tener en cuenta no exceder la

    capacidad de corriente que puede entregar un puerto USB 1.0 (500 mA).

    Desarrollo de la prctica

    1. Observacin de la seal digital con osciloscopio (opcional)

    Cree un nuevo proyecto GCC C Executable Project, escriba el cdigo de la figura 2 , compile y programe la

    tarjeta.

    Con un osciloscopio observe la seal en los pines 0,1 y 2 del puerto E. La seal tendr una amplitud mxima de

    3.3 voltios y una frecuencia de 500 Hz, por lo tanto debe configurar los controles de defleccin horizontal y

    vertical del osciloscopio para ver correctamente cada seal.

    Verifique que el ancho de pulso de cada canal corresponde al configurado.

    Vare los valores de los registros TCE0.CCxBUF para cambiar los ciclos tiles, compile y programe la tarjeta.

    Observe la variacin en el osciloscopio (use los ciclos tiles que desee).

    2. Observacin de la seal digital usando LEDs (reemplaza la observacin con osciloscopio)

    Calcule el valor de preescalizacin y de TCE0.PER para que las seales PWM generadas tengan una frecuencia de

    2Hz (ver ecuacin 1).

    De acuerdo al clculo anterior, calcule el valor de TCE0.CCABUF, TCE0.CCBBUF y TCE0.CCCBUF para tener un

    ciclo til del 75%, 50% y 25% respectivamente (ver ecuacin 2).

    Cree un nuevo proyecto GCC C Executable Project, escriba el cdigo de la figura 2 cambiando los valores

    calculados, compile y programe la tarjeta.

    Monte el circuito de la figura 4, ponga una hoja blanca a unos centmetros del LED RGB y observe que cada color

    se apaga en momentos diferentes. Esto muestra las diferencias en el ciclo til.

  • Sistemas con procesadores Prctica perifrico: Pulse width modulator (PWM)

    Prof. Martha Luca Cano Morales

    Vare los valores de los registros TCE0.CCxBUF para cambiar los ciclos tiles, compile y programe la tarjeta.

    Observe la variacin en el apagado de cada color (use los ciclos tiles que desee).

    3. Regulador de intensidad en un LED RGB

    Cambie los valores de preescalizacin y periodo a los valores originales de la figura 2.

    Monte el circuito de la figura 4, ponga una hoja blanca a unos centmetros del LED RGB.

    Variando los ciclos tiles de cada color (registros CCxBUF), obtenga los colores secundarios y terciarios del

    crculo cromtico.

    Ejercicio para desarrollar de manera individual

    Desarrolle un cdigo que recorra el crculo cromtico de forma gradual. Para esto debe ir variando

    progresivamente el ciclo til de cada color segn lo explicado en la seccin Crculo Cromtico RGB, esta

    variacin se debe hacer de forma lenta para que se pueda apreciar el recorrido.

    Fuentes bibliogrficas

    [1] Application note AVR131: Using the AVRs High-speed PWM. www.atmel.com

    [2] Manual: 8-bit Atmel XMEGA B Microcontroller. www.atmel.com

    [3] Manual: ATxmega128B1 / ATxmega64B1. www.atmel.com

    [4] Atmel AVR32852: Building Custom Application using ASF Example Projects. www.atmel.com

    [5] Datasheet LED - RGB Clear Common Anode - SparkFun Electronics