Arduino:L298N模块使用
L298N是ST公司生产的芯片。主要特点是:工作电压高,最高工作电压可达46V,并且可以驱动两个二相电机,可以直接通过电源来调节输出电压;可以直接用单片机的I/O口提供信号,而且电路简单,使用比较方便。
若要对直流电机进行调速,只需要在确定IN1,IN2后(电机的转向),对使能端ENA输出PWM脉冲即可。
Arduino 代码:
<span style="font-size:14px;">const int N1 = 11;
const int N2 = 12;
const int N3 = 3;
const int N4 = 4;
const int PWM_ENA = 6;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(N1,OUTPUT);
pinMode(N2,OUTPUT);
pinMode(N3,OUTPUT);
pinMode(N4,OUTPUT);
pinMode(PWM_ENA,OUTPUT);
}
void Forword()
{
digitalWrite(N1,HIGH);
digitalWrite(N2,LOW);
digitalWrite(N3,HIGH);
digitalWrite(N4,LOW);
}
void Backword()
{
digitalWrite(N1,LOW);
digitalWrite(N2,HIGH);
digitalWrite(N3,LOW);
digitalWrite(N4,HIGH);
}
void TurnLeft()
{
digitalWrite(N1,LOW);
digitalWrite(N2,HIGH);
digitalWrite(N3,HIGH);
digitalWrite(N4,LOW);
}
void TurnRight()
{
digitalWrite(N1,HIGH);
digitalWrite(N2,LOW);
digitalWrite(N3,LOW);
digitalWrite(N4,HIGH);
}
void Stop()
{
digitalWrite(N1,LOW);
digitalWrite(N2,LOW);
digitalWrite(N3,LOW);
digitalWrite(N4,LOW);
}
void PWM_PLUS()
{
const int rate = 700;
digitalWrite(PWM_ENA,HIGH);
delayMicroseconds(rate);
digitalWrite(PWM_ENA,LOW);
delayMicroseconds(1000-rate);
}
void loop() {
// put your main code here, to run repeatedly:
//PWM_PLUS();调速函数,通过ENA输出PWM脉冲
while(Serial.available()>0)
{
char c=Serial.read();
if(c=='U')
{
Forword();
}
else if(c == 'D')
{
Backword();
}
else if(c == 'L')
{
TurnLeft();
}
else if(c == 'R')
{
TurnRight();
}
else if(c == 'S')
{
Stop();
}
}
}</span>