Arduino - Motor de corriente continua

En este tutorial, vamos a aprender:

Acerca del motor de corriente continua

Pinout del motor de corriente continua

El motor de corriente continua tiene dos cables:

  • Cable positivo: normalmente rojo
  • Cable negativo: normalmente negro
Pinout del motor de corriente continua

Cómo funciona

Cuando compras un motor de corriente continua, necesitas saber a qué voltaje funciona un motor de corriente continua. Tomemos como ejemplo un motor de 12 V de CC.

Cuando alimentas el motor de corriente continua de 12 V con una fuente de 12 V:

  • 12V y GND al cable positivo y al cable negativo, respectivamente: el motor de corriente continua gira a la velocidad máxima en sentido horario
  • 12V y GND al cable negativo y al cable positivo, respectivamente: el motor de corriente continua gira a la velocidad máxima en sentido antihorario

Como se describió arriba, cuando el polo de alimentación se intercambia entre dos cables del motor de corriente continua, la dirección de giro se invierte. Este método se utiliza para controlar la dirección del motor de corriente continua. Por supuesto, no cambiándolo manualmente, sino mediante programación.

Si suministramos energía a motores de corriente continua por debajo de 12 V, el motor sigue girando pero no a la velocidad máxima. Esto significa que si cambiamos la tensión de la fuente de alimentación, podemos cambiar la velocidad del motor de CC. Sin embargo, este método no se utiliza en la práctica debido a la dificultad de controlar la tensión de la fuente de alimentación. En su lugar, fijamos la tensión de la fuente de alimentación y controlamos la velocidad del motor de CC mediante una señal PWM. Cuanto mayor sea el ciclo de trabajo del PWM, mayor será la velocidad de giro del motor de CC.

Cómo controlar un motor de corriente continua

Cómo controlar un motor de corriente continua con Arduino

El control de un motor de corriente continua implica dos factores: velocidad y dirección.

Arduino puede generar la señal PWM.

Sin embargo, esta señal PWM tiene una tensión y una corriente bajas, por lo que no podemos usarla para controlar el motor de corriente continua.

Necesitamos usar un controlador de hardware entre Arduino y el motor de corriente continua.

El controlador realiza dos funciones:

  • Amplificar la señal PWM desde Arduino (corriente y voltaje) para el control de velocidad
  • Recibir la señal de control desde Arduino para invertir el polo de la fuente de alimentación para el control de la dirección
Control de motor de corriente continua con Arduino

※ Nota:

  • Este tutorial se puede aplicar a todos los motores de corriente continua. El motor de 12 V es solo un ejemplo.
  • Cuando controlas un motor de 5 V, aunque el pin de Arduino entrega 5 V (el mismo voltaje que el motor de corriente continua), aún necesitas un driver entre Arduino y el motor de corriente continua porque el pin de Arduino no proporciona suficiente corriente para el motor de corriente continua.

Hay muchos tipos de chips; los módulos (p. ej., L293D, L298N) pueden usarse como controladores de motores de corriente continua. En este tutorial, usaremos el controlador L298N.

Acerca del controlador L298N

El controlador L298N se puede usar para controlar un motor de corriente continua y un motor paso a paso. En este tutorial, aprendemos cómo usarlo para controlar el motor de corriente continua.

Pinout del controlador L298N

Diagrama de pines del controlador L298N

El controlador L298N puede controlar dos motores DC de forma independiente al mismo tiempo, llamados motor A y motor B. El controlador L298N tiene 13 pines:

Los pines comunes para ambos motores:

  • Pin VCC: suministra energía para el motor. Puede estar entre 5 y 35V.
  • Pin GND: es un pin de tierra común; debe conectarse a GND (0V).
  • Pin 5V: suministra energía para el módulo L298N. Puede ser alimentado por 5V desde Arduino.

Pines del Motor A (Canal A):

  • Los pines ENA se utilizan para controlar la velocidad del Motor A. Al quitar el puente y conectar este pin a la entrada PWM, podremos controlar la velocidad del Motor A.
  • Los pines IN1 e IN2 se utilizan para controlar la dirección de giro del Motor A. Cuando uno de ellos está en alto y el otro en bajo, el Motor A girará. Si ambas entradas están en alto o en bajo, el Motor A se detendrá.
  • Los pines OUT1 y OUT2 están conectados al Motor A.

Pines del motor B (Canal B):

  • Pines ENB: se utilizan para controlar la velocidad del Motor B. Quitar el puente y conectar este pin a la entrada PWM nos permitirá controlar la velocidad del Motor B.
  • Pines IN3 y IN4: se utilizan para controlar la dirección de giro del Motor B. Cuando uno de ellos está ALTO y el otro BAJO, el Motor B girará. Si ambas entradas están en ALTO o en BAJO, el Motor B se detendrá.
  • Pines OUT3 y OUT4: están conectados al Motor B.

