简介
该模块具有极小的尺寸,仅5.5cm×5.5cm。支持电压范围7-24V,具有欠压保护功能。双路电机接口,每路额定输出电流 7A;瞬间峰值电流可达50A。类似 L298N 控制逻辑,每路都支持三线控制调速、正反转及刹车。控制信号使用灌电流驱动方式,支持绝大多数单片机直接驱动;使用光耦对全部控制信号进行隔离,避免电机动作时的回流电流对控制信号造成干扰;并且本模块具有静电泄放回路,避免了因静电造成危险。
配合Arduino源码,可以轻松实现电机控制。创客时代,我们能为您带来更多!
产品参数
- 工作电压(VM):DC 7 ~ 24 V,欠压保护
- 支持电压范围: 6.5 ~ 27V
- 控制信号高电平(Vhi):DC 3.0 ~ 6.5V(兼容3.3V和5V TTL电平)
- 控制信号低电平(Vli):DC 0 ~ 0.8V
- 输出通道数:2路
- 每路控制型号电流:3mA ~ 11mA
- 每路额定输入电流:7A
- 每路峰值电流:50A
- 支持PWM调速方式
- PWM最小有效脉宽:5us
- 工作温度:-25 ~ 80°C
- 尺寸:55mm * 55mm
- 固定孔:M3
- 重量:32g
引脚说明
标号 | 名称 | 功能描述 |
---|---|---|
1 | 9-24V | 电机供电电源输入正 |
2 | PGND | 电机供电电源输入地 |
3 | OUT1 | 电机1电源线 |
4 | OUT2 | 电机1电源线 |
5 | OUT3 | 电机2电源线 |
6 | OUT4 | 电机2电源线 |
7 | ENA | 电机1 PWM控制端 |
8 | IN1 | "电机1 控制端" |
9 | IN2 | "电机1 控制端" |
10 | ENB | 电机2 PWM控制端 |
11 | IN3 | "电机2 控制端" |
12 | IN4 | "电机2 控制端" |
13 | +5V | 参考电压输入+5V或3.3V |
控制方式
IN1和IN2为电机正反转、制动(或称刹车)控制信号。ENA为速度调节(PWM)。控制逻辑下表。其中0为低电平、1为高平、×为任意电平,悬空时为低电平。(IN3、IN4、ENB同理)
IN1 | IN2 | ENA | OUT1、OUT2电机输出 |
---|---|---|---|
0 | 0 | x | 刹车 |
1 | 1 | x | 悬空 |
1 | 0 | 1 | 全速正转 |
0 | 1 | 1 | 全速反转 |
1 | 0 | PWM | 正转调速 |
0 | 1 | PWM | 反转调速 |
⚠
- 在进行正反转切换的时候最好先刹车0.1S以上再反转,否则有可能损坏驱动器。在PWM为100%时,如果要切换电机方向,必须先刹车0.1S以上再给反转信号。
- 当使用 5V单片机时,驱动板+5V接电源+5V;当使用 3.3V单片机时,驱动板+5V接电源+3.3V。
使用教程
本教材将教会您使用本模块的最基本的电机控制功能。
准备
- 硬件
- UNO x1
- 7A双路直流电机驱动 x1
- 连接线 若干
- 软件
- Arduino IDE 版本1.6.9 点击下载Arduino IDE
接线图
⚠
- 使用开关电源芯片为模块内部电路提供5V电源,建议在电源处串联20A的保险丝。
- 驱动板+5V接上参考电平,如果单片机是5V单片机则驱动板接5V,如果是3.3V单片机则驱动板接3.3V
样例代码
/*
@file Motor driver DRI0042_Test.ino
@brief DRI0042_Test.ino Motor control program
control motor positive inversion
@author bernie.chen@dfrobot.com
@version V1.0
@date 2016-8-10
*/
const int IN1 = 5;
const int IN2 = 4;
const int ENA = 6;
const int IN3 = 8;
const int IN4 = 7;
const int ENB = 9;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(ENB, OUTPUT);
}
void loop() {
Motor1_Brake();
Motor2_Brake();
delay(100);
Motor1_Forward(200);//电机正转,PWM调速
Motor2_Forward(200);//电机正转,PWM调速
delay(1000);
Motor1_Brake();
Motor2_Brake();
delay(100);
Motor1_Backward(200);//电机反转,PWM调速
Motor2_Backward(200);//电机反转,PWM调速
delay(1000);
}
void Motor1_Forward(int Speed) //电机1正转,Speed值越大,电机转动越快
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, Speed);
}
void Motor1_Backward(int Speed) //电机1反转,Speed值越大,电机转动越快
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, Speed);
}
void Motor1_Brake() //电机1刹车
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
void Motor2_Forward(int Speed) //电机2正转,Speed值越大,电机转动越快
{
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENB, Speed);
}
void Motor2_Backward(int Speed) //电机2反转,Speed值越大,电机转动越快
{
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENB, Speed);
}
void Motor2_Brake()
{
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!