(SKU:DRI0018)双路15A大功率电机驱动 Lite
来自DFRobot Product Wiki
目录 |
简介
该大功率电机驱动模块除了可用于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",电机会有相应的动作。
疑难解答
更多问题及有趣的应用,请访问论坛