Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mdulo PWM
El modo PWM (Pulse WidthModulalion) o MODUL.ACIN DE ANCHO DE PULSO, permite obtener en los pines CCPx una seal peridica en la que se puede modificar su ciclo de trabajo (Duty Cicle). Es decir, puede variarse el tiempo en el cual la seal est a nivel alto (Ton) frente al tiempo que est a nivel bajo (Toff); ver la figura a. De esta forma, la tensin media aplicada a la carga es proporcional al Ton, controlando, por ejemplo, la velocidad de motores, luminosidad de lmparas, etc.
Donde: PR2 = Valor del registro PR2 (entre 0 y 255). Fosc = Frecuencia del XTAL. Prescaler = Prescaler del Timer2 (1, 4 16). Se configura en el registro T2CON.
El Timer2 tiene un Postscaler, pero es una etapa posterior y no interviene directamente en el avance del Timer2.
Versin
2.0
Pgina 1 de 4
En la prctica es mucho ms habitual hablar de la frecuencia del PWM. Como sta es la inversa del periodo, de la frmula anterior surge la siguiente:
Ciclo de trabajo Duty cycle de la onda PWM El duty cycle es la cantidad de tiempo que en un periodo la salida PWM permanece en estado alto. Este tiempo queda determinado por el valor del registro CCPR1L. Mientras TMR2 sea menor que CCPR1L la salida PWM ser un 1 lgico. Apenas TMR2 alcance a CCPR1L, la salida ser 0. En caso de que este tope sea superior al periodo, la salida ya no conmutar a 0. En consecuencia, el dutycycle se controla variando el valor del registro CCPR1L. La frmula que da su valor en tiempo es:
Donde:
CCPR1L = Valor del registro CCPR1L (entre 0 y 255). Fosc = Frecuencia del XTAL. Prescaler = Prescaler del Timer2 (1, 4 16).
Tambin es mucho ms ilustrativo hablar del duty cycle en trminos de porcentajes. Un 0% significa que la salida es siempre bajo, 100% es un alto continuo, un 50% significa una onda cuadrada simtrica, y as. Para esto solo hay que dividir el dutycycle (en tiempo) entre el periodo y multiplicarlo por 100%. Realizando esta operacin con las frmulas presentadas anteriormente llegaremos a:
Esta frmula es fcil de interpretar: el numerador CCPR1L representa al dutycycle y el denominador PR2+1, al periodo. La siguiente figura indica que cada periodo se divide en PR2+1 tramos equitativos y que CCPR1L es la cantidad de tramos que estn en alto. Eso es una PWM.
Versin
2.0
Pgina 2 de 4
Ejemplo 1: Calcular el valor de PR2 que permita generar una frecuencia de PWM de 5Khz; utilizando un pre escalador en el Timer2 de 16 y una frecuencia del oscilador de 20Mhz Solucin:
5kHz =
La funcin el lenguaje C que permite configurar este valor en el timer2 es: setup_timer_2 (modo, periodo, postscale).
Los parmetros son los siguientes: Modo T2_DISABLED T2_DIV_BY_1 T2_DIV_BY_4 T2_DIV_BY_16 Periodo Es un entero entre 0 y 255 Post- escala Es un valor entre 1 y 16
Con el valor de PR2 se configura el Timer2 de la siguiente manera: setup_timer_2(T2_DIV_BY_16, 63, 1); Mdulo CCP en C El compilador C suministra una serie de funciones para el manejo del mdulo CCP. Configuracin del mdulo CCPx: - setup_ccpx (modo); modo hace referencia a los bits CCPxM3:CCPxM0 del registro CCPxCON, si se desea configurar el modulo como PWM se debe definir como sigue: setup_ccp1(CPP_PWM); Definicin del ciclo de trabajo para PWM: set_pwmx_ duty (valor);
valor: dato de 8 o 16 bits que determina el ciclo de trabajo. Este valor, junto con el valor del preescaler del TMR2, determina el valor del ciclo de trabajo. En la configuracin del TIMER2, el postcaler debe valer 1.
Este documento impreso se considera COPIA NO CONTROLADA
Versin
2.0
Pgina 3 de 4
Ejemplo2: calcular CCPR1L para ajustar el PWM en un 50%, con la frecuencia del ejercicio anterior
Tomado con fines educativos de: - www.mundomicros.com - Compilador C CCS y simulador PROTEUS para microcontroladores PIC. Eduardo Garca Breijo.Alfaomega- Marcombo. Desarrollado por: Andrey Julin Rentera Scarpetta
Versin
2.0
Pgina 4 de 4