tecmikro logo
Programación de microcontroladores PIC en mikroC PRO
Email: tecmikro@gmail.com   Cel. 098 743 8877   Telf. 243 0352 Quito-Ecuador


Motor paso a paso con driver L298N y PIC16F628A

 

El driver L298N es un driver de alta potencia para el control de motores paso a paso (PAP) bipolares o unipolares de hasta 2A. Este driver puede soportar hasta 46V con una salida total de corriente de hasta 4A. El siguiente circuito tiene el propósito de ser utilizado para la prueba de cualquier motor pap unipolar o bipolar de manera rápida, para constatar su funcionamiento. El circuito consta de 4 terminales de salida para la conexión de las bobinas (fases) de los motores PAP, dos terminales para la fuente de alimentación de 5V y dos terminales para la fuente de alimentación de potencia (hasta 46V). En algunas ocasiones puede ser necesario utilizar dos fuentes independientes (una fuente para el motor y otra fuente de 5V para la lógica interna), ya que el empleo de una sola fuente (con un regulador de 5V adicional para la obtención de la alimentación de bajo voltaje) puede producir problemas de funcionamiento debido a las fluctuaciones de voltaje ocasionadas por los motores, especialmente cuando consumen corrientes elevadas. El driver L298N requiere 8 diodos externos de protección, que pueden ser los comunes 1N4007 (a menos que se trabaje con un elevado número de pulsos por segundo PPS, por encima de los 400 PPS, en cuyo caso se requieren diodos especiales de acuerdo a como lo indica la datasheet del driver L298N). Igualmente, es imprescindible el empleo de los condensadores indicados, los que ayudan a controlar los problemas ocasionados por las variaciones de voltaje propias de un sistema digital. El driver L298N tiene que estar adecuadamente refrigerado por medio de un disipador de calor de aluminio de tamaño apropiado.

El PIC 16F628A ha sido programado para que genere una secuencia de 200 pulsos en sentido horario y 200 pulsos en sentido antihorario, de forma continua. Los pulsos se aplican con un intervalo de 10ms (es decir, 100 PPS). Se indica el código fuente en lenguaje C y también se ha añadido un enlace de descarga del código ejecutable (.hex) para que el lector pueda probarlo rápidamente.

Esquema eléctrico:

Motor paso a paso bipolar

Motor paso a paso unipolar

Nótese que la fuente de potencia (identificada como C1(1) ) se conecta directamente al punto común de las bobinas del motor (ya sea de cinco, seis u ocho terminales), y los cuatro terminales restantes del motor  se conectan normalmente en las salidas del driver L298N (puede ser necesario probar varias combinaciones de estos cuatro terminales hasta lograr que el motor empiece a moverse). 

Ejemplo en mikroC PRO con el PIC16F628A

//MotorPAP.c
//Microcontrolador: PIC16F628A
//Oscilador: Interno de 4MHz
//Programa para prueba de motores PAP unipolares y bipolares con
//el driver L298N. Realiza una secuencia de 200 pasos en sentido horario
//y 200 pasos en sentido antihorario de forma continua.
//Las funciones CW y CCW están escritas para mantener la continuidad
//en la secuencia de estados(de lo contrario el motor paso a paso se movera
//de forma irregular y brusca).

void pasosCW();             //Cuatro pasos CW (horario).
void pasosCCW();            //Cuatro pasos CCW (antihorario).

char i;
#define PAUSA 10            //Pausa de 10ms entre pasos.

void main(){
CMCON=0x07;                 //Pines RA<3:0> como E/S digital.
PORTA=0x00;                 //Estado inicial del puerto A.
TRISA=0x00;                 //Puerto A como salida.
PORTB=0x00;                 //Estado inicial del puerto B.
TRISB=0x00;                 //Puerto B como salida.
while(1){
  //200 pasos CW
  for (i=1;i<=50;i++)
   pasosCW();
  PORTB=0b0000;             //Apagar el motor.
  Delay_ms(500);            //Pausa de 500ms al final del movimiento.
 
  //200 pasos CCW
  for (i=1;i<=50;i++)
   pasosCCW();
  PORTB=0b0000;             //Apagar el motor.
  Delay_ms(500);            //Pausa de 500ms al final del movimiento.
}
}

//Definición de funciones.
void pasosCW(){
PORTB=0b0110;
Delay_ms(PAUSA);
PORTB=0b0101;
Delay_ms(PAUSA);
PORTB=0b1001;
Delay_ms(PAUSA);
PORTB=0b1010;
Delay_ms(PAUSA);
}

void pasosCCW(){
PORTB=0b1001;
Delay_ms(PAUSA);
PORTB=0b0101;
Delay_ms(PAUSA);
PORTB=0b0110;
Delay_ms(PAUSA);
PORTB=0b1010;
Delay_ms(PAUSA);
}

Información complementaria

 


eBook en formato PDF "Cómo programar microcontroladores PIC"

Guía básica para programar microcontroladores PIC en mikroC PRO. Disponible en formato PDF. A la venta por tan sólo US$12.00

¡Cómpralo ya!