Arduino直流电机驱动-双路15A大功率电机驱动 Lite
外观
简介
- 该大功率电机驱动模块除了可用于4WD移动机器人平台,战斗机器人,智能车竞赛等场合还可用于驱动水泵,电风扇,传送带等。有了它,您可以搭建很多与电机相关的项目。
- 该模块采用了4块高性能大电流的驱动芯片BTS7960,具有短路过温过压保护功能。
- 只需4个数字IO口便可同时控制2路电机运转。经实测单路最大输出电流可达15A@13.8V,响应性好,制动性能强。
- 同时两路电机都具有正反转指示灯,
- 方便您在不接电机的情况下进行调试。
- 该大功率电机驱动模块直接兼容Arduino。
产品参数
- 驱动部分输入电压:4.8-35V
- 最大输出电流:单路15A@13.8V
- 单路峰值电流:20A@13.8V
- PWM最高输出频率:25KHZ
- 驱动输出接口:5.08mm间距接线柱
- 控制接口:4路数字信号(其中2路PWM信号)
- 驱动形式:双路大功率H桥驱动
- 尺寸:73x68x14mm
- 保护功能:
- 电流隔离功能,保护单片机
- 双路电流检测诊断功能
- 短路,过热,过压保护
使用教程
连线图
LA_IS,LB_IS,RA_IS和RB_IS这几个引脚是用于电流检测的。正常情况下,IS引脚输出是一个低电平。非正常情况下,输出的高电平。下面的样例代码会详细指出如何操作。
样例代码
PWM 模式
/*
# 这个样例代码用来测试DC Motor Driver 2x15A_lite module.
# Editor : Phoebe
# Date : 2012.11.6
# Ver : 0.1
# Product: DC Motor Driver 2x15A_lite
# SKU : DRI0018
# 描述:
# 用DC Motor Driver module驱动2个电机
# 硬件:
1. Arduino UNO
2. DC Motor Driver 2x15A_lite
3. DC motors x2
步骤:
1.M1_PWM & M2_PWM --> digital 5 & 6
2.M1_EN & M2_EN --> digital 4 & 7
3.+5V --> 5V
4.GND --> GND
下面代码中注释掉的部分是用来电流检测的,如需检测连接:
1.LA_IS 和 RA_IS 同时连接 数字口2
2.LB_IS 和 RB_IS 同时连接 数字口3
*/
int E1 = 5; //M1 速度控制
int E2 = 6; //M2 速度控制
int M1 = 4; //M1 方向控制
int M2 = 7; //M1 方向控制
int counter=0;
void stop(void)
{ //停止
digitalWrite(E1,0);
digitalWrite(M1,LOW);
digitalWrite(E2,0);
digitalWrite(M2,LOW);
}
void advance(char a,char b) //前进
{
analogWrite (E1,a); //PWM 速度控制
digitalWrite(M1,HIGH);
analogWrite (E2,b);
digitalWrite(M2,HIGH);
}
void back_off (char a,char b) //后退
{
analogWrite (E1,a);
digitalWrite(M1,LOW);
analogWrite (E2,b);
digitalWrite(M2,LOW);
}
void turn_L (char a,char b) //左转
{
analogWrite (E1,a);
digitalWrite(M1,LOW);
analogWrite (E2,b);
digitalWrite(M2,HIGH);
}
void turn_R (char a,char b) //右转
{
analogWrite (E1,a);
digitalWrite(M1,HIGH);
analogWrite (E2,b);
digitalWrite(M2,LOW);
}
void current_sense() // 电流检测
{
int val1=digitalRead(2);
int val2=digitalRead(3);
if(val1==HIGH || val2==HIGH){
counter++;
if(counter==3){
counter=0;
Serial.println("Warning");
}
}
}
void setup(void)
{
int i;
for(i=4;i<=7;i++)
pinMode(i, OUTPUT);
Serial.begin(19200); //Set Baud Rate设置波特率
Serial.println("Run keyboard control");
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
}
void loop(void)
{
/*
static unsigned long timePoint = 0; // 如需电流检测,不要忘记引脚连接
if(millis() - timePoint > 1000){
current_sense();
timePoint = millis();
}
*/
if(Serial.available()){
char val = Serial.read();
if(val != -1)
{
switch(val)
{
case 'w'://Move Forward
advance (255,255); //以最大速度前进
break;
case 's'://Move Backward
back_off (255,255); //以最大速度后退
break;
case 'a'://Turn Left
turn_L (100,100);
break;
case 'd'://Turn Right
turn_R (100,100);
break;
case 'z':
Serial.println("Hello");
break;
case 'x':
stop();
break;
}
}
else stop();
}
}
PLL控制模式
DRI0018电机驱动也支持PLL相位锁相环控制模式。电机连线与PWM控制一样。程序代码如下:
引脚 | 功能 |
---|---|
4 | 电机1启用控制 |
5 | 电机1方向控制 |
6 | 电机2方向控制 |
7 | 电机2启用控制 |
演示代码:
//Standard DLL Speed control
int E1 = 4; //M1 Speed Control
int E2 = 7; //M2 Speed Control
int M1 = 5; //M1 Direction Control
int M2 = 6; //M1 Direction Control
//When m1p/m2p is 127, it stops the motor
//when m1p/m2p is 255, it gives the maximum speed for one direction
//When m1p/m2p is 0, it gives the maximum speed for reverse direction
void DriveMotorP(byte m1p, byte m2p)//Drive Motor Power Mode
{
digitalWrite(E1, HIGH);
analogWrite(M1, (m1p));
digitalWrite(E2, HIGH);
analogWrite(M2, (m2p));
}
void setup(void) {
int i;
for(i=4;i<=7;i++)
pinMode(i, OUTPUT);
Serial.begin(19200); //Set Baud Rate
}
void loop(void) {
if(Serial.available()){
char val = Serial.read();
if(val!=-1){
switch(val){
case 'w'://Move Forward
DriveMotorP(0xff,0xff); // Max speed
break;
case 'x'://Move Backward
DriveMotorP(0x00,0x00);
; // Max speed
break;
case 's'://Stop
DriveMotorP(0x7f,0x7f);
break;
}
}
}
}
程序功能:串口输入"w","x","s",电机会有相应的动作。
本文整理于DFRobot wiki
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号