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.

Control de velocidad de un motor DC con PIC

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
  set_timer1(0);                            
}


[+/-] Ver / Ocultar programa completo en C


En esta animación se puede ver la simulación bajo proteus.


Los archivos del proyecto se pueden descargar en el siguiente enlace:

Descargar archivos Control Velocidad Motor


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





-->


6 comentarios:

Unknown dijo...

Buen aporte.

NiErickzon dijo...

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!

Robotypic dijo...

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.

Unknown dijo...

Muy bueno, gracias por el aporte me sirvió mucho

Unknown dijo...

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

Robotypic dijo...

Aumenta el valor de carga del temporizador set_timer(0); Ponle otro valor superior a 0.

Related Posts Plugin for WordPress, Blogger...

CONTACTA - (Haz referencia del artículo sobre el que trata la consulta o comentario)