Está en la página 1de 3

Practica 1 Modulo CCP

Daniel Urgils
Universidad del Azuay
UDA
Cuenca, Ecuador

Resumen En esta prctica se proceder a realizar el


control de un motor dc, as como la visualizacin de su
velocidad en RPM.
I.

INTRODUCCION

Los mdulos CCP y ECCP son utilizados para medir y


controlar ciertos eventos, tienen diferentes modos de usos
como el modo de captura, el modo de comparacin y el
modo de PWM, el modo comparacin compara valores de 2
registros uno definido por un Timer, el modo captura es
utilizado para captar seales en un periodo de tiempo y el
modo PWM es utilizado para variar el ancho del pulso de
uno o varios pines de salida.
II.

HARDWARE

Para realizar la inversin y control de la velocidad del


motor se utiliz los transistores Mosfet IRFZ44N, por su
capacidad para controlar la tensin en dicho motor, adems
viene incluido un diodo en cada transistor, los Mosfet de
canal n requieren de una mayor tensin en el gate para poder
comandar de mejor manera el motor, por lo cual es
recomendado utilizar un driver como se muestra en la
Figura1.

Fig2. Circuito encoder MOC70T3


III PROGRAMACION EN C
Para realizar la programacin en c primero se procede a
configurar los mdulos CCP y ECCP con la ayuda de la
herramienta code configuratior de MPLABX, para la
captura de la seal se utiliz el mdulo CCP4 junto con el
Timer1 con un periodo de 5ms configurado para que exista
una interrupcin cada que capta una seal en la entrada
RD1, para el modo de PWM se utiliz el mdulo ECCP1
junto con el Timer2 configurado con puente completo,
iniciando el motor apagado y con una frecuencia de PWM
de 500Hz
Luego de la configuracin se procede a realizar las
funciones de cada pulsante:
RD4=S1 El motor inicia en modo forwar y con un dutycycle de 50%, cada vez que se presiona dicho pulsante se
invierte el giro manteniendo el mismo valor de duty-cycle.
RD5=S2 Aumenta el valor del duty-cycle pero sin
desbordar dicho valor.
RD6=S3 Disminuye el valor del duty-cycle pero sin
desbordar dicho valor.
RD7=S4 Detiene el sistema.

Fig. 1 Puente H Mosfet IRFZ44N


Para poder obtener la velocidad del motor se obtiene una
seal digital con el sensor MOC7OT3 como se muestra en la
Figura2, El circuito consta de un diodo infrarrojo y un transistor
dndonos una seal de 5v cada que se interrumpe la luz
infrarroja cuando el motor realiza una vuelta.

Para el modo captura se debe realizar un cdigo para


cuando el Timer se desborda antes de ocurrir la interrupcin,
contando las veces que se desborda dicho Timer para
aumentar al tiempo en el cual ocurre la interrupcin.
void TMR1_ISR(void)
{
PIR1bits.TMR1IF = 0;
cont=cont+1;
TMR1 += timer1ReloadVal; }

Luego en el archivo CCP4, en donde se atiende cada que


ocurre un pulso en la entrada RD1 se procede a calcular el
nmero de revoluciones por minuto, el tiempo total lo
guardamos en la variable a, en donde se suma los tiempos de
cada desborde del Timer en caso de que esto ocurra con el
tiempo calculado con el valor que se guarda cada que ocurre
un pulso en RD1.

Resolucin = [(log [4(PR1+1))] / [log (2)]


Resolucin = [(log [4(255+1))] / [log (2)]
Resolucin = 10 bits
V ESQUEMA

void CCP4_CallBack(uint16_t capturedValue)


{
float a = (cont*0.005)+((capturedValue*4)/8000000);
rpm=60/a;
cont=0;
if (rpm!=rpmb) {
flag = 1;
rpmb=rpm;
}

VI CONCLUSIONES

TMR1_Reload();
La variable flag es utilizada para mostrar el valor de las
revoluciones por minuto solo cuanto el valor cambia.
if (flag==1) {
itoa(rev,rpm,10);
Lcd_Out(2,0,"

");

Lcd_Out(2,0,rev);
Lcd_Out(2,4,"RPM

");

flag =0;
}
Para controlar el sentido de giro y el estado del sistema
de encendido y apagado se utiliz dos banderas giro y estado
IV CLCULOS
PWM periodo = [(PR2)=1]x 4x(Tosc)
(TMR2xPrescaler)
PWM = [(255)+1] x 4 x (1/8Mhz) (16)
PWM= 2.048x10E-3
PWM frecuencia = 488.28 Hz
Pulse Width = (CCPR1L:CCP1CON<5:4>) x Tosc x
( TMR2 Prescaler)
(2.048x10E-3) x 0.5 = (CCPR1L:CCP1CON<5:4) x
(125ns) x 16
CCPR1L:CCP1CON<5:4 = 512 = 1000000000

En la prctica se logr comprender el funcionamiento


de los mdulos CCP Y ECCP, controlar la velocidad, la
inversin de giro y mostrar la velocidad del motor con
eficiencia.