(第一次写教程,如有错漏,敬请拍砖) Arduino+L298N小车实例教程 Arduino小车是一个非常常见且经典的实例,在搭建了小车以后,我们就可以通过在小车上安装超声波、红外感应、舵机机械手、蓝牙等各种外接传感器和部件,将其改造成寻迹、避障、遥控、机械手等各类智能小车,不仅对于我们学习Arduino非常有帮助,而且项目本身也非常具有可玩性,还具有无限的扩展性。但很多Arduino初学者常常在网上购买了小车底盘、马达和轮子等设备后,却无法正确的对小车进行控制,卡在了第一步上。究其原因,主要是对于Arduino如何驱动马达没有理解透彻,网上的很多教程也基本是属于泛泛而谈,没有针对其软硬件进行系统介绍,导致很多初学者在碰到问题时不知道问题出在什么地方。 本教程针通过对“Arduino+L298N+TT马达”组成的基本小车项目进行详细简介,希望对你加深了解Arduino小车项目有所帮助,也希望你能够在此基础上进一步挖掘,在此基本小车的基础上添加更多功能,开发出有自己个性风格的智能小车。 一、电机驱动模块简介: 常见的马达电机驱动模块有红色和绿色两种板子,即L9110和L298N两种驱动板,如下图所示: 由于L298N具有更大的电压范围和供电电流,因此,常见的智能小车均以L298N居多。L9110因其体积更小,在一些对体积要求较高无需载重等要求的项目中常常使用它居多。两者在硬件连接上基本差不多,程序也可通用。因此本教程将以红板L298N为例进行介绍。 L298N是一种高电压、大电流电机驱动芯片,最高工作电压可达46V,输出电流大,瞬间峰值可达3A,持续工作电流2A,额定功率25W,内含2个H桥高电压大电流全桥驱动器,可用来驱动直流电机和步进电机等,有两个使能控制端,可驱动1个两相或四相步进电机或者2个直流电机。因此,其实你在学会本教程中利用L298N驱动小车的实例后,也可以试试用类似的方法驱动步进电机了。 二、 零件清单: Arduino Nano主板1块; L298N电机驱动板1块; TT马达2个; 9V电池1块; 开关1个; 小车1架(底板+2个轮子+1个万向轮);
三、电路连接图: 上图为逻辑连接图,适合已经有一定硬件连接的同学直接学习,这样的逻辑图简单直观,易于操作。 这是模拟仿真连接图,对于新手和初学者,可对照着上图进行连接,更加接近实际情况。其中有一点需要特别注意,就是上图中的外接电源需要7~12V,但是图中由于画图软件的限制只显示了两节5号电池的图样,千万不要搞错,两节其实是不够的,在实际操作时可直接用9V电池替换,如下图所示: 四、L298N与Arduino的连接方法及注意事项: 下面我们来了解下L298N的各个接口和引脚,如上图所示。引脚虽然较多,但按照说明一个个连接完全不用担心出错。 1、首先我们来看信号输出引脚,也就是将控制信号从L298N传送至马达的接口,总共有4个引脚,即位于两侧的输出A(OUT1和OUT2)和输出B(OUT3和OUT4),他们分别与TT马达相连,接线不用分顺序,直接将螺丝拧松后插入线头再拧紧即可。 2、再来看输入信号引脚,也就是图中标识的“逻辑输入”所包含的4个引脚(IN1、IN2、IN3、IN4)。其中IN1和IN2对应控制输出A,IN3和IN4对应控制输出B,因此,IN1~IN4对应接Arduino的4个数字口即可,在上述的电路连接图中,对应的就是Arduino的2,3,4,5四个接口,只需要给这四个口不同的高低电平信号,即可让输出A和输出B产生正转、反转和停止的效果,具体的信号输入与输出关系如下表所示(另一个马达类似,不再赘述): 其实在具体实践时,无需去记这个表格,只需要在连接时保证两个接口输入电平信号不同即可转动,至于转动的方向,如果发现反了,只需要调换两个接口即可。 3、使能信号接口: L298N上的两个使能信号接口“通道A使能(ENA)”和“通道B使能(ENB)”,其作用是对马达进行调速(通道A控制输出A,通道B控制输出B)。两个使能接口默认是跳线帽扣上的,如果小车无需变速(马达运转时保持最高功率运行),则这两个接口不用动,直接用跳线帽扣上即可,如果小车需要变速(马达转速可调),则这两个跳线帽需要拔掉,并将外侧标有ENA和ENB字样的针脚分别连接Arduino的3,5,6,9,10,11等几个支持PWM输出的任意数字口,并在程序中通过AnalogWrite()语句实现速度快慢的调节。 4、最后来看一下供电接口: 总共有4个关于供电的接口,其中12V供电口接7-12V外接电源,切记此处不可从Arduino直接接5V使用,这样会导致电流不够无法驱动马达。 供电GND要接两条线,分别与12V供电电源的负极和Arduino的GND引脚相连,这样两者的GND参考电压也就一致了。 5V供电接口和板载5V使能分两种情况: 一种是当外接电源在7~12V之间时(常规应用,也是推荐的做法),则可以让板载5V使能接口保持默认状态(扣上跳线帽),此时L298N由自身(7~12V)对其内部逻辑电路进行供电。如果Arduino本身已经有外接电源供电,则此时的5V供电接口应留空,不输入电压;而如果L298N和Arduino共用一块电池供电,即都采用7~12V外接电源供电,则此时5V供电接口可直接连Arduino板的Vin,将其作为Arduino板的输入电压。 另一种情况是当外接电源高于12V时(12~24V),比如需要驱动电压较高的电机时(非常规应用),则此时板载5V使能的跳线帽必须要拔掉,并在5V供电接口处接上Arduino的5V引脚,以便对L298N内部逻辑电路进行5V供电(个人猜测可能当外接高于12V的电压时,如果仍然用此电压对L298N内部逻辑电路进行供电,可能会烧掉)。 五、Arduino程序编写: 对于利用Arduino+L298N对小车进行控制的程序来说,非常简单,如果不需要PWM调速,则直接将四个IN逻辑输入接口所连的Arduino数字端口分别写入高低高低等电平即可启动电机,具体代码如下: void setup() { //初始化各IO,模式为OUTPUT 输出模式 pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); //默认电机停止转动,全部设为低电平 digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); } void loop() { //forward 前进 digitalWrite(2,HIGH); //给高电平 digitalWrite(3,LOW); //给低电平 digitalWrite(4,HIGH); //给高电平 digitalWrite(5,LOW); //给低电平 } 而如果需要对小车进行调速控制,则只需在上述代码的基础上加上analogWrite函数进行PWM调速即可,代码如下: analogWrite(9,255);//左轮全速运行 analogWrite(10,128);//右轮半速左右运行 当然,其中的速度可利用变量进行进一步的控制和调整。 六、结语:
在研究了所有这些内容后,我也做了一个演示用的小车,如下图所示(请忽略那乱七八糟的连线吧),这就是一辆还没有任何控制功能的基本版小车,只有一个开关来负责接通电源。 基本上,到这里,你应该已经掌握了Arduino连接L298N的方法以及其背后的原理和原因了,应该也已经可以让这台Arduino小车跑起来了。至于后面如何控制小车的方向、速度及其他更多的应用,我想在你学习了Arduino中各种红外或者蓝牙等技术后,就可以进行进一步的控制了。希望你可以以此小车为出发点,开发出更多更好玩更新奇的作品,也希望你可以共享你的作品制作过程。
|