El modulo L298N es un driver de 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.


¡Descubre el mundo de los microcontroladores PIC y lleva tus habilidades de programación al siguiente nivel! Obtén nuestro eBook y disfruta aprendiendo paso a paso desde cero, podrás realizar proyectos prácticos, encontrar soluciones a problemas comunes y explorar una amplia cobertura de temas desde lo más básico a lo más avanzado. Incluye software y ejemplos resueltos. ¡Cómpralo ahora y libera el increíble potencial de esta poderosa tecnología hoy mismo!

Microcontroladores PIC en PDF: Curso completo


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.

Motor paso a paso bipolar

Módulo driver L298N con PIC

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).

Módulo driver L298N con PIC

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