L298N直流减速电机驱动板学习笔记113万+纪念

可以控制两个电机,控制很简单的

输出A 输出B 分别接两个直流电机。

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 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。

直流电机——直流电机的转速和电压成正比。

PWM就是改变占空比改变电压来改变转速

不使用PWM输入的测试代码,这时把跳线帽插上,为了方便,我引出两条线直接短接就行

下面是代码:尽量简单吧,会前进,左转后退停止动动手改改就行

 //测试电机,让两个电机直走
int input1 = 2; // 定义uno的pin 2 向 input1 输出 
int input2 = 4; // 定义uno的pin 4 向 input2 输出
int input3 =7;  // 定义uno的pin 7 向 input3 输出
int input4 =8;  // 定义uno的pin 8 向 input4 输出
 
void setup() {
Serial.begin (9600);
//初始化各IO,模式为OUTPUT 输出模式
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
 
}
 
void loop() {

  //forward 前进
  digitalWrite(input1,HIGH); //给高电平
  digitalWrite(input2,LOW);  //给低电平
  digitalWrite(input3,HIGH); //给高电平
  digitalWrite(input4,LOW);  //给低电平
  delay(3000);   //延时1秒
  
}

 以下是PWM调速的小车,速度从快到慢!接线端口是外侧那个!我的是这样!

 //测试电机,让两个电机直走
int input1 = 2; // 定义uno的pin 2 向 input1 输出 
int input2 = 4; // 定义uno的pin 4 向 input2 输出
int input3 =12;  // 定义uno的pin 7 向 input3 输出
int input4 =13;  // 定义uno的pin 8 向 input4 输出
 
//PWM
int ENA1=5;  //电机A使能PWM输出,需要接在Arduino上有~标识的IO口,才有PWM
int ENB1=6;  //电机A使能PWM输出

 
void setup() {
Serial.begin (9600);
//初始化各IO,模式为OUTPUT 输出模式
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
 
}
 
//测试函数
void text() {

  //forward 前进
  digitalWrite(input1,HIGH); //给高电平
  digitalWrite(input2,LOW);  //给低电平
  digitalWrite(input3,HIGH); //给高电平
  digitalWrite(input4,LOW);  //给低电平
 // delay(3000);   //延时1秒
  
}


void loop()
{
  text();//测试电机,给个提示
  delay(2000);
while(1){
   for(int PWM=255;PWM>100;PWM--)
   {
    Serial.println(PWM);
    analogWrite(ENA1,PWM);
    analogWrite(ENB1,PWM);
    digitalWrite(input1,HIGH);
    digitalWrite(input2,LOW);
    digitalWrite(input3,HIGH);
    digitalWrite(input4,LOW);
    delay(50);//延时,速度变化的快慢,PWM变化速度

  }
  for(int PWM=100;PWM<255;PWM++)
  {
    Serial.println(PWM);
    analogWrite(ENA1,PWM);
    analogWrite(ENB1,PWM);
    digitalWrite(input1,HIGH);
    digitalWrite(input2,LOW);
    digitalWrite(input3,HIGH);
    digitalWrite(input4,LOW);
    delay(50);

  }
 }
//delay(3000);  //延时0.5秒
}

猜你喜欢

转载自blog.csdn.net/qq_42807924/article/details/82470476