miércoles, 24 de octubre de 2007

Modulo PWM del PIC 16F877A

El Modulo PWM del PIC 16F877 tiene una resolucion maxima de 10 bit y su salida se toma del pin RC2, por lo cual debe estar configurado como salida en el registro Tris C.


Periodo PWM

El Periodo del Modulo PWM es configurado dando un valor al registro PR2. Este periodo puede ser calculado usando la siguiete formula:

PWM Period = [(PR2) + 1] • 4 • TOSC • Prescale del Timer 2

Como ya es sabido la frecuencia esta determinada por 1/Periodo PWM

Cuando el valor del Timer 2 alcanza el valor de PR2, los siguientes eventos ocurren en el siguiente ciclo de tiempo:

- TMR2 es limpiado
- El pin CCP1 es puesto a 1
- El Periodo de trabajo del PWM es cambiado de CCPR1H a CCPR1L


Ciclo de trabajo del PWM

El ciclo de trabajo del PWM es determinado escribiendo al registro CCPR1L y CCP1CON<5:4> (10 bits de resolucion).

El ciclo de trabajo se obtiene usando la siguiente formula:

Tiempo de Trabajo PWM = (CCPR1L:CCP1CON<5:4>) •TOSC • (TMR2 Prescale Value)

Para modificar el ciclo de trabajo, en cualquier momento se puede escribir a CCPR1L y CCP1CON<5:4>, pero estos valores no seran tomados en consideracion hasta que el Timer alcance al PR2 y reinicie su operacion tomando en cuenta los nuevos valores.

Tiempo de trabajo = % Ciclo de trabajo / Fpwm

Para calcular la maxima resolucion del PWM a determinada frecuencia usamos la siguiente formula:



Formula para resolucion del modulo PWM



CONFIGURACION DEL PWM:

Pasos para la configuracion del Modulo PWM del PIC 16F877A

1. Configurar el Periodo dando un valor al registro PR2
2. Configurar el Ciclo de Trabajo escribiendo en: CCPR1L:CCP1CON<5:4>
3. Limpiar el Tris C, 2 para asignar la salida del modulo (CCP1)
4. Asignar el valor del Prescale del Timer 2 (T2CON)
5. Configurar el modulo CCP1 para operacion PWM.


Ejemplo de frecuencias y su resolucion


Para mas calculos del modulo PWM visita esta pagina:

http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html


.

3 comentarios:

Unknown dijo...

la resolucion en el datasheet del pic16f877A esta mala!!! La formula es Res=Log(fOSC/fPWM*PsTMR2)/Log(2) bits

Patri, Delfi y Sergio dijo...

Ivan: estoy leyendo tu blog, el cual me parece muy bueno. Quería hacerte una observación, siempre con ánimo de colaborar contigo. El en párrafo subtitulado PERIODO PWM, figuran tres eventos que ocurren cuando el Timer 2 alcanza el valor de PR2. Creo que el tercer ítem es al revés, es decir, el periodo de trabajo del pwm es cambiado de CCPR1L a CCPR1H, que es cuando comienza el ciclo de trabajo. Desde ya, muchas gracias por hacer este tipo de blog informativo, creo que es la forma que tenemos los electrónicos de ayudarnos mutuamente. Abrazo cordial desde Argentina.

David dijo...

Tengo una Canija duda sobre el PWM: si el registro PR2 es de 8 bits, mientras que paravel ciclo de trabajo se pueden emplear hasta 10 bits ¿que pasa cuando el ciclo de trabajo es mas grande que el ciclo del PWM?

Gracias

Google