Você está na página 1de 5

Desarrollo de Poryectos con Microcontroladores PIC en Lenguaje C

Jaime O.Ladn Mtz.

Taller: Desarrollo de Poryectos con Microcontroladores PIC en Lenguaje C


Tema: Lenguaje C y sus carcteristicas en PICs
Por: Jaime Osvaldo Landn Martnez
Sesin: #12

El reto de programacin: EN QUE ME ESTOY EQUIVOCANDO?


BUSCA LA EFICIENCIA Y RESOLVERAS LOS PROBLEMAS DEL MUNDO! Jaime O. Landn
Como se mencion en la sesin anterior el RETO consiste solamente en encontrar en donde est el error de este
cdigo, resolverlo para obtener por fin una seal con modulacin PWM, que funcione de manera correcta, esto
es que responda a la entrada en el potencimetro en la entrada de manera continua.

DESCRIPCION DEL FUNCIONAMIENTO:


El convertidor ADC est configurado como de 8 bits, por lo tanto entregara un valor digital binarizado a la
salida, en funcin de una entrada analgica a travs del PIN_A0; este valor digital controlara la seal PWM.
El valor que entrega el ADC es cargado en el registro CCP2, e inmediatamente es puesto a cero al contador
TIMER1 para que comience su conteo de ciclos mquina, adems el voltaje del PIN_C2 se encuentra previamente
en un nivel alto, esto genera un nivel alto durante un intervalo de tiempo(hasta que el CCP2 produzca una
interrupcin).
El mdulo CCP2 est configurado en modo COPARE (comparador), como se explic su funcionalidad es
sencilla, continuamente el valor cargado en el registro CCP2, es comparado con la cuenta del contador TIMER1;
cuando el valor de ambos coincida (MATCH), ocurrir un evento en el PIN_C1 (Puesto a alto o Puesto a bajo)
segn como este configurado, y tambin producir una interrupcin si esta se encuentra habilitada.
Una vez producida la interrupcin, que ser cuando el valor del ADC==CCP2==TIMER1, se pondr a BAJO el
PIN_C1 y comenzar el semiciclo bajo, el tiempo que durar este estar contralada por una resta ente el tiempo
mximo que dura el pulso menos el tiempo que lla ha ocupado el nivel en ALTO, esto es CCP2=255-ADC;
Esto nos quiere decir que la seal tendr un periodo de 255*TIMER1*PRESCALER*T-CiclodeTrabajo=255us,
Pues con un oscilador de 4Mhz a la entrada los pulsos de entrada al Timer1 sern cada Ciclo de Trabajo=1us.
Prescaler=1, no hay ms que decir de este.
TIMER1, es un contador de 16bits pero en esta ocasin no debe de contar ms all de 255 eventos.
Se observa que se escribir el porcentaje de la velocidad del motor, y este mensaje se escribir cada
segundo para no estarlo sobrescribiendo continuamente.
Tambin contiene una rutina de interrupcin a un evento externo que provoca el cambion en el sentido de
giro del motor, pero solo se ejecuta cuando cambias el estado del PIN_B0.

Desarrollo de Poryectos con Microcontroladores PIC en Lenguaje C

Jaime O.Ladn Mtz.

COSAS QUE DEVES TOMAR EN CUENTA:


Como se puede observar en la imagen el periodo simulado de la seal es contante; esto es que estamos
produciendo una seal cuadrada y con un extrao pulso cada dos flancos de subida.
Se est variando el voltaje analgico a la entrada del PIN_A0 pero segn vares la entrada el ancho del pulso
pareciera no cambiar. Solo hasta que llega a un nivel de voltaje 0, produce prcticamente un voltaje continuo,
que es lo que se desea pero a un porcentaje de 100% y no en 0%.
Observa las imgenes y encuentra el problema.

Desarrollo de Poryectos con Microcontroladores PIC en Lenguaje C

Jaime O.Ladn Mtz.

LAS REGLAS :
No puedes aumentar la frecuencia de trabajo hasta 20MHz
No puedes cambiar la precisin del ADC
No puedes retirar ninguna rutina de interrupcin
No puedes cambiar el tiempo de refrescado de la LCD
No puedes cambiar la configuracin del CCP2, ni utilizar el otro mdulo CCP1
Puedes deshabilitar la interrupcin externa, pero no retirar el cdigo que le corresponde
Puedes agregar, cambiar, pero no retirar variables
Si puedes agregas ms lneas al cdigo, siempre y cuando respetes su funcionalidad
bsica y su lgica de funcionamiento, que fue definida en la DESCRIPCION DEL
FUNCIONAMIENTO.

Prcticamente no debes cambiar el cdigo pues realmente genera


lo que deseamos, pero no de la manera ms ptima.

EL PROGRAMA EN LENGUAJE C

Desarrollo de Poryectos con Microcontroladores PIC en Lenguaje C

Jaime O.Ladn Mtz.

Desarrollo de Poryectos con Microcontroladores PIC en Lenguaje C

Jaime O.Ladn Mtz.

Deveria de entregar una seal de este tipo:

El codigo y la simulacion las encuantras en el archivo PWM+MOTORDC-Mejorado.rar

Você também pode gostar