要理解本教程,你需要:
①已经理解什么是高低电平
②已经知道什么是PWM调速(可等效于知道什么是占空比)
③已经学会使用analogWrite和digitalWrite
④知道L298N能带动你电机的功率,不至于烧毁
====================================================================
因为要用到这个驱动,查了一下网上关于L298N的教程都乱七八糟的。自己搞了搞之后感觉有必要发一篇教程。
本教程主要面向YWROBOT家的L298N驱动
因为L298N实际上是个驱动芯片,所以就算都叫L298N,不同家的驱动电路图也是不一样的,所以
绝对不能光记一些结果性的结论!!!!(下面会举例)
我使用的是YWROBOT MRL298 V2
先上电路图
产品外形图
我们从右上到左上先介绍它的端子都是什么。
一开始有IN1~4四个端子,是通过输出高低电平来控制MotorA和MotorB正反转的,IN1 2是一对控制MotorA,3 4是一对控制MotorB。ENA和ENB是使能端,用来PWM调速的。5V用来连接arduino的5v输出,GND连对应输出的地线。
接下来这三个,PWR ENA ENB带有跳线帽,就是直接把两个端子连接的小东西,如果要进行PWM调速,要拔下来,露出杜邦线能插的接口(虽然接下来要讲不用插,但是要拔下来);如果不要PWM调速,而是让电机全速运转,就不用拔了。
PWR是自动变行驶模式指示灯,通常是NORM模式。这个我不清楚是用来干什么的,但对于PWM调速不重要。
实际上原有跳线帽的两对EN端子,每一对中只有一个端子是用来连接arduino的,另一个端子接入的是5V电平,也就是刚才提到的5V。 ←这一点,网上的教程全部都没有提到,而对于不会看电路图或者第一次接触电机驱动的人,很可能会被误导,这就是上面我说到的例子,网上有人说这两对EN,都是外侧的端子接arduino,错了。 具体为什么错,我们下面讲。
这里需要用到占空比和高低电平的知识。原先有跳线帽会全速运转,是因为跳线帽直接将5V提供的5V点评给了EN的使能端子,让他一直保持在5V高电平,相当于我们从arduino一直输入一个占空比为0的5V电平。PWM调速应该接的那一端电压是由arduino上能生成PWM波的端子提供的。我手上的这块L298N驱动模块,恰恰内侧才是接收PWM波的那端。
明确这一点之后,将IN1~4分别接到arduino上digital的口,初始化后使用digitalWrite就可以实现正反转了,将ENA/ENB(无论是拔掉之后的内侧端子还是和IN1~4更近的单个端子都可以)接到arduino上带~的端子(3 5 6 9 10 11,就是能输出PWM波的端子)初始化后使用analogWrite输出PWM波就可以调速了,部分调速代码示例:
for(i=0;i<=255;i+=5)
{
analogWrite(3,i);
analogWrite(10,0);
analogWrite(5,i);
analogWrite(6,0);
delay(50);
}
关于下面绿色的螺丝接口:
MotorA/B无论正反都可以接电机,如果转的方向不对把代码高低电平换一下就可以了。
如果需要外接额外电压,正极接VIN,负极接GND。