0 引言
无人自动驾驶车辆作为一种高效、安全、灵活的交通车辆,促进了交通行业的大力发展。实际研究证明,将人放在路 - 车系统之外,可以相对降低事故率。[1] 近年来车辆无人驾驶作为智能交通的重要组成部分,已逐渐成为研究的热点。无人驾驶技术中,智能小车发展快,应用广,从儿童玩具可推广到汽车工业。
目前,智能小车已基本可实现循迹避障等功能,现今大学生智能车设计大赛又在向声控系统发展。本课题主要实现了小车的循迹避障自动驾驶功能。
1 小型智能车自动驾驶原理
1. 1 小车自动避障的原理
红外线发射管、PSD 与相应的计算电路构成了功能强大使用广泛的 GP2D12红外线传感器,位置敏感检测装置能够检测到光子在其上运动产生的微量移动,微米级的分辨率使得测量更精确。利用这一特性,几何原理测距可由GP2D12传感器轻松实现[2] 。光束由发射管发出,遇到障碍物再反射到PSD上,如图 1 所示,两条光线与地面构成了等腰三角形,三角形的底边长度可由PSD测得,而两个底角的值由发射管确定,可由此推算出高,也就是与障碍物的距离[3] 。
1. 2 小车循迹原理
用红外探测法循迹指的是小车在白色地面上跟随黑线行走,由于黑线和白色地面对光线的反射程度不一样,可以根据接收到的反射光的强弱来寻找路线。
红外探测法:路面信息的检测是由光电传感器发射管发射出一定波长的红外线,在地面反射后回到接收管。由于黑白两色对光线的反射程度不同,黑线吸收了大部分光线,而白色赛道反射了大部分光线,使得接收到的反射光线的强度存在差异,从而导致接收端特性曲线的变化程度不同,可近似认为接收管两端的输出阻值不等,分压后的电压也不等,由此黑线白地便可区分开来[4] 。
1. 3 测速原理
由于霍尔元件在磁场附近时能够感应出高电平,稍偏离时感应强度较弱,可以通过霍尔元件的这一特性来实现测速[5] 。霍尔元件感应磁铁产生脉冲信号,将4个小磁铁均匀放置于每个车轮之下,由此计算每秒钟感应磁铁产生的脉冲数,再计算出每秒钟小车轮子转动的转数,再乘以小车车轮总的周长,推算出小车当前运行速度,经过累加运算得到当前路程。
2 系统硬件电路设计
2. 1 系统总体设计图
图 2 为系统的总体设计图。
2. 2 主控模块
由于智能小车的要求不是很高,Atmel 公司的 AT99C52 单片机可作为控制核心。AT99C52 的性价比高,耗能低,其主要的性能参数为:兼容标准的 MCS -51 指令系统、9 字节可重擦写闪存只读程序存储器、256X9 字节随机存取数据储存器、可编程串行 UART 通道、时钟频率 0Hz ~24MH、3 个 16 位定时/ 计数器、9 个中断源、32 个可编程 I/0 口线[6] 。
2. 3 避障传感器模块
采用 3 只 GP2D12 红外线传感器分别探测正前方,前右侧,前左侧障碍物信息,该传感器的平均有效探测距离在 10 ~90 cm 范围内可调,可以有效地抵抗干扰光,能够在日光下正常运行(试验过程中应该尽量避免日光或者较强的光源直接照射在传感器上)。小车经过调速后的制动距离应该控制在 30 cm 以内,一般维持在 10 ~20 cm,所以探测距离该根据设计小车的需求来设定。
2. 4 循迹传感器模块
为了实现循迹传感,我们选择反射型光电探测器 RPR220。它是一种有着一体化优点的光电探测器。RPR 220 的发射器部分是一个 GaAs 红外发光二极管,而其接收器的构成中使用了一个灵敏度较高的硅光敏三极管。RPR220 采用 DIP4 封装,具有如下特点:反应灵敏、受离散光的干扰小、体积较小且结构紧凑一体化、可简化外围电路设计,且性能较为稳定。
2. 5 电机选择与驱动模块
电机的选择采用直流电机。直流减速电机可提供较大的转动力矩,安装方便,操作简单,质量轻、体积小,能够较好的满足系统的要求。
如图 3 所示,使用 L299N 芯片驱动电机。采用 SMT 工艺稳定性高,采用高质量铝电解电容,使电路稳定工作。可以直接驱动两路 3 ~35V 直流电机,并提供了 5V 输出接口(输入最低只要 6V),可以给 5V单片机电路系统供电(低纹波系数),支持 3. 3V MCU 和 ARM 控制,可以方便的控制直流电机速度和方向,也可以控制 2 相步进电机,5 线 4 相步进电机。用该芯片作为电机驱动,操作便捷,稳定性好,且工作性能较为突出。
驱动模块主要功能是使主控芯片来发出的信号并将该信号发送给 L299N 电机控制芯片,L299N 电机控制芯片将使小车按照指令执行相应的动作。VDD 引脚和 VCC 引脚作为 L299N 芯片电源引脚,电机的电源是 VDD 引脚接的 +9V 电源,芯片由接到 VCC 引脚上的 +5V 电源供能。
为了保证小车转向成功,让转向电机以最大功率输出以获得最大的扭矩,转向电机的输出功率不需再控制,所以 ENA 引脚(即转向电机使能引脚)直接接入 +5V,即让转向电机一直使能。
对于后置的驱动电机,除了要控制其实现前进、后退和停止外,还需控制其转速以解决因电量不足而使小车速度变慢的问题。因此,可通过将 L299N 芯片的 ENB 引脚与 AT99C52 的 P1. 7 引脚连接起来,以实现 PWM 调速。
L299N 芯片的 IN1 和 IN2 引脚分别和 AT99C52 的 P1. 2 和 P1. 3 引脚连接用来接收主控芯片输出的动作指令,并通过端口 OUT1 和 OUT2 将指令转化为电机转向(正转或反转)的动作,至此实现了小车的横向控制。
L299N 芯片的 IN3 和 IN4 引脚分别与 AT99C52 的 P1. 4 和 P1. 5 引脚连接用来接收主控芯片输出的动作指令,并通过端口 OUT3 和 OUT4 来控制驱动电机的转向,最终功能的实现表现在小车的前进、后退、停止。
2. 6 直流调速模块
调速的实现是选择基于 PWM 为主控电路的调速系统。相较于传统的直流调速技术,PWM(脉宽调制技术)直流调速系统具有较大的优越性:主电路线路简单,需要的功率元件少;主电路元件工作在开关状态,导通损耗小,低速性能好,稳速精度高,因而调速范围宽;系统频带宽,快速响应性能好,动态抗干扰能力强;开关频率高,电流容易连续,谐波少,电机损耗和发热都较小;装置效率高[7] 。
一般通过调节各路 PWM 的占空比来改变直流电动机电枢两端电压,这里采用定频调宽法。保证频率一定,通过程序控制单片机的定时计数器计数次数,或使用软件延时等方法均可达到调整脉宽的目的。此方式可以使硬件电路简化,且具有操作性强等优点。要求做直线运动时,分别控制左右两电机的 PWM 的占空比使它们相同,即可让小车以相应速度的直线运动。
要求做曲线运动时,在初始状态给定小车车轮一定转速,将小车起始位置设置在原点。由逆运动学进行速度分析,要使小车沿着一定半径做曲线运动,则根据该半径大小可以推算出小车左右轮所需的速度大小和差值。对拟合曲线方程进行分析,可以得到相应的电机驱动右轮的 PWM 占空比。因为速度和PWM 的脉冲宽度有着正比例关系,所以我们在程序中通过脉冲宽度调节速度。
3 系统的软件设计分析
3. 1 程序设计主流程图与主控制策略
在寻迹和避障中,控制的电机方式基本一样。当左边的避障传感器或右边的寻迹传感器检测到信号时,都是左转速不变,右轮转速减小 PWM 的占空比,从而使右轮转速减慢,实现差速转弯,向右转的同时实现避障和寻迹;右边也是如此。如果当左右寻迹传感器同时检测到信号,或是左边避障和左边寻迹、右边避障和右边寻迹。这种情况下不能同时满足避障和寻迹,只能使车停下。图 4 为程序流程图。
3. 2 传感器数据处理及寻迹程序流程
车底的 6 个传感器用一个字节来表示,并将传感器当前的检测状态用字节中的每一个位来表示,小车直线行驶时有三种情况。图 5 为传感器子程序流程图。当位于车体中央的四个传感器都检测到黑线时,小车恰好位于赛道正上方,此时系统控制两电机等速全速前进。当检测到某一侧一个或两个传感器偏离黑线,此时小车偏离黑线程度较小,系统将一个电机速度调快,另一个电机速度调慢,实现方向上的微调。当传感器检测到有 3 个电机偏离运行,小车偏离范围较大,这时系统大幅降低一个电机速度,并使另一电机以最高速度运行,在短时间内实现方向调整。使用这种 3 级调速的循迹算法程序构思清晰,程序执行可靠性高。
4 结语
本文所设计的自动驾驶系统实现的功能和现有的智能小车近似。创新之处在于利用两个电机的差动调节,控制电动小车的自动避障、寻光及自动停车;由单片机系统来控制智能车的行驶状态;并用 PWM技术实现了电动机的多级调速,革新了控制策略与程序,使整机工作更加可靠,节约能源,在将来的机动车市场上能发挥更大作用。
参考文献:
[1]于虹. 基于 16 位单片机 MC9S12DG129 智能模型车系统开发研究[D]. 包头:内蒙古科技大学,2009.
[2]徐鲁旭. 基于 ARM + DSP 的机器人控制系统设计[D]. 北京:北京邮电大学,2010.
[3]张航. 基于 MSP430 与 UZ2400 的无线传感器网络节点的设计与应用[D]. 长春:吉林大学,2010.
[4]曾伟钦,徐东升,冉志勇,等. 基于光电导航的自主循迹智能车设计系统[D]. 绵阳:西南科技大学,2012.
[5]张青春. 基于 ZigBee 结构支撑安全监测无线传感器的设计[J]. 计算机测量与控制,2012 (11):3 136 -3 139.
[6]李振新. 基于激光治疗的光纤终端研究[D]. 武汉:武汉理工大学,2006.
[7]姚永刚. 机电传动与控制技术[M]. 北京:中国轻工业出版社,2005.