_SKU_DRI0018_双路15A大功率电机驱动_Lite - jimaobian/DFRobotWikiCn GitHub Wiki

DRI00181.jpg

简介

该大功率电机驱动模块除了可用于4WD移动机器人平台,战斗机器人,智能车竞赛等场合还可用于驱动水泵,电风扇,传送带等。有了它,您可以搭建很多与电机相关的项目。该模块采用了4块高性能大电流的驱动芯片BTS7960,具有短路过温过压保护功能。只需4个数字IO口便可同时控制2路电机运转。经实测单路最大输出电流可达[email protected],响应性好,制动性能强。同时两路电机都具有正反转指示灯,方便您在不接电机的情况下进行调试。该大功率电机驱动模块直接兼容Arduino。

产品参数

  • 驱动部分输入电压:4.8-35V
  • 最大输出电流:单路[email protected]
  • 单路峰值电流:[email protected]
  • PWM最高输出频率:25KHZ
  • 驱动输出接口:5.08mm间距接线柱
  • 控制接口:4路数字信号(其中2路PWM信号)
  • 驱动形式:双路大功率H桥驱动
  • 尺寸:73x68x14mm
  • 保护功能:
    • 电流隔离功能,保护单片机
    • 双路电流检测诊断功能
    • 短路,过热,过压保护

使用教程

连线图

DRI0018 Diagram

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控制模式

PLL模式

DRI0018电机驱动也支持PLL相位锁相环控制模式。电机连线与PWM控制一样。程序代码如下:

引脚 功能
4 电机1启用控制
5 电机1方向控制
6 电机2方向控制
7 电机2启用控制

"PLL模式"

演示代码:

//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",电机会有相应的动作。

疑难解答

更多问题及有趣的应用,请访问论坛

更多

File:nextredirectltr.png 购买 DFRobot商城购买链接

category: Product_Manual category: DFR_Series category: Sensors category:source category:Diagram