欢迎光临
我们一直在努力

L298N驱动板

122906t4rdvsrbn4p64gsb

本产品购买链接:点我购买

==产品概述==
L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
==规格参数==
#驱动芯片:全新L298N双H桥直流电机驱动芯片
#驱动部分端子供电范围Vs:+5V~+35V ;如需要板内取电,则供电范围Vs:+7V~+35V
#驱动部分峰值电流Io:2A
#逻辑部分端子供电范围Vss:+5V~+7V(可板内取电+5V)
#逻辑部分工作电流范围:0~36mA
#控制信号输入电压范围:*低电平:-0.3V≤Vin≤1.5V*高电平:2.3V≤Vin≤Vss
#使能信号输入电压范围:*低电平:-0.3≤Vin≤1.5V(控制信号无效)*高电平:2.3V≤Vin≤Vss(控制信号有效)
#最大功耗:20W(温度T=75℃时)
#存储温度:-25℃~+130℃
#驱动板尺寸:53mm*43mm
#驱动板重量:35g
#其他扩展:控制方向指示灯、逻辑部分板内取电接口。
==接口定义==

122907v5udrkqhresea5ne

==使用方法==
本模块集成了一个内置的5V供电。当你的驱动电压为7V-35V的时候,可以使能板载的5V逻辑供电,当使用板载5V供电之后,接口中的+5V供电不要输入电压,但是可以引出5V电压供外部使用

*当ENA 使能 IN1 IN2 控制 OUT1 OUT2
*当ENB 使能 IN3 IN4 控制 OUT3 OUT4
===接线方法(驱动直流电机)===
由于本模块是2路的H桥驱动,所以可以同时驱动两个电机,使能ENA ENB之后,
*可以分别从IN1 IN2输入PWM信号驱动电机1的转速和方向
*可以分别从IN3 IN4输入PWM信号驱动电机2的转速和方向

==Arduino+L298N驱动直流电机接线方式==

TB2fXX6tVXXXXaCXpXXXXXXXXXX_!!14857792

 

信号如图所示:

122907hidhuavu22wriflr

===例子程序===

/*
为了看清电机的转动,使用了 带齿轮减速箱的微型马达,
由于它的需要的电压低,可以直接使用Arduino板上的5伏电压。
 
L298N也使Arduino板载 5伏电压
 
L298N电机驱动自己焊的
*/
 
//这个电机驱动板使用数字端口4 5 6 7 控制电机
//正确连接你的电机到M1+ M1- M2+ M2-
//数字端口10 11 连接到L298N的使能端接口
//下载代码到Arduino/
// 控制两个直流电机的正反转
//本程序作用两个直流电机先正转一秒 暂停一秒 反转一秒 如此反复
 
 
int IN1=4;
int IN2=5;
int IN3=6;
int IN4=7;
 
int EN1=10;//使能端口1
int EN2=11;//使能端口2
//数字端口4与5为一组,6与7为另一组
//数字端口10 11 作为直流电机的使能端
void Motor1(boolean reverse)//电机1正转
{
  if (reverse) //正转
  {
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
  }
 
  else //反转
  {
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
  }
 
}
 
void Motor2(boolean reverse)//电机2转动
{
  if (reverse) //正转
  {
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
  }
 
  else //反转
  {
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
  }
 
}
 
void aa()//先正转1秒停1秒后反转1秒
{
 
 
  //正转
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH);
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  delay(1000);
 
  //暂停一秒
  stopMotor(true);
  delay(1000);
  stopMotor(false);//恢复电机使能端高电平
 
 
  //反转
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
 
 
  delay(1000);
  // 暂停
  stopMotor(true);
  delay(1000);
  stopMotor(false);
 
 
 
}
 
void stopMotor(boolean r)//电机停转
{
  if (r)
  {
    analogWrite(EN1,0);
    analogWrite(EN2,0);
  }
  else
  {
    analogWrite(EN1,255);
    analogWrite(EN2,255);
  }
}
 
