Arduino实践详细说明(三)L298N驱动直流电机

目录

  • Arduino实践详细说明(三)L298N驱动直流电机
    • L298N说明
      • 接口说明
      • 正反转及调速说明
    • 接线说明
      • 方法一
      • 方法二
    • 源代码
    • 最后

Arduino实践详细说明(三)L298N驱动直流电机

本实验基于arduino uno 利用l298n驱动板来控制直流电机的正反转和速度

L298N说明

这是其中一个板,貌似还有蓝色绿色什么的,但是使用方法差不多
Arduino实践详细说明(三)L298N驱动直流电机_第1张图片

接口说明

  1. 12V供电: 这个是外部电源为驱动板供电的接口,一般驱动电压实际可以接受的输入范围是7~12V,此时可以使能板载的5V逻辑供电。当使用大于12V的驱动电压时,为了避免稳压芯片损坏,首先要拔掉板载5V输出使能的跳线帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑供电。

  2. 5V供电 :(引出5V电压接到Arduino板,给Arduino板供电(驱动电压7~12V)连接到UNO板的5V)同时Arduino板也要引出一条GND线,连接到L298N的GND与外部电源共地。

  3. ENA ENB通道A使能,通道B使能:当你不用PWM时不需要拔掉跳线帽,当你需要PWM时,将需要拔掉跳线帽,接到Arduino上的模拟输入输出接口,我的只需要外侧接上,下面回介绍。 (就是用来调速的)

  4. IN1 IN2 IN3 IN4逻辑输出口:其中IN1 IN2 控制一个电机的转动,IN3 IN4 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。(控制转向)

  5. 板载5V::用于板载5V供电,如果把掉跳线帽,需要在5V输出接口上,通过外部电源输入5V电压为L298N驱动版供电。
    通常是为了避免稳压芯片损坏,当输入驱动电压大于12V时,拔掉跳线帽,需要使用其它电源输入5V电压为驱动板供电。

正反转及调速说明

若in1与in2还有ENA控制A电机

IN1 IN2 IN3 IN4 ENA ENB A电机 B电机
HIGH LOW \ \ n m 正转速度为n \
LOW HIGH \ \ n m 反转速度为n \
LOW LOW \ \ n m 不转 \
HIGH HIGH \ \ n m 不转 \
LOW HIGH \ \ 0 m 不转 \

对于B电机也同理

接线说明

接线方法很多,下面介绍种

值得注意的是有时候Arduino接5V供电是不足以提供电压的,则按方法二

方法一

如图

Arduino实践详细说明(三)L298N驱动直流电机_第2张图片

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

方法二

如图

Arduino实践详细说明(三)L298N驱动直流电机_第3张图片

  1. L298N的GND和板载5V使能(拔掉跳线帽)分别连接arduino的GND,5V
  2. 12V电源连接L298N的12v供电与GND
  3. 将数字3、4脚接L298模块的IN1和IN2(逻辑输入)脚,
  4. 10接ENA脚(通道A使能)
  5. 电机接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 等等
接到有帮助的话 求点赞 求关注❤️ 求分享
有问题可以评论
点关注,不迷路
如果有任何错误,如何建议,请批评指教,不胜感激 !

你可能感兴趣的:(arduino)