唐学文,郭晓梅
(湖南科技学院 信息工程学院,湖南 永州 425199)
随着当今世界的飞速发展,人们对汽车的需求不再局限于代步,更期望汽车有自动驾驶、无人驾驶的功能,这就催生了新型汽车——智能汽车的发展,同时也催生了简易版的智能小车的发展。现在智能化的技术发展得很快,在国际和国内都有关于智能小车的竞赛,或是比速度,或是比功能[1];
智能汽车,也是轮式智能机器人,随着机器人的高速发展,智能小车也不再局限于在路上跑,更有很多关于智能电动机器人的创新发展,比如在医院探查病房和送药等[2]。对于一个国家而言,机器人发展的水平反映的是一个国家综合技术能力的高低,也是国家科技能力的反映[3]。机器人的发展在国际和国内都受到了举足轻重的关注[4]。
2.1 需求分析与总体框架
本文设计的简易智能小车要求拥有一台4个轮子的车,并且带有电机。需要购买一个电机驱动模块(L298N TB6612),用于调速转向。另外,需要一个最小的51系统板,拥有一个小舵机和一个超声波模块的避障功能。智能小车通过红外模块实现循迹功能;
通过PS2实现高级无线控制;
通过机械臂即pca9685模块来实现抓取功能;
通过ds18b20湿度传感器实现测温、测湿度功能;
通过ds1302实现定时停车功能。设计的智能小车框架如图1所示。
图1 总体框架
2.2 避障思路的比较
2.2.1 避障思路及传感器的选择
利用4路红外循迹避障传感器模块实现避障,其中一路传感器检测左边的障碍物,一路传感器检测右边的障碍物,两路传感器检测前方的障碍物。这种方法实现起来是最简单的,障碍物检测距离一般在20 cm左右,在车速不太快,而且在室内(也就是无阳光直射)时是可行的,也可以很好地实现避障。缺点是在室外(或者阳光直射时)传感器受阳光干扰可能不能正常工作,检测距离20 cm左右,车速过快时,在检测到障碍物时,不能直接转弯,需要往回倒一下,再转弯。
2.2.2 利用4个漫反射光电传感器模块实现避障
可以让一个传感器检测左边的障碍物,一个传感器检测右边的障碍物,两路传感器检测前方的障碍物,就像上面的4路红外循迹避障传感器的摆放方向一样。这种方法的避障思路跟利用4路红外循迹避障传感器模块实现避障是相同的,只是换了传感器类型而已,但是漫反射光电传感器抗阳光干扰能力强,克服了4路红外循迹避障传感器模块在室外(或者阳光直射时)传感器受阳光干扰可能不能正常工作的缺点。缺点是检测距离也在20 cm左右,依然没能克服在车速过快并检测到障碍物时,不能直接转弯的不足,而且漫反射光电传感器模块体积、重量、价格较高。
2.2.3 利用超声波模块和舵机云台实现避障
避障思路是正常情况下超声波模块检测前方障碍物,当检测到障碍物时,小车停止前行,舵机云台转动,让超声波模块分别转向小车的左右两侧,检测左右两侧是否有障碍物,来决定下一步的转向,超声波模块重新朝前,开始转向。
这种方法利用超声波模块测距远,一般常见的超声波模块测距最远在4.5 m左右,完全不用担心车速过快来不及反应的情况,而且基本不受阳光干扰(当环境温度升高时,声音的传播速度会加快,对测距产生一定的误差,但是误差很小,对于超声波模实现避障而言完全可以忽略)。缺点是这种避障思路不能连续运动,当遇到障碍物时,小车就会停下来判断下一步该往哪个方向转弯,除此之外,超声波模块用起来比前两种难一些。
2.2.4 利用超声波模块和两个漫反射光电传感器实现避障
避障思路是利用超声波模块检测前面的障碍物,两个漫反射光电传感器分别检测左右两侧的障碍物。这种思路结合了这两种传感器的优点,互补了它们的不足,即同时克服阳光直射时传感器不能正常工作、车速过快时不能直接转弯、遇到障碍物需要停车判断等缺点。这3种不足是一种比较理想的方案,唯一的缺点是超声波模块本身用起来难度要大一些。
2.3 超声波测距程序的编写
2.3.1 概述
本文需要用到两个定时器,而STC89C52单片机只有两个定时器,设计时已把定时器0中断用来控制电机的PWM输出,所以可以把超声波测距的启动信号也合并到定时器0里面,让定时器1来检测超声波模块有无信号返回。
2.3.2 I/O口触发测距的实现程序编写
超声波模块工作的第一步是让块Trig 管脚所接的单片机I/O口置为高电平,而且需要持续10 μs以上。本文采用的是让单片机P14 I/O口接在超声波模块的Trig 管脚上,让单片机P15 I/O口接在超声波模块的Echo管脚上。这里可根据实际情况自己选择,只要跟程序对应起来即可。此处有一点需要注意,为了避免下一次超声波模块发出的信号对上一次的返回信号产生影响,超声波模块发出信号的时间间隔要在60 ms以上。本文中配置的定时器0是每1 ms产生一次中断,设置一个变量HC_SR04_time,定时器0每产生一次中断,该变量累加1,每当加到250时,让该变量清零,同时让超声波模块发出检测信号,即每250 ms 超声波模块发出一次检测信号,数值可以自行调节。发出检测信号只需要让Trig为高电平并且持续10 μs以上 ,再让Trig为低电平,这样超声波模块就会自动发出一次检测信号了,本文把这个过程写在函数StartModule() 里,核心代码如下。
sbit Trig=p1^4;
sbit Echo=p1^5;
void StartModule(){
Trig=1;
_nop_();……
Trig=0;
}
2.3.3 检测有无障碍物的程序编写以及检测距离的调节方法
本文利用定时器0来通过 Trig口让超声波模块每250 ms发出一次检测信号,接下来需要用定时器1来检测有没有信号返回,即前方有没有障碍物。本文通过Echo管脚为高电平返回信号,通过定时器1来测量高电平持续的时间。通过公式:测试距离=(高电平时间×声速(340 M/s)/2) 可计算障碍物距离传感器的距离。当Echo变为高电平时,让定时器1清零,并打开定时器1,开始计数。当Echo变为0时,利用公式计算障碍物距离,计算完后令定时器1清零并关闭定时器1 ,即可返回信号。只要Echo被置为1, 定时器1就会被及时清零,也就不会触发定时器1溢出中断。若是没有信号返回(即没有障碍物或者障碍物超出了传感器的测量范围,本文用的传感器测量最大值为4.5 m),Echo就不会被置1,定时器1也就不会被清零,从而产生溢出中断,在溢出中断里放一个变量flag 。若产生中断则让其置1,这样可通过定时器是否产生溢出中断,即flag是否为1来判断是否检测到障碍物。
本文设计的检测是检测距离传感器最大检测距离内有无障碍物。本文把它用来让小车避障,但不能距离障碍物4.5 m就让小车转弯,这就需要通过程序调节检测距离了,只需要增加一个判断条件就行了。本文利用公式算出来障碍物的距离S ,将flag=1或者S>设定的检测距离,都视为没有障碍物处理就可以了,如 if(flag==1‖S>50) 就是把50 cm作为检测距离,检测的是50 cm内有无障碍物,50是暂定的,在后期调车的时候,根据实际情况进行调节。
本文用于避障的传感器有检测左右两侧障碍物的漫反射光电管,检测前方障碍物的超声波模块。大体思路如下,当超声波模块没有检测到设定距离内的障碍物时,小车直行,当检测到前方障碍物时,若此时左边漫反射传感器没有检测到障碍物,则左转,当此时左边有障碍物时,若右边没有障碍物则右转,若右边也有障碍物则后退。逻辑表如表1所示。
表1 自动避障方案
表格中的“有”代表有障碍物,“无”代表无障碍物,“X”代表可以有也可以没有障碍物 若前方有障碍物则 M_sensor=0,没有则 M_sensor=1,若左侧有障碍物 ,则 L_sensor=0 ,没有则 L_sensor=1,若右侧有障碍物则 R_sensor=0 ,没有则 R_sensor=1,核心代码如下。
if(M_sensor==1){run();}
else
{
if(L_sensor==1)
{left();}
else if(R_sensor==1)
{right();}
else { back();}
}
在测试中当电池电量较低时,原来的转弯方式(一侧电机停转,另一侧电机前进)转弯效率较低,因此把转弯的函数修改为一侧后退,另一侧前进。经过测试后,这种方案因为超声波模块存在一些缺陷,比如偶然会产生误判,前方什么障碍物都没有,会在一瞬间突然检测到障碍物或突然消失。这种缺陷是超声波模块固有的缺陷,是无法通过超声波模块本身去纠正,解决方法可在超声波模块的两侧分别再加一个朝前的检测前方障碍物的漫反射光电传感器,这样可克服以上的缺陷。经过本文的实际测试,漫反射光电传感器除了检测距离有点短之外几乎不会产生误判,有较好的应用价值。因此以4路漫反射光电传感器为主,超声波模块只是辅助检测前方的较远的障碍物,弥补漫反射传感器检测距离有限的缺陷。
本文主要基于STM32F407开发板对智能小车进行驱动,可用手机控制小车前进、后退、左转、右转、后左转、后右转、停止等方向,还可自动进行避障。当遇到障碍物时,小车会左转或右转绕开障碍物,离障碍物一定距离时蜂鸣器会报警。不同的距离,蜂鸣器响的频率不一样,同时OLED会实时显示距离、小车行进方向及报警的状态。该智能小车可进行后期二次开发,也可进行功能扩展。
猜你喜欢高电平障碍物小车一种基于FPGA的PWM防错输出控制电路山西电子技术(2022年1期)2022-02-28大车拉小车快乐语文(2020年36期)2021-01-14自制小车来比赛科学大众(2020年17期)2020-10-27高低翻越动漫界·幼教365(中班)(2020年3期)2020-04-20SelTrac®CBTC系统中非通信障碍物的设计和处理铁道通信信号(2020年9期)2020-02-06TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析科技传播(2019年15期)2019-08-22刘老师想开小车文苑(2018年22期)2018-11-19两轮自平衡小车的设计与实现电子制作(2018年8期)2018-06-26浅谈物理电路与数字电路电子技术与软件工程(2017年2期)2017-03-15PDM 1kW中波广播发射机保护电路分析西部广播电视(2016年16期)2016-11-09