Como se describió anteriormente, el controlador L298N tiene dos fuentes de alimentación de entrada:

  • Uno para el motor de corriente continua (pines VCC y GND): de 5 a 35 V.
  • Uno para el funcionamiento interno del módulo L298N (pines de 5 V y GND): de 5 a 7 V.

El controlador L298N también tiene tres jumpers para usos avanzados u otros propósitos. Para simplificar, por favor retire todos los jumpers del controlador L298N.

Podemos controlar dos motores de corriente continua de forma independiente al mismo tiempo utilizando un Arduino y un controlador L298N. Para controlar cada motor, solo necesitamos tres pines del Arduino.

※ Nota:

El resto de este tutorial controla un motor de corriente continua utilizando el canal A. Controlar el otro motor de corriente continua es similar.

Cómo controlar la velocidad de un motor de corriente continua mediante el controlador L298N

Es sencillo controlar la velocidad del motor de corriente continua generando una señal PWM en el pin ENA del L298N. Podemos hacerlo de la siguiente manera:

  • Conecta un pin de Arduino al pin ENA del L298N
  • Genera una señal PWM en el pin ENA usando la función analogWrite(). El controlador L298N amplifica la señal PWM para el motor de corriente continua
analogWrite(ENA_PIN, speed); // speed is a value from 0 to 255

La velocidad es un valor entre 0 y 255. Si la velocidad es 0, el motor se detiene. Si la velocidad es 255, el motor gira a la velocidad máxima.

Cómo controlar la dirección del motor de corriente continua mediante el controlador L298N

La dirección de giro de un motor puede controlarse aplicando un nivel lógico alto o bajo a los pines IN1 e IN2. La tabla siguiente ilustra cómo controlar la dirección en ambos canales.

IN1 pin IN2 pin Direction
LOW LOW Motor A stops
HIGH HIGH Motor A stops
HIGH LOW Motor A spins Clockwise
LOW HIGH Motor A spins Anti-Clockwise
  • El motor A gira en sentido horario
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • El motor A gira en sentido antihorario
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Nota:

La dirección de giro se invierte si el pin OUT1 y el pin OUT2 se conectan a dos pines del motor de corriente continua de forma inversa. En ese caso, solo es necesario intercambiar los pines OUT1 y OUT2 o cambiar la señal de control en los pines IN1 e IN2 en el código.

Cómo detener el giro de un motor de CC

Hay dos formas de detener un motor de corriente continua.

  • Controla la velocidad a 0
analogWrite(ENA_PIN, 0);
  • Controla los pines IN1 e IN2 al mismo valor (bajo o alto)
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);
  • O
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

Cómo controlar un motor de corriente continua usando el controlador L298N.

Diagrama de cableado

Por favor, retire los tres jumpers del módulo L298N antes de cablear.

Diagrama de cableado para motor DC con Arduino y controlador L298N

This image is created using Fritzing. Click to enlarge image

Código de Arduino

Lo que hace el código a continuación:

  • Acelerar el motor de corriente continua
  • Cambiar la dirección
  • Disminuir la velocidad del motor de corriente continua
  • Detener el motor
/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-dc-motor */ // constants won't change const int ENA_PIN = 9; // the Arduino pin connected to the EN1 pin L298N const int IN1_PIN = 6; // the Arduino pin connected to the IN1 pin L298N const int IN2_PIN = 5; // the Arduino pin connected to the IN2 pin L298N // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // rotate at maximum speed 1 seconds in in clockwise direction // change direction digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise delay(1000); // rotate at maximum speed 1 seconds in in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // stop motor 1 second }

Pasos R\u00e1pidos

  • Retire los tres jumpers del módulo L298N.
  • Copie el código anterior y ábralo con Arduino IDE.
  • Haga clic en el botón Subir en Arduino IDE para cargar el código en Arduino.
  • Verá:
    • El motor DC se acelera y luego gira a la velocidad máxima durante 1 segundo
    • La dirección del motor DC cambia
    • El motor DC gira a la velocidad máxima durante 1 segundo en la dirección inversa
    • El motor DC se ralentiza
    • El motor DC se detiene durante 1 segundo
    • El proceso anterior se ejecuta repetidamente.

    ※ Nota:

    En este tutorial, aprendemos a controlar la velocidad del motor de corriente continua relativa a la velocidad máxima. Para controlar la velocidad absoluta (revoluciones por segundo), necesitamos usar un controlador PID y un codificador. El control de la velocidad absoluta del motor de corriente continua se presentará en otro tutorial.

Cómo controlar dos motores de corriente continua usando el controlador L298N

(próximamente)

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Referencias de funciones

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!