高性能 Arduino 直流电机控制库
组件与物料
| Arduino UNO | ×1 |
| 通用 NPN 三极管 | ×2 |
| 通用 PNP 三极管 | ×2 |
| 1kΩ 电阻 | ×2 |
| 1N4007 高压大电流二极管 | ×4 |
应用与在线服务
- Arduino IDE
项目简介

本库专为工业运动控制设计,提供 16 种功能,能以最通用的方式控制任意直流电机。只需将 DC_Motor 文件夹复制到 Arduino 库目录 (如 C:\arduino-1.6.7\libraries) 即可使用。
库功能清单
- 控制电机旋转方向
- 0-100% 速度控制
- 软启动:指定时间内从 0% 加速至目标速度
- 平滑停止:指定时间内从当前速度减速至 0%
- 点动控制:指定方向短时抖动
- 直流制动:紧急/即时停止
函数详细说明
基础控制 (无速度控制)
DC_Motor(int pin1, int pin2):声明驱动电机的 Arduino 引脚DC_Motor(int pin1, int pin2, int speed_flag):声明 PWM 输出引脚并启用速度控制 (speed_flag=1)start_motor(int dir):指定方向启动 (1=正转, 0=反转)forward():正转启动reverse():反转启动dc_break():瞬间停止电机*stop_motor():停止电机jogg_full_speed(int dir):全速点动 5 秒
* 注:需电机内部支持直流制动,且驱动电路需配备动态制动电阻 (DBR) 并做好保护,防止损坏。
带速度控制的高级功能 (需 PWM 引脚并用第 2 种构造函数初始化)
set_speed(int speed):设定速度 0-100%forward_with_set_speed():以设定速度正转reverse_with_set_speed():以设定速度反转run_motor(int dir, int speed):指定方向和速度运行jogg_set_speed(int dir, int speed):指定速度点动motor_speed_zero():将速度降至 0 (停止)*soft_start(int dir, int speed, int time_in_sec):软启动,指定秒数从 0 加速到目标速度smooth_stop(int time_in_sec):平滑停止,指定秒数从当前速度减速到 0
* 带速度控制时不可用 stop_motor(),因其输出数字信号;应用 motor_speed_zero() 输出最小模拟量使电机停转。
示例程序
1) 全速正反转 (无速度控制)
#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) 设定速度正反转 (带速度控制)
#include
DC_Motor motor2(9, 10, 1); // PWM 引脚 9,10 且启用速度标志
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) 双电机点动控制
#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) 软启动与平滑停止
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.soft_start(1, 90, 10); // 正向 10 秒加速至 90%
delay(3000);
motor2.smooth_stop(5); // 5 秒平滑停止
motor2.soft_start(0, 50, 6); // 反向 6 秒加速至 50%
delay(3000);
motor2.smooth_stop(3); // 3 秒平滑停止
}
代码
库文件为 C 头文件,仅供下载,无在线预览。
原理图
Arduino UNO 配合 H 桥驱动器控制直流电机

制造工艺
- Satellite CCRMA 套件:构建传感器驱动的音频效果器
- 自制家用作业书写机:Arduino + GRBL 控制的笔绘仪
- 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
- Arduino 通用双极性步进电机控制库——精准控制转速、角度、圈数与方向
- Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
- 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
- Arduino UNO 自制循迹小车:从零构建自主巡线机器人
- Arduino + Android 蓝牙控制 Roomba Create 2 扫地机器人完整指南
- Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
- Bolt IoT + Arduino UNO 实现 6 路 LED 无级调光
- Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
- 适用于 Arduino 项目的智能室内导航机器人套件