Está en la página 1de 5

funciones escriben los 10 bits de value al dispositivo PWM para establecer el

ciclo de trabajo. Se puede usar un valor de 8 bits si no son necesarios los bits menos
significativos.
ejemplo:
SET_PWM1_DUTY(CCPR1L:CCP1CON);
esto equivale al ciclo de trabajo del PWM
ejemplo completo:
cristal del pic 4MHz, Preescaler 1:1, ciclo de trabajo del PWM 50% y frecuancia del PWM igual
a 20KHz
Periodo PWM= 1/20KHz = 50us
Tosc= 1/ 4MHz =250ns
PR2= (50us/(4*250ns*1))-1 = 49
CTPWM 50%= Periodo PWM / 2 = 25us
CCPR1L:CCP1CON = 25us/(250ns*1) = 100
por lo tanto la configuracion de esto es:
setup_ccp1(ccp_PWM);
setup_timer_2(t2_div_By_1,49,1);
set_pwm_duty(100);

el pwm es una herramienta muy util y utilizada en el campo de las comunicaciones y de


control. consiste en modificarle a una seal digital de frecuencia constante el tiempo y en
alto de la seal, sin variar la frecuencia, este tiempo en alto es tambien llamado duty.
en osp ltda hemos visto la necesidad de utilizar en varias ocaciones este conecpto para el
control de velocidad de motores y recientemente el control del tono de luz del backlight de
un lcd.
para esto hemos utilizado un pic y por ser el microcontrolador mas comunmente usado
entre los adictos a la electronica realizare la explicacion de como configurar el modulo ccp
de un pic para utilizar el pwm, para este caso puntual del un pic 16f883 y el compilado ccs.
es importante revisar la hoja de datos de cada pic para identificar varios puntos que seran
relevantes a la hora de configurar el pwm. alguno items de revisar son:

Timer con el que opera el modulo


Resolucion del modulo (cantidad de bits)
Frecuencia de trabajo.

Pin del moudlo CCP

el pin ccp se debera identificar porque este sera el que nos arroje el pwm.

para el caso del pic16f883, este contiene dos modulos ccp por lo cual usaremos el ccp1 para
efectos practicos. es bastante importante resaltar que la frecuencia del cristal sera la que nos
indique la minima frecuancia que podremos obtener por este pin.
a continuacion se describiran los pasos para configurar el moudulo y las formulas de
calculo necesarias, teniendo en cuenta que este pic opera el modulo ccp con el timer 2 y con
una resolucion de 10 bits.
1. configurar el timer 2
setup_timer2 (t2_div_by_16,255,1)
el primer parametro es el prescaler que puede ser 2, 4 o 16 para este pic, revisar hoja de
datos, el segundo parametro es el pr es que indic el momento de desborde del timer y el
ultimo parametro es el postcales que no tendra ningun efecto.

2. configurar el modulo en modo pwm

setup_ccp1(ccp_pwm) para habilitarlo en modo pwm.


<meta http-equiv="content-type" content="text/html; charset=utf-8" />
setup_ccp1(ccp_off) para utilizar el pin como i/o digital

3. establecer el duty
set_pwm1_duty (x)
donde x es el valor que indicara la duracion del duty de la seal es importante saber que el
duty maximo o el maximo tiempo en la seal podra estar en uno para un pwm de 10 bits es
1024 y para un pwm de 8 bits el duty maximo pora ser de 254.

esto se calcula bajo la siguiente formula para un pwm de 10 bits:

duty dde la sea = x/(4*[]PR2+1)

donde el duty sera el porcentaje de seal en alto.


el periodo de la seal resultante se calcula con la siguiente formula:

Perido de PWM =[PR2+1]*4*(1/Frec. Oscilacion del cristal )*prescaler

bueno y eso es todo, asi de facil se utiliza un pwm, con la herramienta proteus pueden
simular y verificar los resultados, solo basta con variar el valor de x en el comando
set_pwm para que el tiempo en alto de la seal varie, si lo que se desea variar es la
frecuancia de la seal se deben alterar prametros como el crustal de osiclacion del pic, el
prescaler o el pr2.

1 Comentario
|

Comentarios

hola muy bueno tu articulo quisiera saber si esta forma se puede aplicar para controlar led
rgb o si tienes otro articulo que me ayude
gracias
Responder

Escribe un comentario
Quieres usar tu foto? - Inicia tu sesin o Regstrate gratis

Nombre (Requerido)
E-mail (Requerido)
URL

Publicar

Recibir notificaciones sobre nuevos comentarios


Comentarios de este artculo en RSS

http://www.todopic.com.ar/foros/index.php?topic=41911.0