You are on page 1of 6

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);
}

You might also like