RobotyPic son proyectos básicos de electrónica con microcontroladores PIC, de aplicación en el mundo de la robótica didáctica, con archivos fuente creados mediante el compilador CCS PIC C COMPILER en lenguajeC.
Se trata de controlar la velocidad de un motor DC con una señal de
impulsos. Variando el tiempo en estado alto de la señal con respecto al
tiempo en estado bajo conseguiremos reducir la tensión media que le llega al
motor y en consecuencia variaremos su velocidad.
Para hacer ese control con el PIC, en este proyecto emplearemos el modo
PWM (Pulse Width Modulation). Leeremos una tensión con el conversor AD del PIC
proporcionada por un potenciómetro como control manual de la velocidad. Este
valor determinará el tiempo de los pulsos en estado alto de la señal que controlará
la velocidad.
En el modo PWM el PIC compara el valor del registro CCP (en este caso el
CCP2) con el valor del timer1. En el registro CCP habremos cargado previamente
un valor responsable de la velocidad del motor. Cuando ambos coinciden, se
produce la interrupción con la que gestionaremos el cambio de estado de la
señal hasta una nueva comparación con la cuenta del timer 1.
lectura_AD=read_adc();
//Lectura canal analógico
#int_ccp2
void ccp2_int(){
//Conmutación estado salida CCP2
if(++cambio==1){
//Modo
comparación,conmutación salida a 0
setup_ccp2(CCP_COMPARE_CLR_ON_MATCH);
//carga del ccp2 con valor semiperiodo alto
ccp_2=lectura_AD;
}
else{
//Modo comparación, conmutación salida a 1
setup_ccp2(CCP_COMPARE_SET_ON_MATCH);
//Carga del ccp2 con valor del semiperiodo bajo
ccp_2=255-lectura_AD;
}
//Reinicio del
temporizador para nueva comparación
El proyecto contenido en el artículo ha sido diseñado y probado con éxito utilizando las siguientes versiones de software: - Windows xp y windows 7 - Proteus V7.7 SP2 - CCS PIC C COMPILER v4.084
Hola! una pregunta, si solo quisiera utilizar la parte del código para obtener las revoluciones por minuto sin la pantalla, qué es lo que debería incluir en mi programa? Es que debo registrar las revoluciones por minuto de un motor de AC a través de un pic18f4550 y manipular los datos con labview... en realidad no sé mucho de como usar ambos jaja pero la tarjeta de adquisición de datos ya la hice :)
Si quieres medir las rpm deberás insertar un encoder. Contando los impulsos del encoder correspondientes a una vuelta y midiendo el tiempo que tarda en leerlos sabrás el tiempo que le cuesta un giro completo y por tanto las rpm. Para medir los pulsos puedes utilizar el modo de captura del pic o la interrupción externa. También mediante dos posibles procesos; bien midiendo el tiempo entre pulsos del encoder o bien midiendo el numero de pulsos en un tiempo dado.
Hola que tal el circuito me funciona muy bien la salida me da 2.5 khz podrias ayudarme que debo modificar del codigo para obtener una salida de 20 Khz. Por favor
6 comentarios:
Buen aporte.
Hola!
una pregunta, si solo quisiera utilizar la parte del código para obtener las revoluciones por minuto sin la pantalla, qué es lo que debería incluir en mi programa?
Es que debo registrar las revoluciones por minuto de un motor de AC a través de un pic18f4550 y manipular los datos con labview... en realidad no sé mucho de como usar ambos jaja pero la tarjeta de adquisición de datos ya la hice :)
espero puedas ayudarme
saludos!
Si quieres medir las rpm deberás insertar un encoder. Contando los impulsos del encoder correspondientes a una vuelta y midiendo el tiempo que tarda en leerlos sabrás el tiempo que le cuesta un giro completo y por tanto las rpm. Para medir los pulsos puedes utilizar el modo de captura del pic o la interrupción externa. También mediante dos posibles procesos; bien midiendo el tiempo entre pulsos del encoder o bien midiendo el numero de pulsos en un tiempo dado.
Muy bueno, gracias por el aporte me sirvió mucho
Hola que tal el circuito me funciona muy bien la salida me da 2.5 khz podrias ayudarme que debo modificar del codigo para obtener una salida de 20 Khz. Por favor
Aumenta el valor de carga del temporizador set_timer(0); Ponle otro valor superior a 0.
Publicar un comentario