黄工无刷电机学习
直播中

唯爱萌meng

9年用户 1017经验值
擅长:可编程逻辑
私信 关注
[问答]

arduino uno如何利用l298n驱动板来控制直流电机的正反转和速度?

arduino uno如何利用l298n驱动板来控制直流电机的正反转和速度?

回帖(1)

李婧

2021-10-20 10:06:16
本实验基于arduino uno 利用l298n驱动板来控制直流电机的正反转和速度
L298N说明

这是其中一个板,貌似还有蓝色绿色什么的,但是使用方法差不多





接口说明



  • 12V供电: 这个是外部电源为驱动板供电的接口,一般驱动电压实际可以接受的输入范围是7~12V,此时可以使能板载的5V逻辑供电。当使用大于12V的驱动电压时,为了避免稳压芯片损坏,首先要拔掉板载5V输出使能的跳线帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑供电。
  • 5V供电 :(引出5V电压接到Arduino板,给Arduino板供电(驱动电压7~12V)连接到UNO板的5V)同时Arduino板也要引出一条GND线,连接到L298N的GND与外部电源共地。
  • ENA ENB通道A使能,通道B使能:当你不用PWM时不需要拔掉跳线帽,当你需要PWM时,将需要拔掉跳线帽,接到Arduino上的模拟输入输出接口,我的只需要外侧接上,下面回介绍。 (就是用来调速的)
  • IN1 IN2 IN3 IN4逻辑输出口:其中IN1 IN2 控制一个电机的转动,IN3 IN4 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。(控制转向)
  • 板载5V::用于板载5V供电,如果把掉跳线帽,需要在5V输出接口上,通过外部电源输入5V电压为L298N驱动版供电。
    通常是为了避免稳压芯片损坏,当输入驱动电压大于12V时,拔掉跳线帽,需要使用其它电源输入5V电压为驱动板供电。

正反转及调速说明

若in1与in2还有ENA控制A电机
[tr]IN1IN2IN3IN4ENAENBA电机B电机[/tr]
HIGHLOWnm正转速度为n
LOWHIGHnm反转速度为n
LOWLOWnm不转
HIGHHIGHnm不转
LOWHIGH0m不转
对于B电机也同理
接线说明

接线方法很多,下面介绍种
值得注意的是有时候Arduino接5V供电是不足以提供电压的,则按方法二
方法一

如图







  • 9V~12v电池正极接L298N的12v供电,负极接L298N的GND
  • L298N的5v供电接arduino的5v,arduino的GND也连接L298N的GND
  • 然后IN1~IN4接arduino的2 ~13都可以,根据需求而定,代码中定义即可
  • L298N的输出A,输出B分别连接一个直流电机
  • ENA,ENB分别连接arduino的模拟输出,以控制速度

方法二

如图







  • L298N的GND和板载5V使能(拔掉跳线帽)分别连接arduino的GND,5V
  • 12V电源连接L298N的12v供电与GND
  • 将数字3、4脚接L298模块的IN1和IN2(逻辑输入)脚,
  • 10接ENA脚(通道A使能)
  • 电机接OUT1和OUT2输出口,

源代码

只提供了正反转的往复功能,其他功能自由发挥

#define IN1 3  //定义IN1为3口
#define IN2 4  //定义IN2为4口
#define  ENA  10 //定义ENA为10口
void setup()
{  
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(ENA,OUTPUT);
}
void loop()
{   //正转速度为满速的 200/255
   digitalWrite(IN1,HIGH);  //控制电机正转
   digitalWrite(IN2,LOW);
   analogWrite(ENA,200);   //控制电机转速,迳我自己测试超过150电机才开始转


   delay(5000);
   digitalWrite(IN1,LOW);   //电机反转
   digitalWrite(IN2,HIGH);
   analogWrite(ENA,200);
    delay(5000);
    digitalWrite(IN1,LOW); //控制电机停下
    digitalWrite(IN2,LOW);
    analogWrite(ENA,255);
   
}
最后

持续更新arduino 树莓派 python 等等
接到有帮助的话 求点赞
举报

更多回帖

发帖
×
20
完善资料,
赚取积分