ESP32 - Motor de corriente continua
Este tutorial explica cómo usar ESP32 para controlar un motor de corriente continua utilizando el controlador de motor L298N. En detalle, aprenderemos a controlar la velocidad y la dirección del motor de corriente continua. Aprenderemos a controlar un único motor de corriente continua y, luego, dos motores de corriente continua utilizando un único controlador L298N.
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del motor de corriente continua
Disposición de pines del motor de corriente continua
Un motor de CC incluye dos cables: Negativo(negro), y Positivo(rojo)

Cómo funciona un motor de corriente continua
La dirección y la velocidad de un motor de corriente continua se determinarán por la forma en que le suministramos energía. A continuación se muestran las imágenes que detallan la relación entre la potencia, la velocidad y la dirección.

En el caso de usar PWM, cuanto mayor sea el ciclo de trabajo del PWM, mayor será la velocidad a la que gira el motor.
Cómo controlar la velocidad y la dirección de un motor de corriente continua usando ESP32
En primer lugar, el motor de corriente continua funciona con un voltaje alto que puede quemar el ESP32. No podemos conectar directamente el motor de corriente continua al ESP32. Necesitamos un controlador de hardware entre el motor de corriente continua y el ESP32. El controlador cumple tres funciones:
- Proteger el ESP32 de la alta tensión
- Recibir la señal desde el ESP32 para cambiar el polo de la fuente de alimentación y controlar la dirección del motor.
- Amplificar la señal PWM del ESP32 (corriente y voltaje) para controlar la velocidad del motor.

Hay muchos controladores para motores de corriente continua. Este tutorial utilizará el controlador L298N.
Acerca del controlador L298N
Un solo controlador L298N puede controlar dos motores de corriente continua o un motor paso a paso. Este tutorial utiliza este controlador para controlar el motor de corriente continua.
Pinout del controlador L298N
La imagen de abajo muestra la disposición de pines del controlador L298N.

La explicación detallada de cada pin está disponible en este Arduino - DC motor tutorial
Un solo controlador L298N puede controlar dos motores DC de forma independiente:
- El primer motor (llamado motor A) es controlado por los pines IN1, IN2, ENA, OUT1, OUT2.
- El segundo motor (llamado motor B) es controlado por los pines IN3, IN4, ENB, OUT3, OUT4.
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 al pin ENA/ENB del L298N. Podemos hacer esto de la siguiente manera:
- Conectar el pin de salida digital de un ESP32 al pin ENA/ENB del L298N
- Creando una señal PWM al pin ENA/ENB utilizando la función analogWrite()
- Esta señal PWM pasa a través del controlador L298N y aumenta la corriente y el voltaje antes de llegar al motor DC
El speed es un valor entre 0 y 255. Si es 255, el motor funciona a la velocidad máxima. Si es 0, el motor se detiene.
Cómo controlar la dirección del motor de corriente continua mediante el controlador L298N
La dirección del motor A de corriente continua puede ser controlada por los pines IN1 e IN2. La tabla siguiente muestra la relación entre la dirección del motor y la señal en los pines IN1 e IN2.
| IN1 pin | IN2 pin | Direction |
|---|---|---|
| HIGH | LOW | DC Motor A rotates in clockwise direction |
| LOW | HIGH | DC Motor A rotates in anticlockwise direction |
| HIGH | HIGH | DC Motor A stops |
| LOW | LOW | DC Motor A stops |
De igual manera, la tabla de abajo es para el motor de corriente continua B.
| IN3 pin | IN4 pin | Direction |
|---|---|---|
| HIGH | LOW | DC Motor B rotates in clockwise direction |
| LOW | HIGH | DC Motor B rotates in anticlockwise direction |
| HIGH | HIGH | DC Motor B stops |
| LOW | LOW | DC Motor B stops |
Aprendamos a programar para controlarlo. Tomemos el motor A como ejemplo. El motor B es similar.
- Controlando el motor A en sentido horario
- Controlando la dirección del motor A en sentido antihorario
※ Nota:
La dirección del motor de CC es opuesta si el cableado entre el motor de CC y el controlador L298N está en orden inverso. En ese caso, intercambie los pines OUT1 y OUT2.
Cómo detener un motor de corriente continua
Hay dos formas de detener un motor de corriente continua.
- Controlando la velocidad a cero
- Controlar los pines IN1 y IN2 para que tengan el mismo nivel: bajo o alto
- O
Cómo controlar un motor de corriente continua utilizando el controlador L298N.
Diagrama de cableado
Hay tres jumpers en el módulo L298N. Retire todos ellos antes de realizar el cableado.

This image is created using Fritzing. Click to enlarge image
Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.
Traduce al español el contenido que se indica a continuación; devuelve únicamente el resultado:
Código ESP32
Veamos el código que se encuentra abajo y que hace lo siguiente uno por uno:
- El ESP32 controla cada vez más la velocidad del motor de corriente continua.
- El ESP32 invierte la dirección del motor de corriente continua.
- El ESP32 controla la velocidad del motor de corriente continua de forma decreciente.
- El ESP32 detiene el motor de corriente continua.
Pasos R\u00e1pidos
- Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
- Quita los tres jumpers del módulo L298N.
- Copia el código anterior y pégalo en el IDE de Arduino.
- Compila y sube el código a la placa ESP32 haciendo clic en el botón Upload en el IDE de Arduino
- Observa el motor DC. Verás:
- El motor DC se acelera y gira a la velocidad máxima durante 2 segundos
- La dirección del motor DC se invierte
- El motor DC gira en la dirección inversa a la velocidad máxima durante 2 segundos
- El motor DC se desacelera
- El motor DC se detiene durante 2 segundos
- El proceso anterior se repite de forma infinita.
※ Nota:
Este tutorial te enseña cómo controlar la velocidad del motor de corriente continua de forma relativa. Para controlar la velocidad absoluta (revoluciones por segundo), es necesario utilizar un controlador PID y la retroalimentación de un codificador.
Cómo controlar dos motores de corriente continua utilizando 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.