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:
- Cómo funciona un motor de corriente continua
- Cómo usar ESP8266 y el controlador L298N para controlar un motor de corriente continua
- Cómo programar ESP8266 para controlar la velocidad y la dirección de un motor de corriente continua
- Cómo programar ESP8266 para controlar dos motores de corriente continua simultáneamente
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
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.

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

※ 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

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.
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.
- Código ESP8266 para rotar en sentido antihorario.
※ 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
- Configura ambos pines IN1 e IN2 al mismo valor, ya sea bajo o alto.
- O
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.

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