多电源供电智能车循迹避障系统的软件实现*
2015-11-28李晓云何秋生王利民
李晓云,何秋生,杨 柳,王利民,王 磊
(太原科技大学电子信息工程学院,山西 太原 030024)
智能车,有时也称为轮式机器人[1]。本文设计的智能车主要实现自动循迹和避障功能[2],自动循迹采用光电开关检测道路,相比于摄像头和CCD 采集更加简单,处理更加快捷方便;采用红外对管避障,相比于超声波更加快速,电路结构更加简单,成本低;电源方面采用电池和太阳能板多电源供电[3],功耗小,节能减排。
1 系统的结构
系统的结构组成如图1 所示,主要包括循迹模块、避障模块、显示模块、驱动模块和电源模块。本文主要介绍智能车系统软件实现的三大部分:自动循迹、避障、速度控制。
图1 系统的总体框图
2 系统的软件实现
系统主程序流程图如图2 所示,主要用来循迹,循迹过程中直行速度可以保持在1.3~1.5 m/s 左右,当红外对管检测到有障碍物出现时,减小速度并触发外部中断,进入避障子程序,待顺利躲开障碍物后,继续循迹。
图2 主程序流程图
2.1 循迹的软件实现
智能车循迹采用四个光电开关,分别置于车身前轨道两侧,左右各一对。为了方便,从左到右依次标记为左1、左2、右2、右1。当光电开关对准的赛道为白色时,输出电压为0.2 V;当赛道为黑色时,输出电压为5 V[4]。将输出电压与阈值电压作比较,单片机通过检测比较器的输出即可得到赛道的信息,通过控制电机的转动实现循迹功能。
循迹的软件实现如图3 所示,循迹主要是检测黑线的位置,分为6 种情况:若没有检测到黑线就直走,此处包含了智能车通过十字路口时没有黑线的情况;若四个光电开关均检测到黑线,就停车;若左1 检测到黑线,说明车身已经大幅度的偏向右边,控制智能车大幅度左转;若左2 检测到黑线,控制车小幅度左转;若右2 检测到黑线,控制车小幅度右转;若右1 检测到黑线,控制车大幅度右转。
图3 循迹的软件流程图
2.2 避障的软件实现
避障采用两个红外对管实现,分别置于智能车的前方和右侧。前方的红外对管用来探测前方是否有障碍物,右侧的用来探测障碍物的长短。以前方为例,红外对管发射红外光,若前方有障碍物,红外线将从物体反射回来,单片机将检测到低电平,控制电机改变智能车的行进方向,从而顺利避开障碍物。本文以宽度为6 cm,长度不定的障碍物进行实测。
避障的软件流程图如图4 所示。单片机通过精确延时使二极管发射38.5 kHz 的红外线,同时检测红外检测器的状态[5]。当检测到前方有障碍物时,触发外部中断,单片机通过控制电机使智能车转弯,避开障碍物,然后直走。同时检测车身右侧是否有障碍物,主要是确定障碍物的长短和智能车直走的距离。当检测到无障碍物时,驱动电机使智能车转弯再次回到黑线上,继续循迹。
图4 避障的软件流程图
2.3 速度控制的软件实现
PWM 是通过调节直流电源电压的占空比,来改变负载两端电压的平均值,而达到控制要求的一种电压调整方法[6]。由于PWM 控制,不仅可以调节速度,而且还可以弥补硬件结构的缺陷,消除左右两轮之间摩擦阻力不同的影响,因此这里采用PWM 控制智能车的速度。单片机系统主频是12 MHz,若PWM 输出频率为1 kHz,定时中断次数设定为100,即0.01 ms 中断一次,这样可以设定占空比范围是1~100。
PWM 的软件流程图如图5 所示,其中C 为中断次数,0.01 ms 触发一次中断,left 为左轮PWM 的给定值,right 为右轮PWM 的给定值,将它们依次与中断次数C 进行比较,控制电机的使能端,改变电源电压的占空比,从而达到调速的目的。
图5 PWM 控制的软件流程图
速度显示流程如图6 所示。测速模块采用LM393 和20格的光电码盘。光电码盘每转一格触发一次外部中断,测速中断主要是记录码盘转的格数。速度显示采用LCD1602,每400 ms 更新一次,速度计算公式为:v=2nπR/(20 ×0.4),n为光电码盘转的格数,R 为光电码盘的半径。
图6 LCD 显示的软件流程图
2.4 软件调试
如图7 是设计的智能车,图8 为调试智能车的赛道,图中标记着一长一短两个障碍物,障碍物宽度为6 cm,长度不限,黑线宽度为2 cm。因障碍物宽度一定,智能车转弯的延时时间和速度需经过多次试验调整,使其顺利通过障碍物,并继续自动循迹。本系统中智能车直行时速度能稳定在1.52 m/s,左转弯时左轮速度大约0.55 m/s,右轮速度大约1.15 m/s,右转弯时右轮速度大约0.58 m/s,左轮速度大约1.18 m/s。
图7 智能车模型
图8 调试赛道
3 结论
本文设计的智能车可以在强光的照射下自动为智能车供电或者给电池充电。经多次测试表明智能车能够稳定地按照设定黑色轨迹运动,并能够躲避任意长度的障碍物,能在误差允许范围内测得速度并实时显示。
[1]赵建领,弓雷.51 系列单片机开发宝典[M].北京:电子工业出版社,2012.
[2]王允上.学用单片机制作机器人[M].北京:科学出版社,2011.
[3]刘帅,王洁瑜,尹志强,等.太阳能LED 路灯驱动器设计[J].电子技术与软件工程,2014(8):152 -153.
[4]王艳.基于51 单片机的红外遥控小车设计和制作[J].机电信息,2010(12):4 -5.
[5]韩毅,杨天.基于HCS12 单片机的智能寻迹模型车的设计与实现[J].计算机工程与设计,2008,29(18):4736 -4739.
[6]林广峰.用单片机实现频率可调的PWM 控制信号[J].科技传播,2010(6):220 -221.