Librería Arduino de Alto Rendimiento para Control de Motor DC
Componentes y suministros
| Arduino UNO | × | 1 |
| Transistor NPN de propósito general | × | 2 |
| Transistor PNP de propósito general | × | 2 |
| Resistencia 1k ohm | × | 2 |
| Diodo 1N4007 – Alta tensión, alta corriente | × | 4 |
Aplicaciones y servicios en línea
- Arduino IDE
Sobre este proyecto




Aquí presento una librería de Arduino para controlar motores DC. La librería tiene tantas facilidades y flexibilidad que puede controlar cualquier motor DC de la manera requerida. Está diseñada según los requerimientos de control de movimiento industrial. La librería tiene 16 funcionalidades diferentes para controlar el motor de la manera más versátil. Aquí está la lista de facilidades:
- Controla la dirección de rotación del motor
- Controla la velocidad del motor de 0-100%
- Proporciona arranque suave al motor en tiempo especificado – la velocidad aumenta de 0% al nivel deseado en el tiempo especificado
- Proporciona parada suave al motor en tiempo especificado – la velocidad disminuye de la velocidad actual a 0% en el tiempo especificado
- Aplica control jog al motor en cualquier dirección – el motor da un tirón en la dirección especificada
- Aplica FRENO DC (parada inmediata o de emergencia) al motor
Las descripciones breves de todas las funciones de la librería se dan a continuación. Algunos ejemplos explican cómo se controla el motor usando esta librería. Hay tres vídeos que muestran la demostración de estos ejemplos. Al final, se sugiere el circuito que usa un puente H ampliamente utilizado para controlar motores DC.
Para usar esta librería en tu sketch de Arduino, simplemente copia la carpeta DC_Motor en el directorio raíz de la carpeta de librerías de Arduino, como C:\arduino-1.6.7\libraries.
Descripción de las funciones de la librería:
- DC_Motor(int pin1, int pin2): declara los pines de Arduino que controlan el motor DC
- DC_Motor(int pin1, int pin2, int speed_flag): declara los pines de salida analógica de Arduino que controlan el motor DC
- start_motor(int dir): inicia la rotación del motor en la dirección especificada. Si dirección es 1 – motor gira adelante y viceversa
- forward(): inicia la rotación del motor en dirección adelante
- reverse(): inicia la rotación del motor en dirección reversa
- dc_break(): detiene instantáneamente el motor en rotación*
- stop_motor(): detiene el motor en rotación
- jogg_full_speed(int dir): aplica un tirón al motor durante 5 seg a velocidad máxima en la dirección requerida
- *Nota: esta función solo funcionará si el motor DC tiene arreglos internos para tal freno DC. Además, el circuito controlador debe diseñarse con resistencias de frenado dinámico (DBR) y se debe tener cuidado completo para que el motor o circuito no se dañen.
Todas las funciones anteriores proporcionan control simple al motor DC. No controlan la velocidad. Las siguientes 8 funciones controlan velocidad y dirección. Pero se requiere seleccionar pines de salida analógica de Arduino para usar estas funciones. El motor DC debe inicializarse con la 2ª función junto con speed_flag establecido en 1.
- set_speed(int speed): establece la velocidad del motor DC entre 0 y 100%
- forward_with_set_speed(): inicia la rotación del motor DC adelante a la velocidad establecida
- reverse_with_set_speed(): inicia la rotación del motor DC en reversa a la velocidad establecida
- run_motor(int dir, int speed): rota el motor DC en cualquier dirección a la velocidad establecida
- jogg_set_speed(int dir, int speed): aplica un tirón al motor en cualquier dirección a la velocidad establecida
- motor_speed_zero()*: reduce la velocidad del motor a 0 – detiene el motor
- soft_start(int dir, int speed, int time_in_sec): aumenta la velocidad del motor de 0 al nivel deseado en el tiempo especificado en cualquier dirección. El tiempo debe seleccionarse en segundos
- smooth_stop(int time_in_sec): reduce la velocidad del motor de la velocidad actual a 0 en el tiempo especificado. El tiempo debe seleccionarse en segundos
*Nota: no se puede usar stop_motor() aquí porque da salida digital mientras esta función da salida analógica mínima para hacer la velocidad del motor cero. Al controlar el motor DC con velocidad, no solo detengas el motor sino haz su velocidad cero.
Ejemplos:
1) Rotar motor DC adelante y reversa a velocidad máxima (sin control de velocidad)
/* Este programa rota el motor DC adelante por 5 seg
luego para por 2 seg y vuelve a rotar reversa por 5 seg, para por 2 seg continuamente
creado por A M Bhatt (+91-9998476150), Gujarat, INDIA
el 12/10/2016
*/
#include
DC_Motor motor(8, 12);
void setup() {}
void loop() {
motor.forward();
delay(5000);
motor.stop_motor();
delay(2000);
motor.reverse();
delay(5000);
motor.stop_motor();
delay(2000);
}
2) Rotar motor DC adelante y reversa a velocidad establecida (con control de velocidad)
/* Este programa rota el motor DC adelante por 5 seg al 40% de velocidad
luego para por 2 seg y rota reversa por 5 seg al 80% de velocidad continuamente
creado por A M Bhatt (+91-9998476150), Gujarat, INDIA
el 12/10/2016
*/
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.set_speed(40);
motor2.forward_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
motor2.set_speed(80);
motor2.reverse_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
}
3) Aplicar jog al motor en ambas direcciones con y sin control de velocidad
/* Este programa aplica jog a dos motores DC diferentes
* aplica jog al 1er motor a velocidad máxima en ambas direcciones
* y luego jog al 2do motor con 80% velocidad en reversa
* y 30% velocidad en adelante
* creado por Ashutosh M Bhatt (+91-9998476150), Gujarat (INDIA)
* el 22/10/2016
*/
#include
DC_Motor motor(8, 12);
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor.jogg_full_speed(1);
motor.jogg_full_speed(0);
motor2.jogg_set_speed(0, 80);
motor2.jogg_set_speed(1, 30);
}
4) Aplicar arranque suave y parada suave al motor
/* Este programa da arranque suave al motor y aumenta su velocidad
de 0 a 90% en 10 seg en dirección adelante
luego da parada suave de 90% a 0 en 5 seg
de nuevo arranque suave de 0 a 50% en 6 seg en reversa
y finalmente parada suave de 50% a 0 en 3 seg
creado por A M Bhatt (+91-9998476150), Gujarat, INDIA
el 12/10/2016
*/
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.soft_start(1, 90, 10);
delay(3000);
motor2.smooth_stop(5);
motor2.soft_start(0, 50, 6);
delay(3000);
motor2.smooth_stop(3);
}
Código
Librería de Control de Motor DC (Archivo de cabecera C)
Esta librería controla la velocidad y dirección de todo tipo de motores DC
No hay vista previa (solo descarga).
Esquemáticos
Arduino UNO y driver puente H usado para controlar Motor DC

Proceso de manufactura
- Construya Efectos de Audio Controlados por Sensores con el Kit Satellite CCRMA
- Construye tu propia máquina de escribir deberes casera (DIY Homework Writing Machine)
- Robot de Detección Humana con Arduino Uno: Integración de Sensores Paso a Paso
- Librería Completa para Motor Paso a Paso Bipolar en Arduino
- Vehículo Controlado por Android con Raspberry Pi, Arduino y Motor Shield: Guía Completa
- Robot evasor de obstáculos con servo: Construcción con Arduino y HC-SR04
- Robot Seguidor de Línea Autónomo con Arduino UNO: Guía Paso a Paso
- Controla tu Roomba Create 2 con Arduino y Android: Guía Completa
- Control Preciso de Servo con Arduino y MPU6050 (SG90 / MG996R)
- Control de brillo LED sin interrupciones con Bolt IoT y Arduino UNO
- Kit de Robot de Navegación Interior Inteligente para Proyectos Arduino