Arduino Nano - Motor de corriente continua

Este tutorial te enseña cómo usar Arduino Nano para controlar un motor de corriente continua. En detalle, aprenderemos:

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
1×Módulo Controlador de Motor L298N
1×Motor DC 5V
1×(Opcional) 12V DC Motor
1×Adaptador de Corriente 5V para motor DC 5V
1×Conector de Alimentación DC
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del motor de corriente continua

Diagrama de pines del motor DC

El motor de corriente continua tiene dos cables: el positivo suele ser rojo y el negativo suele ser negro.

Esquema de pines del motor de corriente continua

Cómo funciona

Al comprar un motor de corriente continua, es importante conocer el voltaje al que opera. Por ejemplo, consideremos un motor de 12 V de corriente continua.

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

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

Intercambiar el polo de alimentación entre dos cables del motor de CC invertirá su dirección de giro. Esta técnica se utiliza para controlar la dirección del motor de CC, no manualmente sino mediante programación.

Si la tensión de la fuente de alimentación para un motor de corriente continua es inferior a 12 V, el motor seguirá girando, pero no a su velocidad máxima. Por lo tanto, al ajustar la tensión de la fuente de alimentación, podemos controlar la velocidad del motor de corriente continua. Sin embargo, este enfoque no se suele utilizar debido a la dificultad de controlar la tensión de la fuente de alimentación. Como alternativa, mantenemos fija la tensión de la fuente de alimentación y controlamos la velocidad del motor de corriente continua mediante una señal PWM. Cuanto mayor sea el ciclo de trabajo de la PWM, más rápido gira el motor de corriente continua.

Cómo controlar un motor de corriente continua.

Cómo controlar un motor de corriente continua usando Arduino Nano

Controlar un motor de corriente continua implica dos elementos: velocidad y dirección. Arduino Nano puede generar una señal PWM, pero esta señal tiene bajo voltaje y corriente, por lo que no puede utilizarse directamente para controlar el motor. Necesitamos usar un controlador de hardware entre Arduino Nano y el motor. El controlador realiza dos tareas:

  • Amplificar la señal PWM del Arduino Nano (en términos de corriente y/o voltaje) para el control de velocidad
  • Recibir la señal de control desde el Arduino Nano para conmutar la polaridad de la fuente de alimentación para el control de la dirección
Control de motor DC con Arduino Nano

※ Nota:

  • Este tutorial puede usarse para todos los motores de corriente continua. Tomaremos como ejemplo un motor de 12 V.
  • Al controlar un motor de 5 V, aunque el pin del Arduino Nano suministra 5 V (que es el mismo voltaje que el motor), aún se requiere un controlador entre el Arduino Nano y el motor, ya que el pin del Arduino Nano no proporciona la corriente suficiente para el motor.
  • Si usas un motor de 5 V, necesitas una fuente de alimentación de 5 V para el motor. Si usas un motor de 12 V, necesitas una fuente de alimentación de 12 V para el motor.

Hay muchos chips y módulos que pueden funcionar como controladores para motores de corriente continua, como el L293D y el L298N. En esta guía, utilizaremos el controlador L298N.

Acerca del controlador L298N

El controlador L298N se puede usar para manejar motores de corriente continua y motores paso a paso. Este tutorial te enseña cómo utilizarlo para controlar un motor de corriente continua.

Disposición de pines del controlador L298N

Pinout del controlador L298N

El controlador L298N es capaz de controlar dos motores de corriente continua de forma independiente al mismo tiempo, conocidos como el motor A y el motor B. Este controlador tiene trece pines.

Los pines comunes para ambos motores:

  • Pin VCC: Este pin suministra energía al motor, con un rango de voltaje de 5 a 35 V.
  • Pin GND: Este pin es una conexión a tierra común que debe conectarse a 0 V (GND).
  • Pin 5V: Este pin suministra energía al módulo L298N y puede ser alimentado por una fuente de 5V desde un Arduino Nano.

Pines del Motor A (Canal A):

  • Pines ENA: Estos pines se utilizan para regular la velocidad del Motor A. Al quitar el puente y conectar este pin a una entrada PWM, nos permitirá controlar la velocidad del Motor A.
  • Pines IN1 & IN2: Estos pines se utilizan para gestionar la dirección de giro del Motor A. Cuando uno de ellos está en ALTO y el otro está en BAJO, el Motor A girará. Si ambas entradas están en ALTO o BAJO, el Motor A se detendrá.
  • Pines OUT1 & OUT2: Estos pines están conectados al Motor A.

