一、基本参数
- 最大功率25w,最大电流2A
- 允许驱动一个步进电机或两个直流电机
- 该扩展板可将电机直接连接到Arduino开发板,无需面包板
图1:L298N驱动器
二、简单端子和接口介绍
1. 12v供电
理论上最高可接入35v。从12v供电口进去的电,就是输出AB口的电压。后面会介绍输入电压大于或小于5v的情况。
2. 5v供电
这是个特殊的端口。既可以做L298N的逻辑电压输入,也可以做外部单片机或系统的5v供电口。具体切换在板载5v跳帽中介绍。
3. 板载5v跳帽
12v供电口接大于等于5v的电源电压时,板载5v跳帽不拔除,5v供电口有电压输出。数值大小自己可以测量。 12v供电口接小于等于5v的电源电压时,板载5v跳帽需要拔除,因为L298N需要逻辑驱动电压来驱动板子。此时5v供电口就变成了L298N的逻辑电压供电的输入口。供电电压在3.3v-5v之间。
4. 通道AB使能跳帽
需要PWM控制就拔除,不需要PWM控制就保留。PWM控制对于电机而言表现出来就是转速控制。在Arduino里用AnalogWrite(Pin, Value)语句来实现。Value是0~255之间的整型数字。
5. 逻辑输入
IN1和IN2为一组,对应OutA(输出A); IN3和IN4为一组,对应OutB(输出B)。
6.输出AB
直接接对应的输出AB即可。
三、代码
1. wasd控制双电机前后左右转动
#include<Servo.h>
int IN1=9;
int IN2=10;
int IN3=11;
int IN4=12;
void sport(int direction,int del){
int i=0;
if(direction=='w'){
while(i<del){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
i++;
}
Serial.println("forward");
stopp();
}
else if(direction=='s'){
while(i<del){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
i++;
}
Serial.println("back");
stopp();
}
else if(direction=='a'){
while(i<del){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
i++;
}
Serial.println("left");
stopp();
}
else if(direction=='d'){
while(i<del){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
i++;
}
Serial.println("right");
stopp();
}
}
void stopp(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
void setup()
{
for (int j=9;j<=12;j++)
{
pinMode(j,OUTPUT);
digitalWrite(j,HIGH);
}
Serial.begin(9600);
}
void loop()
{
int j = 0;
while(Serial.available() > 0)
{
char flag=Serial.read();
if(flag=='w'||flag=='s'||flag=='a'||flag=='d')
{
sport(flag,5000);
}
}
}
|