Controle motores de corriente continua y motores paso a paso con módulos de controlador de motor dual L298N y Arduino

No tiene que gastar mucho dinero para controlar motores con un Arduino o una placa compatible. Después de buscar un poco, encontramos un módulo de control de motor limpio basado en el IC del puente H L298N que le permite controlar la velocidad y la dirección de dos motores de CC, o controlar un motor paso a paso bipolar con facilidad.

El módulo de puente H L298N se puede usar con motores que tienen un voltaje de entre 5 y 35V CC. Con el módulo utilizado en este tutorial, también hay un regulador de 5V incorporado, por lo que si su voltaje de alimentación es de hasta 12V, también puede obtener 5V de la placa.

¡Entonces empecemos!

Paso 1: Comprender las conexiones del módulo L298

Primero repasaremos las conexiones, luego explicaremos cómo controlar los motores de CC y luego un motor paso a paso. En este punto, revise las conexiones en el módulo L298N H-bridge.

Considere la imagen: haga coincidir los números con la lista debajo de la imagen:

  1. Motor de CC 1 "+" o motor paso a paso A +
  2. Motor de CC 1 "-" o motor paso a paso A-
  3. Puente de 12 V: elimínelo si utiliza una tensión de alimentación superior a 12 V CC. Esto permite la alimentación del regulador de 5V integrado.

  4. Conecte el voltaje de suministro de su motor aquí, máximo de 35 V CC. Retire el puente de 12V si> 12V DC

  5. GND

  6. Salida de 5V si el puente de 12V está en su lugar, ideal para alimentar su Arduino (etc.)

  7. Puente de habilitación del motor DC 1. Deje esto en su lugar cuando use un motor paso a paso. Conecte a la salida PWM para el control de velocidad del motor de CC.

  8. EN 1

  9. EN 2

  10. EN 3

  11. IN4

  12. Puente de habilitación del motor DC 2. Deje esto en su lugar cuando use un motor paso a paso. Conecte a la salida PWM para control de velocidad del motor DC

  13. Motor de CC 2 "+" o motor paso a paso B +

  14. Motor DC 2 "-" o motor paso a paso B-

Paso 2: Control de motores DC

Controlar uno o dos motores de CC es bastante fácil con el módulo de puente H L298N. Primero conecte cada motor a las conexiones A y B en el módulo L298N.

Si está utilizando dos motores para un robot (etc.) asegúrese de que la polaridad de los motores sea la misma en ambas entradas. De lo contrario, es posible que deba cambiarlos cuando ajuste ambos motores hacia adelante y uno retroceda.

Luego, conecte su fuente de alimentación: el positivo al pin 4 en el módulo y el negativo / GND al pin 5. Si el suministro es de hasta 12V, puede dejarlo en el puente de 12V (punto 3 en la imagen de arriba) y 5V estarán disponibles desde el pin 6 en el módulo.

Esto se puede alimentar al pin de 5V de su Arduino para alimentarlo desde la fuente de alimentación de los motores. No olvide conectar Arduino GND al pin 5 del módulo también para completar el circuito. Ahora necesitará seis pines de salida digital en su Arduino, dos de los cuales deben ser pines PWM (modulación de ancho de pulso).

Los pines PWM se denotan con la tilde ("~") al lado del número de pin, por ejemplo en la imagen de los pines digitales del Arduino Uno.

Finalmente, conecte los pines de salida digital Arduino al módulo del controlador. En nuestro ejemplo, tenemos dos motores de CC, por lo que los pines digitales D9, D8, D7 y D6 se conectarán a los pines IN1, IN2, IN3 e IN4 respectivamente. Luego, conecte D10 al pin 7 del módulo (quite primero el puente) y D5 al pin 12 del módulo (nuevamente, retire el puente).

La dirección del motor se controla enviando una señal ALTA o BAJA al variador para cada motor (o canal). Por ejemplo, para el motor uno, un HIGH a IN1 y un LOW a IN2 harán que gire en una dirección, y un LOW y HIGH lo harán en la otra dirección.

Sin embargo, los motores no girarán hasta que se ajuste ALTO al pin de habilitación (7 para el motor uno, 12 para el motor dos). Y se pueden apagar con un LOW al mismo pin (s). Sin embargo, si necesita controlar la velocidad de los motores, la señal PWM del pin digital conectado al pin de habilitación puede encargarse de ello.

