Arduino Nano ESP32 - Motor de corriente continua
Este tutorial proporciona instrucciones sobre cómo usar Arduino Nano ESP32 para controlar un motor de corriente continua utilizando un controlador de motor L298N. En detalle, aprenderemos a controlar la velocidad y la dirección del motor de corriente continua. Aprenderemos a controlar un solo motor de corriente continua y, a continuación, dos motores de corriente continua usando un único controlador L298N.
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
Pinout del motor de corriente continua
Un motor de corriente continua tiene dos cables: Negativo(negro), y Positivo(rojo)

Cómo funciona un motor de corriente continua
La dirección y la velocidad del motor de corriente continua estarán determinadas por cómo le suministramos energía. Las imágenes a continuación muestran la relación detallada entre la potencia y la velocidad/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 con Arduino Nano ESP32
En primer lugar, el motor de corriente continua funciona con un voltaje alto que puede quemar el Arduino Nano ESP32. Por lo tanto, no podemos conectar directamente el motor de corriente continua al Arduino Nano ESP32. Necesitamos un controlador de hardware entre el motor de corriente continua y el Arduino Nano ESP32. El controlador tiene tres responsabilidades:
- Protección del Arduino Nano ESP32 frente a la alta tensión
- Recibir la señal del Arduino Nano ESP32 para cambiar la polaridad de la fuente de alimentación y controlar la dirección del motor.
- Amplificar la señal PWM del Arduino Nano ESP32 (corriente y voltaje) para controlar la velocidad del motor.

Hay muchos controladores de 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.
Disposición de pines del controlador L298N
La imagen de abajo muestra el pinout 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) se controla mediante los pines IN1, IN2, ENA, OUT1, OUT2.
- El segundo motor (llamado motor B) se controla mediante 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 en el pin ENA/ENB del L298N. Podemos hacerlo de la siguiente manera:
- Conectar el pin de salida digital de un ESP32 al pin ENA/ENB del L298N
- Creando una señal PWM para el pin ENA/ENB utilizando la función analogWrite(). Esta señal PWM pasa a través del driver L298N y aumenta la corriente y el voltaje antes de llegar al motor DC
El valor de speed está 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 de un motor de corriente continua mediante el controlador L298N
La dirección del motor DC A puede controlarse mediante los pines IN1 e IN2. La siguiente tabla 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 |
Del mismo modo, la tabla a continuación 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 la dirección del motor A en sentido horario.
- Controlando la dirección del motor A en sentido antihorario
※ Nota:
La dirección del motor de corriente continua es opuesta si el cableado entre el motor DC y el controlador L298N está en sentido inverso. En ese caso, intercambia 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 e IN2 para que estén en el mismo nivel bajo o alto
- o
Cómo controlar un motor de corriente continua utilizando un controlador L298N.
Diagrama de Cableado
Hay tres jumpers en el módulo L298N. Quítalos todos antes de hacer el cableado.

This image is created using Fritzing. Click to enlarge image
Código para Arduino Nano ESP32
Veamos el código de abajo que hace lo siguiente una por una:
- Arduino Nano ESP32 controla cada vez más la velocidad del motor de corriente continua.
- Arduino Nano ESP32 invierte la dirección del motor de corriente continua.
- Arduino Nano ESP32 controla la velocidad del motor de corriente continua disminuyendo.
- Arduino Nano ESP32 detiene el motor de corriente continua.
Pasos R\u00e1pidos
- Si es la primera vez que usas Arduino Nano ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
- Quita los tres jumpers del módulo L298N.
- Copia el código anterior y pégalo en Arduino IDE.
- Compila y sube el código a la placa Arduino Nano ESP32 haciendo clic en el botón Subir en Arduino IDE
- Observa el motor de corriente continua; verás:
- El motor de corriente continua se acelera y gira a la velocidad máxima durante 2 segundos
- La dirección del motor de corriente continua se invierte
- El motor de corriente continua gira en la dirección inversa a la velocidad máxima durante 2 segundos
- El motor de corriente continua se desacelera
- El motor de corriente continua se detiene durante 2 segundos
- El proceso anterior se repite indefinidamente.
※ Nota:
Este tutorial proporciona instrucciones sobre cómo controlar la velocidad de un motor de corriente continua de forma relativa. Para controlar la velocidad absoluta (revoluciones por segundo), se necesita usar un controlador PID y la retroalimentación de un codificador.
Cómo controlar dos motores de corriente continua con 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.