罗 琴
(广州工程技术职业学院,广州 510900)
基于Arduino的避障小车设计与实现
罗 琴
(广州工程技术职业学院,广州 510900)
本设计基于Arduino开源设计平台,以Arduino UNO开发板为核心控制器,利用舵机、超声波传感器模块、电机驱动模块等,研究超声波测距的算法,分析避障小车避障执行流程,使小车按照设定的模式避开障碍物,自动循迹,实现无障碍运行,达到实用要求。实践表明,该设计有效。
Arduino;超声波测距;避障;自动循迹;避障小车
Arduino是目前使用最为广泛的开源硬件之一,其大部分硬件已配置好,是一款自带有用于连接电脑USB接口的小型单片机电路板。可连接电机、传感器、继电器等外部电子设备,可由电脑USB接口、9 V电源或独立电源供电,通过电脑或程序实现控制。Arduino开发环境的语言接近C++,甚至加入了一些JAVA的用法。Arduino编程软件中有很多函数库,用起来非常方便,灵活、简单的开发方式使开发者的创意更为快捷地得以实现,被广泛应用于机器人、物联网等领域。Arduino开发板与单片机裸机、单片机开发板之间的区别为:A. Arduino开发板:成本较低,体积适中。除单片机运行需要占用的端口外,其他端口交由用户支配使用。通过USB数据线与PC连接即可运行。B.单片机裸机:成本低,体积小,端口自由度大,需自己搭建电路才能运行。C.单片机开发板:成本高,体积大。开发板集成了键盘、数码管等模块,占用了很多端口。通过USB数据线或COM端口与PC连接即可运行。
本研究的避障小车设计采用超声波传感器实现避障功能,实现方便,计算简单,易于做到实时控制,测量精度也能达到实用的要求。
避障小车的设计包含Arduino控制模块、超声波传感器模块、舵机与直流电机等执行器模块。Arduino控制模块用于接收红外遥控器发出的运行信号以及超声波传感器检测到的测距信号,根据程序编制的避障策略,发送控制信号给控制小车运行的外部执行元件。舵机、直流电机等执行元件按照控制信号调整当前状态,使小车实现避障运行。
小车运行中遇到障碍物时,当距离障碍物大于25 cm时,PWM信号自增,驱动电机加速,小车加速前进;当距离障碍物小于25 cm时,舵机驱动超声波左右测距,并根据左右故障的距离是否小于25 cm采取相应的避障措施。
2.1 Arduino UNO控制模块
Arduino UNO控制板是Arduino系列目前最为流行的新版本,可以在其3.3 V供电接口处提供更大的电流,控制板配备ATmega328芯片,存储容量更大,与电脑之间的数据交换更快。Arduino UNO有6个模拟输入端口,14个数字输入/输出端口。本设计共使用8个数字量端口用于连接舵机、电机、红外遥控接收头,2个模拟量端口用于连接超声波传感器信号。
2.2 超声波传感器模块
超声波传感器包含Trig触发端与Echo回声端。测距算法是通过超声波在发射后遇到障碍物反射回来的时间差,计算发射点到障碍物的实际距离。测距的公式表示为:L=C×(T1-T2)。其中,C为超声波在空气中的传播速度:340 m/s,T1为超声波发出的起始时间,T2为超声波返回时间。
超声波Trig触发端发一个10 us以上的高电平,如有超声波信号返回,Echo回声端会输出高电平。回声端一旦有高电平输出就开启定时器计时,当此口变为低电平时就可以读定时器的值,此定时器的值即为测距时间,可算出小车与障碍物的实际距离。
2.3 外部执行模块
A.直流电机:直流电机是大功率元件,需要较大电流才能工作。而Arduino数字I/O输出口的电流仅为40 mA,因此需要外加L298N电机驱动模块才能驱动电机运行。L298N驱动模块是内含两个H桥的高电压大电流全桥式驱动器,可驱动直流电机、步进电机、继电器等感性负载,也可驱动两台直流电机。由图1可知,图中二极管为续流二极管。当V1、V4导通时,电机顺时针转;V2、V3导通时,电机逆时针转。电机调速通过PWM控制,占空比不同,输出模拟电压的平均值不同,由此来控制电机实现调速。B.舵机:通过Arduino发出控制信号,指定输出轴旋转的角度,在一定角度范围内来回旋转,用PWM信号控制。避障小车通过红外遥控器发射红外线,由红外接收头接收控制信号输送给Arduino进行运算控制。遥控器一个按键对应一个控制指令,使用前需要进行按键指令的解码。
图1 H桥驱动电路Fig.1 H-bridge drive circuit
以上各硬件模块可分别编写测试程序,若每个模块都无问题,则说明连接正常。若某个模块有问题,则需检查线路。
Arduino通过外部中断,接收红外遥控器按键指令。如:Arduino收到按键0,小车启动,进行自动避障;收到按键1,停止不动;收到按键2,小车前进;收到按键3,小车后退。小车避障算法为:超声波先进行正前方测距并判断与故障的距离,若≥25 cm小车前进,2 S后停车再测距。若正前方距离小于25 cm,则先左后右对两侧进行测距,若两侧距离都小于25 cm,左侧距离大则左转前进,否则右转前进,2 S后停车再测距,如此实现自动循迹及避障功能。自动避障循迹算法如图2所示。
图2 小车自动避障循迹算法流程图Fig.2 Automatic obstacle avoidance tracking algorithm flow chart of cars
控制程序编写时先定义各引脚,再进行各引脚的配置,声明函数,最后再编写主程序。函数声明有利于控制程序的优化,是程序编写重要的环节之一。
小车设计完成后的实践表明,基于Arduino UNO平台设计的避障小车可按照预先设定的模式避开障碍物自动运行,对自动运输机器人、采矿勘探机器人、家用自动清洁机器人等自动、半自动机器人的设计与普及有一定的参考意义。此外,由于本设计只用了一个超声波传感器实现测距,而小车车身横向距离大,使得超声波测距存在一定的盲区,可以通过在车身左右侧各自再增加一个超声波或采用摄像头实现测距,可有效解决测距盲区问题。
[1] 蔡睿妍.基于Arduino的舵机控制系统设计[J].电脑知识与技术,2012,8(15):3719-3721.
[2] 杨继志,郭敬.Arduino的互动产品平台创新设计[J].单片机与嵌入式系统应用,2012,12(04):39-41.
[3] 卞云松.基于Arduino单片机的避障小车机器人[J].自动化技术与应用,2014,33(01):16-19.
[4] 陈吕洲.Arduino程序设计基础[M].北京:北京航空航天大学出版社,2014.
[5] 付久强.基于Arduino平台的职能硬件设计研究[J].包装工程,2015,(10):76-79.
Designandimplementationofavoidcarrierbasedonarduino
LUO Qin
(Guangzhou Institute of Engineering Technology, Guangzhou 510900, China)
Based on Arduino open source design platform, taking Arduino UNO development board as the core controller, to study ultrasonic ranging algorithm with the use of steering gear, ultrasonic sensor module and the motor drive module, and analyze the obstacle avoidance barrier implementation process, avoid obstacles and achieve barrier-free operation and meet the practical requirements. Practice shows that the design is effective.
Arduino; Ultrasonic ranging; Obstacle avoidance; Automatic tracking; Obstacle avoidance car
TP23
A
1674-8646(2017)20-0024-02
2017-08-22
罗琴(1979-),女,硕士,讲师。