ESP8266 - Motor de corriente continua

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

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
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 ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

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

Esquema de pines del motor de corriente continua

Un motor de corriente continua tiene dos cables, siendo el positivo usualmente rojo y el negativo negro.

Diagrama de pines del motor de corriente continua

Cómo funciona

Al adquirir un motor de corriente continua, es esencial identificar el voltaje al que opera. Por ejemplo, consideremos un motor de 12 V de CC.

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

  • Conecte 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.
  • Conecte 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.

Como se mencionó anteriormente, al intercambiar el polo de alimentación entre dos cables del motor de corriente continua, la dirección de giro se invierte. Este es un método utilizado para controlar la dirección del motor de corriente continua, no de forma manual sino mediante programación.

Si la potencia suministrada a los motores de corriente continua es inferior a 12 V, el motor seguirá girando, pero no a su velocidad máxima. Esto implica que al ajustar el voltaje de la fuente de alimentación, podemos variar la velocidad del motor de corriente continua. Sin embargo, este enfoque no se utiliza comúnmente debido a la complejidad de controlar el voltaje de la fuente de alimentación. Por lo tanto, el voltaje de la fuente de alimentación se mantiene constante y la velocidad del motor de corriente continua se regula mediante una señal PWM. Cuanto mayor sea el ciclo de trabajo de la PWM, más rápido girará el motor de corriente continua.

Cómo controlar un motor de corriente continua.

Cómo controlar un motor de corriente continua con ESP8266

Controlar un motor de corriente continua implica dos componentes: velocidad y dirección. El ESP8266 puede generar una señal PWM, pero su voltaje y corriente son bajos, por lo que no se puede usar para controlar el motor de corriente continua. Para cubrir la brecha entre el ESP8266 y el motor de corriente continua, se necesita un controlador de hardware. Este controlador realiza dos tareas:

  • Ampliación de la señal PWM del ESP8266 en términos de corriente y voltaje para el control de velocidad
  • Recepción de la señal de control desde el ESP8266 para invertir la polaridad de la fuente de alimentación para el control de dirección
ESP8266 NodeMCU: control de motor de corriente continua

※ Nota:

  • Este tutorial puede usarse para cualquier motor de corriente continua. El motor de 12 V es solo un ejemplo.
  • Cuando estés controlando un motor de 5 V, aunque la salida del pin del ESP8266 sea de 5 V (que es la misma tensión que el motor de corriente continua), aún necesitas tener un controlador entre el ESP8266 y el motor de corriente continua porque el pin del ESP8266 no proporciona suficiente corriente para el motor de corriente continua.

Existen numerosos tipos de chips, y módulos como el L293D y el L298N pueden usarse como controladores de motores de corriente continua. En este tutorial, utilizaremos el controlador L298N.

Acerca del controlador L298N

El controlador L298N puede usarse para gestionar motores de corriente continua y motores paso a paso. Este tutorial explica 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 y simultánea, denominados motor A y motor B. Este controlador tiene un total de 13 pines.

Los pines comunes para ambos motores:

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

Pines del Motor A (Canal A):

  • Pines ENA: Este pin se puede usar para controlar la velocidad del Motor A. Al quitar el jumper y conectarlo a una entrada PWM, podemos ajustar la velocidad del Motor A.
  • Pines IN1 e IN2: Estos pines se utilizan para controlar la dirección de la rotación del Motor A. Cuando uno de estos pines está en ALTO y el otro en BAJO, el Motor A girará. Si ambos pines están en ALTO o en BAJO, el Motor A no se moverá.
  • Pines OUT1 y OUT2: Estos pines están conectados al Motor A.

Pines del Motor B (Canal B):

  • Estos pines se utilizan para proporcionar energía al Motor B.
  • Pines ENB: Este pin puede conectarse a una entrada PWM para controlar la velocidad del Motor B. Quitar el puente activará esto.
  • Pines IN3 e IN4: Estos pines se utilizan para determinar la dirección de giro del Motor B. Cuando uno de ellos está en ALTO y el otro en BAJO, el Motor B girará. Si ambas entradas están en ALTO o BAJO, el Motor B se detendrá.
  • Pines OUT3 y OUT4: Estos pines están conectados al Motor B y le proporcionan energía.

