在系列文章第12篇中提到了L298N,它是H桥双路直流电机驱动,可以使双路直流电机实现正转或者反转,并且通过ENDA和ENDB输入PWM信号,还可以实现加减速。本文用2块L298N驱动板成功驱动了4个直流电机,实现了4轮同时向前、向后以及前向左转、前向右转甚至是后向左转和后向右转的功能,最后通过python的BaseHTTPServer模块(python3中是http.server模块)实现了一个控制小车的HTTP接口,另外用lighttpd启动一个网页,通过网页中的ajax调用控制小车的HTTP接口,最终实现通过web的方式来控制智能小车。
首先介绍一下L298N驱动的使用方法:
电源端(12V、GND、5V),输入5V直流电到L298N的5V接口时,直流电机几乎不能正常运转,当我们输入7-12V接到L298N的12V引脚时,该驱动板还可以在5V引脚输入电压供外部使用,所以输入驱动板的电压就接在12V引脚即可,经测试,5V输入到12V引脚可以正常工作,小车的直流电机也可以正常工作。
逻辑输入端(ENDA IN1 IN2 IN3 IN4 ENDB),分别连接树莓派的GPIO接口,控制逻辑如下图,在本人测试过程中,ENDB端是和IN1 IN2配合使用控制M1电机的,还请大家使用时先测试好:
关于加减速的PWM,我们先忽略,在实现了前进、后退和功能后,这个只是锦上添花的功能,而且可有可无。
接下来,我们就可以连接线路了,如果想要小车移动方便,最好使用移动电源来给树莓派、小车供电(用4节1.5V电池也可以),本人使用的是重达1斤的2万毫安时双输出口移动电源,正好可以给树莓派和外接电路供电。如果暂时没有移动电源,可以只做好测试工作,把小车架空,不要让其随意乱走。
树莓派GPIO和L298N连接关系如下(BOARD编号模式下的GPIO引脚-L298N输入引脚,都是高电平使能,其它引脚低电平):
前轮驱动:18-ENDB, 22-ENDA, 11-左前前, 13-左前后, 15-右前前, 29-右前后
后轮驱动:38-ENDB, 40-ENDA, 31-左后前, 33-左后后, 35-右后前, 37-右后后
电源输出:5V 1A- 树莓派,5V 2.1A-外部电路(面包板,2块L298N驱动)
L298N和电机:按照使用方法中的逻辑关系,每块的OUT1 OUT2接一个电机,OUT3 OUT4接另外一个。
最好在连接前,就已经测试好电机的正负极,L298N连接时都保持一定的先后次序,如IN1 IN2 ENDB 控制 OUT1 OUT2从而控制电机1,这样在写程序测试时会方便很多。
手绘电路图如下,其实比较简单,就是线多而已:
L298N控制4驱直流电机的驱动如下(python2/python3):
L298N_car2.py
#!/usr/bin/python2
#coding=utf-8
import RPi.GPIO as GPIO
im
#coding=utf-8
import RPi.GPIO as GPIO
im