Arduino - Motor de corriente continua
En este tutorial, vamos a aprender:
- Cómo funciona un motor de corriente continua
- Cómo controlar la velocidad y la dirección de un motor de corriente continua.
- Cómo controlar un motor de corriente continua utilizando un controlador L298N.
- Cómo controlar dos motores de corriente continua utilizando un controlador L298N.
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 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
El motor de corriente continua tiene dos cables:
- Cable positivo: normalmente rojo
- Cable negativo: normalmente negro

Cómo funciona
Cuando compras un motor de corriente continua, necesitas saber a qué voltaje funciona un motor de corriente continua. Tomemos como ejemplo un motor de 12 V de CC.
Cuando alimentas el motor de corriente continua de 12 V con una fuente de 12 V:
- 12V y GND al cable positivo y al cable negativo, respectivamente: el motor de corriente continua gira a la velocidad máxima en sentido horario
- 12V y GND al cable negativo y al cable positivo, respectivamente: el motor de corriente continua gira a la velocidad máxima en sentido antihorario
Como se describió arriba, cuando el polo de alimentación se intercambia entre dos cables del motor de corriente continua, la dirección de giro se invierte. Este método se utiliza para controlar la dirección del motor de corriente continua. Por supuesto, no cambiándolo manualmente, sino mediante programación.
Si suministramos energía a motores de corriente continua por debajo de 12 V, el motor sigue girando pero no a la velocidad máxima. Esto significa que si cambiamos la tensión de la fuente de alimentación, podemos cambiar la velocidad del motor de CC. Sin embargo, este método no se utiliza en la práctica debido a la dificultad de controlar la tensión de la fuente de alimentación. En su lugar, fijamos la tensión de la fuente de alimentación y controlamos la velocidad del motor de CC mediante una señal PWM. Cuanto mayor sea el ciclo de trabajo del PWM, mayor será la velocidad de giro del motor de CC.

Cómo controlar un motor de corriente continua con Arduino
El control de un motor de corriente continua implica dos factores: velocidad y dirección.
Arduino puede generar la señal PWM.
Sin embargo, esta señal PWM tiene una tensión y una corriente bajas, por lo que no podemos usarla para controlar el motor de corriente continua.
Necesitamos usar un controlador de hardware entre Arduino y el motor de corriente continua.
El controlador realiza dos funciones:
- Amplificar la señal PWM desde Arduino (corriente y voltaje) para el control de velocidad
- Recibir la señal de control desde Arduino para invertir el polo de la fuente de alimentación para el control de la dirección

※ Nota:
- Este tutorial se puede aplicar a todos los motores de corriente continua. El motor de 12 V es solo un ejemplo.
- Cuando controlas un motor de 5 V, aunque el pin de Arduino entrega 5 V (el mismo voltaje que el motor de corriente continua), aún necesitas un driver entre Arduino y el motor de corriente continua porque el pin de Arduino no proporciona suficiente corriente para el motor de corriente continua.
Hay muchos tipos de chips; los módulos (p. ej., L293D, L298N) pueden usarse como controladores de motores de corriente continua. En este tutorial, usaremos el controlador L298N.
Acerca del controlador L298N
El controlador L298N se puede usar para controlar un motor de corriente continua y un motor paso a paso. En este tutorial, aprendemos cómo usarlo para controlar el motor de corriente continua.
Pinout del controlador L298N