El controlador L298N tiene dos fuentes de alimentación de entrada:

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

Retire todos los conectores de puente del controlador L298N para simplificar. Esto es necesario, ya que los conectores de puente se utilizan para usos avanzados u otros propósitos.

Podemos controlar dos motores de corriente continua de forma independiente y simultánea utilizando un ESP8266 y un controlador L298N. Para regular cada motor, solo necesitamos tres pines del ESP8266.

※ Nota:

El resto de este tutorial se centrará en controlar un motor de corriente continua utilizando el canal A. Se pueden seguir pasos similares para controlar el otro motor de corriente continua.

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

Es fácil regular la velocidad de un motor de corriente continua generando una señal PWM en el pin ENA del L298N. Esto puede hacerse mediante:

  • Conectar un pin de ESP8266 al ENA del L298N
  • Generar una señal PWM al pin ENA utilizando la función analogWrite(). El controlador L298N amplificará la señal PWM para el motor de corriente continua.
analogWrite(ENA_PIN, speed); // speed is a value from 0 to 255

La velocidad puede variar entre 0 y 255. Cuando la velocidad es 0, el motor dejará de moverse. A una velocidad de 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 ajustarse proporcionando un nivel lógico alto/bajo a los pines IN1 e IN2. La tabla a continuación 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 ESP8266 para girar en sentido horario.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Código ESP8266 para rotar en sentido antihorario.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Nota:

La rotación del motor de corriente continua puede invertirse conectando los pines OUT1 y OUT2 de forma opuesta.

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

Hay dos métodos para detener un motor de corriente continua:

  • Reduce la velocidad a 0
analogWrite(ENA_PIN, 0);
  • Configura ambos 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

Es esencial retirar los tres jumpers del módulo L298N antes de conectar los cables.

Diagrama de cableado del ESP8266 NodeMCU, motor DC y controlador L298N

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

Código ESP8266

El siguiente código hace:

  • 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
/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-dc-motor */ #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 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(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_ENA, OUTPUT); } // The loop function repeats indefinitely void loop() { digitalWrite(PIN_IN1, HIGH); // control the motor's direction in clockwise digitalWrite(PIN_IN2, LOW); // control the motor's direction in clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(PIN_ENA, speed); // speed up delay(10); } delay(2000); // rotate at maximum speed 2 seconds in clockwise direction // change direction digitalWrite(PIN_IN1, LOW); // control the motor's direction in anti-clockwise digitalWrite(PIN_IN2, HIGH); // control the motor's direction in anti-clockwise delay(2000); // rotate at maximum speed for 2 seconds in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(PIN_ENA, speed); // speed down delay(10); } delay(2000); // stop motor 2 second }

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta los componentes tal como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora mediante un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Selecciona la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM correspondiente.
  • Retira los tres jumpers del módulo L298N.
  • Copia el código y ábrelo en el Arduino IDE.
  • Haz clic en el botón Upload del Arduino IDE para compilar y subir el código al ESP8266.
  • Deberías observar:
    • El motor DC acelerará y luego girará a su velocidad máxima durante 1 segundo.
    • La dirección del motor DC cambiará.
    • El motor DC girará a su velocidad máxima en la dirección opuesta durante 1 segundo.
    • El motor DC se desacelerará.
    • El motor DC se detendrá durante 1 segundo.
    • Este proceso se repetirá.

    ※ Nota:

    Este tutorial le enseña cómo controlar la velocidad de un motor de corriente continua en relación con su velocidad máxima. Para controlar la velocidad absoluta (en revoluciones por segundo), necesitaremos usar un controlador PID y un codificador. El control de la velocidad absoluta del motor de corriente continua se abordará en un tutorial separado.

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 Función

※ 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!