Pines del Motor B (Canal B):

  • Pines ENB: Estos pines se pueden usar para controlar la velocidad del Motor B. Al quitar el jumper y conectarlos a la entrada PWM, podemos ajustar la velocidad del Motor B.
  • Pines IN3 e IN4: Estos pines se utilizan para gestionar la dirección de giro del Motor B. Cuando uno de ellos está en ALTO mientras el otro está en BAJO, el Motor B girará. Si ambas entradas están en ALTO o en BAJO, el Motor B dejará de moverse.
  • Pines OUT3 y OUT4: Estos pines están conectados al Motor B.

El controlador L298N tiene dos entradas de alimentación:

  • Una para el motor de corriente continua, con un rango de voltaje de 5 a 35 V (pines VCC y GND).
  • Una para el funcionamiento interno del módulo L298N, con un rango de voltaje de 5 a 7 V (pines 5 V y GND).

Retire todos los puentes del controlador L298N para simplificar.

También podemos controlar dos motores de corriente continua por separado y de forma simultánea utilizando un Arduino Nano y un controlador L298N. Para manipular cada motor, solo necesitamos tres pines del Arduino Nano.

※ Nota:

El resto de este tutorial se centrará en el control de un motor de CC utilizando el canal A. Se deben seguir pasos similares para controlar el otro motor de CC.

Cómo controlar la velocidad de un motor de corriente continua a través del controlador L298N

Es fácil controlar la velocidad de un motor de corriente continua produciendo una señal PWM en el pin ENA del L298N. Para hacer esto:

  • Conecta un pin del Arduino Nano al ENA del L298N
  • Genera una señal PWM al pin ENA mediante la función analogWrite(). El controlador L298N amplificará la señal PWM al motor DC.
analogWrite(ENA_PIN, speed); // speed is a value from 0 to 255

La velocidad es un número que va de 0 a 255. Cuando la velocidad es 0, el motor dejará de moverse. Cuando la velocidad es 255, el motor girará a su velocidad máxima.

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

La rotación de un motor puede controlarse aplicando un nivel lógico alto o bajo a los pines IN1 e IN2. La tabla siguiente muestra 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

En consecuencia:

  • Código de Arduino para hacer que el motor A gire en sentido horario.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Código de Arduino para hacer que el motor A gire en sentido antihorario.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Nota:

La dirección en sentido horario/antihorario del motor de corriente continua puede invertirse conectando los pines OUT1 y OUT2 a dos pines del motor de forma opuesta.

Cómo detener el giro de un motor de corriente continua

Dos métodos para detener un motor de corriente continua:

  • Reducir su velocidad a cero
analogWrite(ENA_PIN, 0);
  • Configura los pines IN1 e IN2 al mismo valor, ya sea 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

Saque los tres jumpers del módulo L298N antes de conectar los cables.

Diagrama de cableado de Arduino Nano para motor DC con el controlador L298N

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

Código de Arduino Nano

El código siguiente realiza lo siguiente, uno por uno:

  • Aumenta la velocidad de un motor de corriente continua
  • Cambia la dirección
  • Disminuye la velocidad de un motor de corriente continua
  • Detiene el motor de corriente continua
/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-dc-motor */ const int ENA_PIN = 6; // The Arduino Nano pin connected to the EN1 pin L298N const int IN1_PIN = 5; // The Arduino Nano pin connected to the IN1 pin L298N const int IN2_PIN = 4; // The Arduino Nano pin connected to the IN2 pin L298N // The setup function runs once on reset or power-up void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // The loop function repeats indefinitely 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

  • Quita los tres puentes del módulo L298N.
  • Copia el código y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir del IDE de Arduino para subir el código al Arduino Nano.
  • Deberías observar:
    • El motor de corriente continua acelerará y luego girará a su velocidad máxima durante 1 segundo.
    • La dirección del motor de corriente continua cambiará.
    • El motor de corriente continua girará a su velocidad máxima durante 1 segundo en la dirección opuesta.
    • El motor de corriente continua se ralentizará.
    • El motor de corriente continua se detendrá durante 1 segundo.
    • Este proceso se repetirá continuamente.

    ※ Nota:

    Este tutorial le enseña cómo ajustar la velocidad de un motor de corriente continua respecto a su velocidad máxima. Para controlar la velocidad absoluta (en revoluciones por segundo), necesitaremos usar un controlador PID y un codificador. Un tutorial separado cubrirá el control de la velocidad absoluta del motor de corriente continua.

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!