12/24V 7A 160W双路直流电机驱动模块

简介

该模块具有极小的尺寸,仅5.5cm×5.5cm。支持电压范围7-24V,具有欠压保护功能。双路电机接口,每路额定输出电流 7A;瞬间峰值电流可达50A。类似 L298N 控制逻辑,每路都支持三线控制调速、正反转及刹车。控制信号使用灌电流驱动方式,支持绝大多数单片机直接驱动;使用光耦对全部控制信号进行隔离,避免电机动作时的回流电流对控制信号造成干扰;并且本模块具有静电泄放回路,避免了因静电造成危险。 配合Arduino源码,可以轻松实现电机控制。创客时代,我们能为您带来更多!

产品参数



引脚说明



标号 名称 功能描述
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 反转调速

  1. 在进行正反转切换的时候最好先刹车0.1S以上再反转,否则有可能损坏驱动器。在PWM为100%时,如果要切换电机方向,必须先刹车0.1S以上再给反转信号。
  2. 当使用 5V单片机时,驱动板+5V接电源+5V;当使用 3.3V单片机时,驱动板+5V接电源+3.3V。

使用教程

本教材将教会您使用本模块的最基本的电机控制功能。

准备

接线图



  1. 使用开关电源芯片为模块内部电路提供5V电源,建议在电源处串联20A的保险丝。
  2. 驱动板+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或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!

更多

DFshopping_car1.png DFRobot商城购买链接