Sunteți pe pagina 1din 4

MODO PWM

MODULACIN DE ANCHO DE PULSO - Pulse With Modulation


El objetivo es obtener a travs de alguna de las patillas CCPx una forma de onda como
la mostrada en la figura donde tanto el periodo como el ciclo de trabajo (Duty cycle)
puede variar con el objetivo, por ejemplo, de regular la velocidad de un motor, la
luminosidad de una bombilla, etc.

Consista en poner a 1 un cierto pin mientras estbamos haciendo una cierta tarea.
Luego, nos bastaba con medir el voltaje medio (con un voltmetro) en dicho pin. Dicho
voltaje (dividido por los 5V de alimentacin) nos daba el % del tiempo que el pin estaba
alto.
La modulacin PWM consiste precisamente en eso. El mdulo PWM del micro genera
una onda cuadrada con una frecuencia dada (tpicamente bastante alta, por ejemplo 10
KHz).

PERODO DE PWM

El perodo de pulso de salida (T) se determina por el registro PR2 del temporizador
Timer2. El perodo de PWM se puede calcular por la siguiente ecuacin:

Perodo PWM = (PR2 +1) * 4Tosc * Valor de pre-escala del Timer2

Si el perodo de PWM (T) es conocido, es fcil determinar la frecuencia de seal F,


porque estos dos valores estn relacionados por la ecuacin F=1/T.

CICLO DE TRABAJO DE PWM

El ciclo de trabajo de PWM se especifica al utilizar en total 10 bits: los ocho bits ms
significativos del registro CCPR1L y los dos bits menos significativos adicionales del
registro CCP1CON (DC1B1 y DC1B0). El resultado es un nmero de 10 bits dado por
la siguiente frmula:

Ancho de pulsos = (CCPR1L,DC1B1,DC1B0) * Tosc * Valor de pre-escala del


Timer2

La siguiente tabla muestra cmo generar las seales PWM de diferentes frecuencias
cuando el microcontrolador utiliza un cristal de cuarzo de 20 MHz (Tosc=50nS).
FRECUENCIA 4.8 19.5
1.22 78.12 156.3 208.3
[KHZ] 8 3

Pre-escalador del
16 4 1 1 1 1
TMR2
Registro PR2 FFh FFh FFh 3Fh 1Fh 17h

Notas adicionales:

El pin de salida se va a poner a 1 constantemente, si por error el ancho de pulso


generado es ms largo que el perodo de PWM.
En esta aplicacin, no se puede utilizar el post-escalador del temporizador
Timer2 para generar perodos de PWM largos.

RESOLUCIN DE PWM

Una seal PWM no es nada ms que una secuencia de pulsos que varan su ciclo de
trabajo. Para una frecuencia especfica (nmero de pulsos por segundo), hay un nmero
limitado de combinaciones de ciclos de trabajo.

Este nmero representa una resolucin medida en bits. Por ejemplo, si una resolucin es
de 10 bits estarn disponibles 1024 ciclos de trabajo discretos; si una resolucin es de 8
bits estarn disponibles 256 ciclos de trabajo disretos etc. En este microcontrolador la
resolucin es determinada por el registro PR2. El mximo valor se obtiene al usar el
nmero FFh.

Frecuencias y resoluciones de PWM (Fosc = 20MHz):

FRECUE
1.22K 4.88K 19.53K 78.12K 156.3K 208.3K
NCIA DE
HZ HZ HZ HZ HZ HZ
PWM

Pre-escala
del
16 4 1 1 1 1
temporizad
or
Valor del
FFh FFh FFh 3Fh 1Fh 17h
PR2
Resolucin
10 10 10 8 7 6
mxima

Frecuencias y resoluciones de PWM (Fosc = 8MHz):

FRECUEN 1.22K 4.90K 19.61K 76.92K 153.85K 200.0K


CIA DEL HZ HZ HZ HZ HZ HZ
PWM

Pre-escala
del
16 4 1 1 1 1
temporizado
r
Valor del
65h 65h 65h 19h 0Ch 09h
PR2
Resolucin
8 8 8 6 5 5
mxima

Resolucin=(log(Fosc/(FPWM*prescalerTMR2)/log2) bits
Donde Fosc es la frecuencia del oscilador o cristal utilizado, F PWM es la frecuencia de la
seal PWM que se quiera obtener, la que viene a ser la inversa de periodo T PWM de la
seal PWM.
Mediante la resolucin se obtiene con cuantos bits se representa en forma binaria el
valor del ancho de pulso para una determinad F PWM elegida, siendo el mximo valor
1023 que es 210 ya que la resolucin es de 10 bits como mximo
La Figura anterior muestra el diagrama de bloques del mdulo CCP1 puesto en el modo
PWM. Para generar un pulso de forma arbitraria en el pin de salida, es necesario ajustar
el perodo de pulsos (frecuencia) y la duracin de pulsos.

S-ar putea să vă placă și