Esto es lo que hemos hecho con el boceto de demostración del motor DC. Dos motores de CC y un Arduino Uno están conectados como se describe anteriormente, junto con una fuente de alimentación externa. Luego ingrese y cargue el siguiente boceto:

 // conecta los pines del controlador del motor a los pines digitales Arduino // motor one int enA = 10; int in1 = 9; int in2 = 8; // motor dos int enB = 5; int in3 = 7; int in4 = 6; void setup () {// establece todos los pines de control del motor en salidas pinMode (enA, OUTPUT); pinMode (enB, OUTPUT); pinMode (in1, OUTPUT); pinMode (in2, OUTPUT); pinMode (in3, OUTPUT); pinMode (in4, OUTPUT); } void demoOne () {// esta función hará funcionar los motores en ambas direcciones a una velocidad fija // encienda el motor A digitalWrite (in1, HIGH); digitalWrite (in2, LOW); // establece la velocidad en 200 fuera del rango posible 0 ~ 255 analogWrite (enA, 200); // enciende el motor B digitalWrite (in3, HIGH); digitalWrite (in4, BAJO); // establece la velocidad en 200 fuera del rango posible 0 ~ 255 analogWrite (enB, 200); retraso (2000); // ahora cambia las direcciones del motor digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, ALTO); retraso (2000); // ahora apague los motores digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, BAJO); } void demoTwo () {// esta función hará funcionar los motores en el rango de velocidades posibles // tenga en cuenta que la velocidad máxima está determinada por el propio motor y el voltaje de funcionamiento // los valores PWM enviados por analogWrite () son fracciones de velocidad máxima posible // por su hardware // encienda los motores digitalWrite (in1, LOW); digitalWrite (in2, HIGH); digitalWrite (in3, LOW); digitalWrite (in4, ALTO); // acelerar de cero a la velocidad máxima para (int i = 0; i <256; i ++) {analogWrite (enA, i); analogWrite (enB, i); retraso (20); } // desacelerar de la velocidad máxima a cero para (int i = 255; i> = 0; --i) {analogWrite (enA, i); analogWrite (enB, i); retraso (20); } // ahora apague los motores digitalWrite (in1, LOW); digitalWrite (in2, LOW); digitalWrite (in3, LOW); digitalWrite (in4, BAJO); } void loop () {demoOne (); retraso (1000); demoTwo (); retraso (1000); } 

Entonces, ¿qué está pasando en ese boceto? En la función demoOne (), encendemos los motores y los hacemos funcionar a un valor PWM de 200. Este no es un valor de velocidad, sino que se aplica potencia durante 200/255 de una cantidad de tiempo a la vez.


Luego, después de un momento, los motores funcionan en la dirección inversa (¿ven cómo cambiamos los valores ALTO y BAJO en las funciones digitalWrite ()?). Para tener una idea del rango de velocidad posible de su hardware, recorremos todo el rango de PWM en la función demoTwo () que enciende los motores y los valores de PWM de cero a 255 y de nuevo a cero con los dos bucles. .

Finalmente, esto se demuestra en el video de esta página, utilizando nuestro chasis de tanque desgastado con dos motores de CC.

Paso 3: Control de un motor paso a paso con Arduino y L298N

Los motores paso a paso pueden parecer complejos, pero nada podría estar más lejos que la verdad. En este ejemplo, controlamos un motor paso a paso NEMA-17 típico que tiene cuatro cables, como se muestra en la imagen de este paso.

Tiene 200 pasos por revolución y puede funcionar a 60 RPM. Si aún no tiene el valor de paso y velocidad para su motor, infórmelo ahora y lo necesitará para el boceto.

La clave para el control exitoso del motor paso a paso es identificar los cables, es decir cuál es cuál. Deberá determinar los cables A +, A-, B + y B-. Con nuestro motor de ejemplo, estos son rojo, verde, amarillo y azul. Ahora terminemos el cableado.

Conecte los cables A +, A-, B + y B- del motor paso a paso a las conexiones del módulo 1, 2, 13 y 14 respectivamente. Coloque los puentes incluidos con el módulo L298N sobre los pares en los puntos 7 y 12 del módulo. Luego, conecte la fuente de alimentación según sea necesario a los puntos 4 (positivo) y 5 (negativo / GND).

Una vez más, si la fuente de alimentación de su motor paso a paso es inferior a 12V, ajuste el puente al módulo en el punto 3, que le proporciona una fuente de alimentación de 5V para su Arduino. A continuación, conecte los pines del módulo L298N IN1, IN2, IN3 e IN4 a los pines digitales Arduino D8, D9, D10 y D11 respectivamente.

Finalmente, conecte Arduino GND al punto 5 del módulo y Arduino 5V al punto 6 si obtiene 5V del módulo. Controlar el motor paso a paso desde sus bocetos es muy simple, gracias a la biblioteca Stepper Arduino incluida con el IDE Arduino como estándar.

Para demostrar su motor, simplemente cargue el boceto stepper_oneRevolution que se incluye con la biblioteca Stepper. Para encontrar esto, haga clic en el menú Archivo> Ejemplos> Paso a paso en el IDE de Arduino.

Finalmente, verifique el valor de

 const int stepsPerRevolution = 200; 
en el boceto y cambie los 200 al número de pasos por revolución para su motor paso a paso, y también la velocidad que está preestablecida a 60 RPM en la siguiente línea:
 myStepper.setSpeed ​​(60); 

Ahora puede guardar y cargar el boceto, que enviará su motor paso a paso alrededor de una revolución, y luego nuevamente. Esto se logra con la función

myStepper.step (stepsPerRevolution); // para sentido horario

myStepper.step (-stepsPerRevolution); // para antihorario

Finalmente, una demostración rápida de nuestro hardware de prueba se muestra en el video de este paso.

Así que ahí lo tiene, una forma fácil y económica de controlar motores con su Arduino o placa compatible. Y si te ha gustado este artículo, o quieres presentar a alguien más al interesante mundo de Arduino, mira mi libro (¡ahora en una cuarta impresión!) "Arduino Workshop".

Artículos Relacionados