ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Como Generar Un Pwm


Enviado por   •  25 de Noviembre de 2012  •  383 Palabras (2 Páginas)  •  424 Visitas

Página 1 de 2

como generar un PWM con el pic:

primero tenemos que saber a que frecuencia queremos nuestro PWM, donde a este se le calcula el periodo de la frecuencia:

periodo del PWM=1/(frecuencia del PWM)

luego tenemos que saber que cristal vamos a utilizar para sacarle de igual forma el periodo:

Tosc=1/(cristal del pic)

ahora como PR2 tiene que estar entre 0 y 255 vemos que Preescaler nos sirve, en esto solo puede tomar tres valores de Preescaler los cuales son 1, 4 ó 16.

PR2=((Periodo del PWM)/(4*Tosc*TMR2 Preescaler))-1

y por ultimo tenemos que saber cuál va a ser nuestro rango de trabajo del PWM. esto quiere decir que si vamos a hacer un Dady cicle por ejemplo del 50% ó 100%.

CCPR1L:CCP1CON=(Ciclo de trabajo del PWM)/(Tosc*TMR2 Preescaler)

y por último la configuración del programa tiene que ser:

setup_ccp1(CCP_PWM); //ccp1 modo PWM ó

setup_ccp2(CCP_PWM); //ccp2 modo PWM ó

setup_ccp3(CCP_PWM); //ccp3 modo PWM

como también pueden ser las tres juntas

luego de esto se tiene que poner:

setup_timer_2(modo, period, postcaler);

Esta función inicializa el timer2; mode especifica el divisor del reloj del oscilador. period

es un número comprendido entre 0-255, y determina el momento en el que el valor del

reloj se resetea a 0. postscale es un número de 0 a 15, que determina cuántos reset del

timer se han producido antes de una interrupción. 0 significa 1 reset, 1 significa 2 reset,

y así sucesivamente. El valor del timer puede leerse y puede escribirse utilizando

GET_TIMER2() y SET_TIMER2().

Los valores de mode son:

o T2_DISABLED

o T2_DIV_BY_1

o T2_DIV_BY_4

o T2_DIV_BY_16

(los tres ultimos casos equivalen al preescaler utilisado)

ejemplo:

setup_timer_2(T2_DIV_BY_1,PR2, 1);

y por ultimo

SET_PWM1_DUTY(value)

SET_PWM2_DUTY(value)

Estas 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);

...

Descargar como (para miembros actualizados) txt (3 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com