El controlador L298N puede controlar dos motores DC de forma independiente al mismo tiempo, llamados motor A y motor B. El controlador L298N tiene 13 pines:
Los pines comunes para ambos motores:
- Pin VCC: suministra energía para el motor. Puede estar entre 5 y 35V.
- Pin GND: es un pin de tierra común; debe conectarse a GND (0V).
- Pin 5V: suministra energía para el módulo L298N. Puede ser alimentado por 5V desde Arduino.
Pines del Motor A (Canal A):
- Los pines ENA se utilizan para controlar la velocidad del Motor A. Al quitar el puente y conectar este pin a la entrada PWM, podremos controlar la velocidad del Motor A.
- Los pines IN1 e IN2 se utilizan para controlar la dirección de giro del Motor A. Cuando uno de ellos está en alto y el otro en bajo, el Motor A girará. Si ambas entradas están en alto o en bajo, el Motor A se detendrá.
- Los pines OUT1 y OUT2 están conectados al Motor A.
Pines del motor B (Canal B):
- Pines ENB: se utilizan para controlar la velocidad del Motor B. Quitar el puente y conectar este pin a la entrada PWM nos permitirá controlar la velocidad del Motor B.
- Pines IN3 y IN4: se utilizan para controlar la dirección de giro del Motor B. Cuando uno de ellos está ALTO y el otro BAJO, el Motor B girará. Si ambas entradas están en ALTO o en BAJO, el Motor B se detendrá.
- Pines OUT3 y OUT4: están conectados al Motor B.
Como se describió anteriormente, el controlador L298N tiene dos fuentes de alimentación de entrada:
- Uno para el motor de corriente continua (pines VCC y GND): de 5 a 35 V.
- Uno para el funcionamiento interno del módulo L298N (pines de 5 V y GND): de 5 a 7 V.
El controlador L298N también tiene tres jumpers para usos avanzados u otros propósitos. Para simplificar, por favor retire todos los jumpers del controlador L298N.
Podemos controlar dos motores de corriente continua de forma independiente al mismo tiempo utilizando un Arduino y un controlador L298N. Para controlar cada motor, solo necesitamos tres pines del Arduino.
※ Nota:
El resto de este tutorial controla un motor de corriente continua utilizando el canal A. Controlar el otro motor de corriente continua es similar.
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 del L298N. Podemos hacerlo de la siguiente manera:
- Conecta un pin de Arduino al pin ENA del L298N
- Genera una señal PWM en el pin ENA usando la función analogWrite(). El controlador L298N amplifica la señal PWM para el motor de corriente continua
La velocidad es un valor entre 0 y 255. Si la velocidad es 0, el motor se detiene. Si la velocidad es 255, el motor gira a la velocidad máxima.
Cómo controlar la dirección del motor de corriente continua mediante el controlador L298N
La dirección de giro de un motor puede controlarse aplicando un nivel lógico alto o bajo a los pines IN1 e IN2. La tabla siguiente ilustra 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 |
- El motor A gira en sentido horario
- El motor A gira en sentido antihorario
※ Nota:
La dirección de giro se invierte si el pin OUT1 y el pin OUT2 se conectan a dos pines del motor de corriente continua de forma inversa. En ese caso, solo es necesario intercambiar los pines OUT1 y OUT2 o cambiar la señal de control en los pines IN1 e IN2 en el código.
Cómo detener el giro de un motor de CC
Hay dos formas de detener un motor de corriente continua.
- Controla la velocidad a 0
- Controla los pines IN1 e IN2 al mismo valor (bajo o alto)
- O
Cómo controlar un motor de corriente continua usando el controlador L298N.
Diagrama de cableado
Por favor, retire los tres jumpers del módulo L298N antes de cablear.

This image is created using Fritzing. Click to enlarge image
Código de Arduino
Lo que hace el código a continuación:
- Acelerar el motor de corriente continua
- Cambiar la dirección
- Disminuir la velocidad del motor de corriente continua
- Detener el motor
Pasos R\u00e1pidos
- Retire los tres jumpers del módulo L298N.
- Copie el código anterior y ábralo con Arduino IDE.
- Haga clic en el botón Subir en Arduino IDE para cargar el código en Arduino.
- Verá:
- El motor DC se acelera y luego gira a la velocidad máxima durante 1 segundo
- La dirección del motor DC cambia
- El motor DC gira a la velocidad máxima durante 1 segundo en la dirección inversa
- El motor DC se ralentiza
- El motor DC se detiene durante 1 segundo
- El proceso anterior se ejecuta repetidamente.
※ Nota:
En este tutorial, aprendemos a controlar la velocidad del motor de corriente continua relativa a la velocidad máxima. Para controlar la velocidad absoluta (revoluciones por segundo), necesitamos usar un controlador PID y un codificador. El control de la velocidad absoluta del motor de corriente continua se presentará en otro tutorial.
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.