void setup()
{
  int i;
 
 
  for (i=4;i<=7;i++) //为Ardunio 电机驱动板
    pinMode(i,OUTPUT); //设置数字端口4,5,6,7为输出模式
 
  for (i=4;i<=7;i++)
    digitalWrite(i,HIGH); //设置数字端口4,5,6,7为HIGH,电机保持不动
 
 
  pinMode(10,OUTPUT);//设置数字端口10  11为输出模式
  pinMode(11,OUTPUT);
  Serial.begin(9600);
 
}
 
void loop()
{
  aa();//两个直流电机正转1秒 暂停一秒 反转一秒
 
 
}

===程序效果===
第一个程序效果:直流电机先正转一秒 暂停一秒 反转一秒 如此反复

————————www.zhongbest.com—————————————————

实验二:Arduino MEGA2560开发板+L298N驱动直流电机带PWM调速测试程序
==实验方法==
IN1-4 分别接Arduino mega2560的PIN4-7,将L298N上的ENA、ENB插口上的插销拔掉,随后,将ENA与Arduino mega2560 的PIN11脚相连,ENB与Arduino mega2560的PIN8相连。
==接线方式==
IN1接PIN4;
IN2接PIN5;
IN3接PIN6;
IN4接PIN7;
ENA接PIN11;
ENB接PIN8;
==Arduino mega2560+L298N  PWM调速接线方式==

Arduino mega2560 l298N_11

请将板载5V接MEGA2560的VIN口,不要擅自接5V口。不然电流过大要烧板。VIN口供电范围(6-9V)。

==例子程序==

#define motor1pin1 4                              //定义IN1引脚
#define motor1pin2 5                              //定义IN2引脚
#define motor1pwm 11                             //定义ENA引脚(我的是Mega2560的板子)
#define motor2pin1 6                              //定义IN3引脚
#define motor2pin2 7                               //定义IN4引脚
#define motor2pwm 8                              //定义ENB引脚
void motor(int motorpin1,int motorpin2,int motorpwm,int val)  //定义一个电机转动函数
{
pinMode(motorpin1,OUTPUT);                              //输出第一个引脚
pinMode(motorpin2,OUTPUT);                             //输出第二个引脚
digitalWrite(motorpin2,0);                                    //将第二个引脚置低
digitalWrite(motorpin1,1);                                     //将第一个引脚抬高
analogWrite(motorpwm,val);                                //给EN引脚设定模拟值,设定转速
}
void setup()

}
void loop()
{
  int i;
  for(i=100;i<=255;i++) //让电机的转速从100到255转动,A,B转速不一样,完成转向
  {
    motor(motor2pin1,motor2pin2,motor2pwm,255);             //电机B保持255匀速转动
    motor(motor1pin1,motor1pin2,motor1pwm,i);                  //电机A从100到255转动
    delay(500);                                                              //间隔500ms
  }
  for(i=100;i<=255;i++)                                  //让电机从100到255转动,功能同上
  {
    motor(motor1pin1,motor1pin2,motor1pwm,255);
    motor(motor2pin1,motor2pin2,motor2pwm,i);
    delay(500);
  }
  motor(motor1pin1,motor1pin2,motor1pwm,255);                 //电机A以最大转速转动
  delay(5000);
  motor(motor1pin2,motor1pin1,motor1pwm,255);                //电机A反向转动
  delay(5000);
}

===程序效果===
第二个程序效果:直流电机B电机匀速转动,A电机从100加速到255转动.

实验3:Arduino UNO开发板+L298N驱动5V步进电机。

==实验方法==

5V步进电机蓝线、粉线、橙线、黄线分别接L298N驱动板的OUT1、OUT2、OUT3、OUT4;L298N驱动板的+5V接UNO的5V,GND接UNO的GND;L298N的IN1、IN2、IN3、IN4分别接UNO的数字引脚8、9、10、11。如果将UNO上的数字引脚4,接高电平,步进电机顺时针转动;接低电平,步进电机逆时针转动;不接,则默认逆时针转动(低电平)。

==接线方式==

L298N-STEPER

==例子程序==

int Pin0 = 8;

int Pin1 = 9;

int Pin2 = 10;

int Pin3 = 11;

int _step =0 ;

boolean dir; //= -1;正反转

int stepperSpeed = 2;//电机转速

void setup()

