Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CCP PIC modo PWM, esto es modulación por ancho de pulso, en esta forma de
trabajo del módulo CCPx donde x puede ser 1 o 2 dependiendo del módulo CCP
utilizado, lo que se logra con el uso del módulo CCPx en modo PWM es obtener por
el pin CCPx una señal periódica, este pin debe ser configurado como una salida
digital mediante el correspondiente TRISC, con parte de la señal obtenida en alto
y parte de la señal en bajo, lo interesante de este modo de trabajo del módulo CCP
PIC modo PWM es que de la señal periódica obtenida por el pin CCPx se puede
modificar el tiempo que la señal estará en alto.
Una señal PWM es aquella en la que su periodo representado por T se tiene que
mantener constante, dentro de este periodo hay momentos en que la señal estará
en alto o a uno y momentos en que la señal estará en bajo o a 0, en la señal
PWM el tiempo que la señal está en alto Talto se le conoce como ancho de
pulso y si está expresado en porcentaje como ciclo de trabajo, este tiempo
que la señal esta en alto se puede modificar, de esta manera si la señal PWM se
conecta a una carga, sobre esta dependiendo del Talto le llegará una tensión
media, cuando mayor sea Talto mas será la tensión media que le llegue a la carga
siendo la mayor cuando Talto ocupa todo el periodo de la señal, y la menor
cuando el Talto sea 0, con lo que la tensión media también será 0, por ejemplo si
la carga es un motor de continua al variar la tensión media que le llegará mediante
la señal PWM, se puede variar la velocidad de giro de ese motor, o si la carga es
una bombilla se puede variar su brillo variando la tensión media que le llegue
mediante la señal PWM.
El ciclo de trabajo cuando se utiliza el CCP PIC modo PWM es el ancho de pulso
expresado en porcentaje se obtienen mediante la siguiente relación:
Ciclo de trabajo=(Talto/T)*100%
Para el PIC 16F877A que será para el cual se comente el módulo CCP PIC modo
PWM el ancho de pulso o ciclo de trabajo puede tener una como máximo una
resolución de salida de hasta 10 bits, lo que dependerá del periodo de la señal
PWM generada, esto quiere decir que el valor que representa el ancho de pulso
estará representado por un número binario que como máximo tendrá 10 bits.
Para la parte de la señal PWM obtenida por el pin CCPx en alto o a 1, que
es el ciclo de trabajo o el ancho de pulso y por lo tanto la parte variable de la señal
PWM, de los 10 bits que puede tener como máximo, los 8 bits de mas peso se
encuentran en el registro CCPRxL y los 2 bits de menos peso en los bits 5 y 4 del
registro CCPxCON , mientras que para el periodo de la señal PWM y por lo tanto la
parte de la señal que no cambiará será el valor almacenado en el registro PR2, el
cual es es uno de los registros utilizados con el timer2, por lo que para el uso del
timer2 con el módulo CCP PIC modo PWM es necesario conocer los registros TMR2
y su registro compañero PR2.
Al utilizar el
módulo CCP PIC modo PWM, cuando el valor del registro TMR2 se hace igual al
valor del registro PR2 ocurre lo siguiente:
Entonces al utilizar el CCP PIC modo PWM para obtener una salida PWM por el pin
CCPx se tienen que cumplir 2 cosas establecer el periodo de la señal mediante un
valor cargado en el registro PR2 el cual no tendrá que ser cambiado y establecer
un ciclo de trabajo mediante un valor cargado en el registro CCPRxL el cual si
puede ser cambiado para obtener en el pin CCPx tensiones medias variables para
el control de diverso dispositivos.
TPWM = (PR2+1)*(4/Fosc)*prescalerTMR2
Donde PR2 es el valor cargado en el registro PR2, Fosc es la frecuencia del reloj o
cristal utilizado para el funcionamiento del PIC y prescalerTMR2 es alguno de los
posibles prescaler del TMR2 que se pueden utilizar.
El valor máximo que puede tomar el registro PR2 es 255 ya que es de 8 bits, y el
prescaler máximo es de 16, luego el máximo valor para el T PWMdependerá del
oscilador o cristal utilizado, por lo que si se usa un cristal de 4Mhz el valor máximo
para el periodo del TPWM será:
TPWMmax=(255+1)*(4/4Mhz)*16=4,096ms
Por lo que el máximo periodo de la señal PWM obtenida con el módulo CCP PIC
modo PWM cuando se utiliza un cristal o un oscilador de 4Mhz será de 4,096ms;
por supuesto que esto puede variar si se utilizan cristales de mayor frecuencia de
oscilación.
Cuando el ancho de pulso toma su máximo valor, este tiene que ser igual al
periodo de la señal PWM, cuando se escoge un periodo para la señal PWM,
generada con el módulo CCP PIC modo PWM, hay que calcular cuantos bits se
necesitan para representar en forma binaria ese periodo, lo cual es justamente la
resolución del ancho de pulso y no tiene que ser mayor a 10 bits.
Talto=(CCPRxL:CCPxCON<5:4>)*(1/Fosc)*prescalerTMR2 si se realizan
algunos cambios en esta fórmula para cuando el Talto o el ancho de pulso sea
máximo se tendrá:
Resolución=(log(Fosc/(FPWM*prescalerTMR2)/log2) bits
Primero se calculará la resolución para ver si se cuentan con suficientes bits para
todo el ancho de pulso o ciclo de trabajo de la señal que se quiere obtener con el
módulo CCP PIC modo PWM, la resolución no tiene que tener mas de 10 bits, si en
el cálculo salen mas de 10 bits hay que elegir otra frecuencia para la señal PWM,
o un oscilador o cristal con una frecuencia diferente de tal forma que la resolución
no sea mayor a los 10 bits, también hay que elegir el prescaler que se utilizará con
el timer2 para obtener la FPWM buscada, por ejemplo si se elige un prescaler de 16
en este caso para la resolución se tendrá:
Lo que es menor a los 10bits máximos, eso indica que es posible obtener una
FPWM de 4Khz utilizando un cristal de 4Mhz, ademas el valor cargado
en CCPRxL:CCPxCON<5:4> no tiene que ser mayor a 2 5,9658 = 62,5 para obtener el
máximo ancho de pulso para la F PWM de 4Khz, luego el máximo valor cargado en
CCPRxL:CCPxCON<5:4> para que la FPWM sea de 4Khz tiene que ser a lo mucho 63,
de lo contrario la señal obtenida en el pin CCPx utilizado mediante el módulo CCP
PIC modo PWM no será de los 4khz que se quieren.
Los bits 7 y 6 de este registro no se utilizan por lo que se les pone a 0.
Los bits 5 y 4 en el uso del módulo CCP PIC modo PWM, estos bits son los 2 bits
menos significativos del ciclo de trabajo del módulo CCP PIC modo PWM el cual es
de 10 bits, los 8 bits mas significativos se encuentran en el registro CCPRxL
Los bits 3, 2, 1 y 0 son los que se utilizarán para elegir el modo de trabajo del
módulo CCP, si estos 4 bits se ponen a 0 el módulo CCP estará deshabilitado; para
el uso del módulo CCP PIC modo PWM los valores asignados a estos pines serán
como se indican en la siguiente tabla.
Luego mediante la fórmula para el cálculo del periodo se despeja el valor a cargar
en el registro PR2 para obtener el periodo de 0,250ms, la fórmula es la siguiente:
TPWM = (PR2+1)*(4/Fosc)*prescalerTMR2
Resolución=(log(Fosc/(FPWM*prescalerTMR2)/log2) bits
El código preparado para la utilización del módulo CCP PIC modo PWM en el
ejemplo, permitirá obtener una señal PWM con un periodo muy próximo a los
250us que se ha buscado, esta señal se obtendrá por el pin CCP2 el que tiene que
ser configurado como salida, la señal se obtendrá con un ciclo de trabajo del 50%,
en cada línea de código esta comentado el porque de esa línea de código en el
XC8.
La siguiente es la imagen del circuito simulado, se puede ver que el periodo es
poco mas de 250us, lo que ocurre porque la carga del registro PR2 no puede
ser PR2=14,625 ya que tiene que ser un valor entero cercano y se eligio 15, como
se puede ver en el código, ademas se obtiene un ciclo de trabajo del 50% para la
señal PWM, que es lo que se quiere con esta parte del ejemplo.