{

pinMode(Pin0, OUTPUT);

pinMode(Pin1, OUTPUT);

pinMode(Pin2, OUTPUT);

pinMode(Pin3, OUTPUT);

pinMode(4,INPUT);

}

void loop()

{

if(digitalRead(4))

{

up();

}else{

down();

}

}

void down()

{

switch(_step){

case 0:

//stepperSpeed++;

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);//32A

break;

case 1:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);//10B

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

case 2:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 3:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 4:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 5:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 6:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 7:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

default:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

}

_step++;

if(_step>7){   _step=0;  }

delay(stepperSpeed);

}

void up()

{

switch(_step){

case 0:

//stepperSpeed++;

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);//32A

break;

case 1:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);//10B

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 2:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 3:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, HIGH);

digitalWrite(Pin3, LOW);

break;

case 4:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

case 5:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, HIGH);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

case 6:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

case 7:

digitalWrite(Pin0, HIGH);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, HIGH);

break;

default:

digitalWrite(Pin0, LOW);

digitalWrite(Pin1, LOW);

digitalWrite(Pin2, LOW);

digitalWrite(Pin3, LOW);

break;

}

_step++;

if(_step>7){   _step=0;  }

delay(stepperSpeed);

}

==实验效果==

第三个实验效果:上电后,步进电机默认逆时针转动。如UNO上数字引脚4接高电平,则顺时针转动。

==注意事项==

1.当你的驱动电压(上图标识为12V输入,实际可以接受的输入范围是7-12V)为7V-12V的时候,可以使能板载的5V逻辑供电,当使用板载5V供电之后,接口中的+5V
供电不要输入电压,但是可以引出5V电压供外部使用。(这种即为常规应用!)

2.当驱动电压高于12V,小于等于24V(芯片手册中提出可以支持到35V,但是按照经

验一般298保守应用最大电压支持到24V已经很了不起!)时,比如要驱动额定电压为

18V的电机。首先必须拔除板载5V输出使能的跳线帽。然后在5V输出端口外部接入5V

5V使能即 一个电平为5V的控制信号,当此信号输入有效时,且电机驱动模块中电源供电正常时,电机驱动模块输出电流。否则即使电源供电正常,电机上也无电流。
电压对L298N内部逻辑电路供电。(这种是高压驱动的非常规应用!)

==相关下载==

L298N驱动板资料:http://pan.baidu.com/s/1ceqzzK

未经允许不得转载:Arduino-Maker » L298N驱动板

分享到:更多 ()

评论 11

评论前必须登录!

 

  1. #3

    各位大神,这个程序下载后两个马达在抽动是怎么回事?

    xiaopangzi1年前 (2016-10-10)
    • 你的供电够么?

      arron1年前 (2016-10-10)
      • 完全按照上图连线,程序是直接复制粘贴的。电池与马达直接连的话就能转

        xiaopangzi1年前 (2016-10-10)
        • 所以我问的是你的供电啊,一般电机不转,就是供电不足,你怎么供电的?

          arron1年前 (2016-10-10)
          • 新买的9V电池一节,难道是因为这个? 谢谢你耐心的指导

            xiaopangzi1年前 (2016-10-10)
          • 确实是电池的电压不行,我改用9V外接电源线插在DC头上就能正常转了。谢谢你的耐心指导!

            xiaopangzi1年前 (2016-10-10)
  2. #2

    第二个程序应该为A速度递增,但是实际效果感觉都是匀速。IO口8能调速吗?不是得带~的才能吗

    xiaopangzi1年前 (2016-10-10)
    • 使能A、B(ENA、ENB)可以输入PWM脉宽信号对电机进行调速,我们的程序只是基础的测试。我的板子是MEGA2560

      arron1年前 (2016-10-11)
  3. #1

    请问一下第一个程序,使能EA,EB怎么跟10和11引脚连接,直接拿杜邦线的有针的那一头插在EA使能端那个帽子上吗,差不紧呀,并且一直没反应求解答

    wisteria7个月前 (05-13)
    • 拔掉跳线帽。有两个针,与IN1-4并排的那个针为ENA,

      arron7个月前 (05-31)

中贝斯特线上商城

旗舰店企业店