广西区电子设计大赛l智能迷宫小车论文.docx
《广西区电子设计大赛l智能迷宫小车论文.docx》由会员分享,可在线阅读,更多相关《广西区电子设计大赛l智能迷宫小车论文.docx(24页珍藏版)》请在冰豆网上搜索。
![广西区电子设计大赛l智能迷宫小车论文.docx](https://file1.bdocx.com/fileroot1/2023-4/20/adcdbd13-3120-44c8-95cd-adab0a1f3230/adcdbd13-3120-44c8-95cd-adab0a1f32301.gif)
广西区电子设计大赛l智能迷宫小车论文
智能迷宫小车
谭伟(桂林电子科技大学,广西,桂林,2010年9月)
摘要:
本系统采用飞思卡尔MC9SS12XS128做为主控芯片核心进行设计,合理利用了该芯片上丰富的资源,应用三方位大功率红外检测,舵机控制作为动力,PWM速度控制等技术实现小车自动避障、选择路线、寻迹,能在迷宫中自动从起点寻找路线走到终点。
关键词:
舵机自动避障,迷宫算法,机动小车,红外测距。
Abstract:
ThissystemUSESfreescaleMC9S12XS128asmaincontrolchipdesign,reasonableutilizationofcoreofthechipabundantresourcesandapplicationofinfraredtesting,fourbitsofpowersteeringgearcontrolPWMsteeringgear,speedcontroltechnology,thechoiceofintelligentautomaticcartimesroute,tracing,canbeinthemazelookingforfrombeginningtoendroute.
Keyword:
steeringengineobstacleavoidance,motorvehicles,mazealgorithm,infrareddistance.
1系统方案设计
系统总体方案设计
智能小车要求运行平稳,快速,高效的探索迷宫,这需要小车能够精确控制,能够自动地进行避障,很好地对各种路况进行判断和做出相应的操作,小车的灵活性就变得比较重要,至少需要三个检测路况的传感器,分别在前边,左右两边,并以适合的迷宫搜索算法作为车子的行进规则,进行所有路径遍历,得到最短路径方案。
根据分析我们得出以下设计方案:
处理器采用飞思卡尔MC9SS12XS12816位处理器,PWM控制电机转动速率,L293驱动两个电机,红外传感器测距,LM1117和LM2940高性能稳压芯片稳压,光敏三极管电路检测终点,采用舵机改装成小车的动力系统。
车子转动灵活,体积小,能原地左右转90度,45度,180度,舵机的转矩足够大,速度合适,运行平稳。
经过实际比较验证得到以下的最终方案:
主要模块方案选择和论证
1.2.0车子框架模块
搭建一个性能好的小车是我们工作的第一步,为了达到预期的目标,我们进行了五次方案的修改:
方案一:
采用自带玩具小车,采用两个直流电机分别控制车子左右转向。
缺点:
车子过大过长,相对于20.4cm左右的跑道而言,四轮不能实现原地90度旋转,达不到要求。
方案二:
直流电机来做车子方向的转向控制,采用三轮式结构,后面加一个万向轮,万向轮由自己设计。
缺点:
实践发现直流电机动力不够,转动速度过快
方案三:
改用直流减速电机控制,电机转速慢,转矩大,动力强,容易控制。
缺点:
电机长度过长,做出来的车子宽度比较宽,车子不灵活,不易控制。
整体总装图
方案四:
用舵机取代减速电机,相对减速电机,舵机的转动速度一样慢,输出转矩大,相对直流电机角度控制精确度高。
缺点:
车子运行还是快。
方案五:
用周长比较大的车轮换上,实践发现效果很好,决定用这一方案。
1.2.1MUC的选择
处理器的选择我们首先考虑的是传统的51单片机,但对于红外线的测量,至少需要3个AD转换芯片,而且51总线频率低,如果采用ADC08098位逐次逼近型A/D转换器,不仅转换速度低,结构复杂,电路板布线困难,而且要用3片芯片,成本较高,小车的体积大,不利于小车在狭小的迷宫里灵活行走和拐弯。
最终放弃该方案。
凌阳SPCE06116位语音单片机有7路10位AD转换器,最高时钟频率达49MHZ,14个中断源,2路PWM,低电压低功耗供电(2.4V~3.6V),具有语音编程等强大功能,完全符合以上方案的要求,但由于SPCE061体积庞大,最小系统板也很大,不利于小车的小型化,况且SPCE061的特色功能是语音功能,在本方案中没有用到,大材小用,也放弃了该MUC方案。
飞思卡尔MC9SS12XS128处理器是Freescal公司专门为汽车电子而开发的微控制器,其集成度高,片内资源丰富,内部有自带16个12位高速AD转换器,8路PWM发生模块,多个外部、定时计数器中断,8KBRAM,128KBFLASH,2KBEPRROM,SCI,SPI,IIC,CAN,BDM,增强型定时捕捉器等,红外数据转换精度高,数据处理精确,总线时钟最高可96MHZ.PWM脉宽调制很方便,体积小,功耗低,最终选该芯片为本方案的主控制芯片。
1.2.2测距方案的选择
测距的方案有超声波测距,激光测距,红外测距。
由于迷宫道路狭小,要求10CM以内精确测距,但超声波测距在近距离测距中很容易受到余波和迷宫回声、环境温度的干扰,测量精度和稳定性差,而且测量探头体积庞大,小车安装6个探头琪琪、极其困难,软件设计复杂,调试困难,放弃该方案。
激光测距精确,稳定度高,受环境影响小,但价格昂贵,我们手头也没有激光传感器,于是也放弃了该方案。
红外线测短距离精度较高,反射的红外线几乎和距离成线性关系,价格低廉,硬件简单,驱动程序简单易调试,但容易受到环境光线的影响。
权衡之下,选择了红外测距方案。
该方案有两种测量方法,一是“接近开关”式测量,即数字量检测,本方法是当红外线接收管接收到大于某一电压值时判断红外管前方有障碍物,否则认为无障碍物,用此探测有无墙壁和路口,此方法识别简单,但所得的信息量少。
另一种采用模拟量测量的方法,通过AD转换测取接收管的所有电压值,并和距离一一对应,这样就得到了路况的模拟量,给控制策略提供了丰富的信息,最终采用红外线模拟量测距的方案。
1.2.3动力驱动的选择
前进的动力源可以使用直流电机作为动力源,但直流电机直接驱动的时候速度过快,用PWM调小速度的时候驱动功率又不足,无法使小车缓慢平稳地前进。
使用减速电机,速度慢,转矩大,但体积较大,两个减速电机合起来轮轴太长,不利于转向。
最后采用了S3010舵机进行改装,S3010舵机使用电压为4.0~6.0V,角度控制为1度/400us,堵转力矩为6.5+0.02Kg.cm,,改装后的舵机速度缓慢,平稳,转矩强大,体积小,非常适合跑本迷宫小径,完全符合要求。
舵机驱动芯片,可以使用达林顿管搭成H桥式电路,提供功率足,但硬件搭建麻烦,而且舵机的电机电功率不大,没必要用大功率达林顿管。
可采用接线简单的驱动芯片,如LM298,,L293,LM298为恒流恒压桥式2A驱动芯片,包含4个逻辑驱动电路,可同时驱动2个直流电机,L293D内部集成了双极型H-桥电路,所有的开量都做成n型。
这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:
低速平稳性好等。
L293D可以同时控制2个电机。
每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。
选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。
选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转.峰值输出电流1.2A连续输出电流600MA,达到了设计要求,性能优异,可采用PWM进行速度的控制,故选择了L293作为驱动舵机的芯片。
1.2.4电源芯片的选择
小车的电源使用镉镍电池,容量1800mAH,电压7.2V,如果使用78xx芯片为电源稳压芯片,由于78xx为线性降压型DC/DC转换器,要求压差大于2V,但随着电源的使用输出电压下降,达不到78xx的压差要求,且效率低,不采用78xx作为稳压芯片。
LM1117和LM2940是低压差线性稳压器LDO,所要求的压差低,功率足够大,效率高,适合用于提供电池供电的DC/DC,于是电源稳压模块采用LM2940稳压5.0V作为MCU、红外发射接受电路、终点检测电路、LED电路的电源,LM1117可调稳压为6.0V作为2个舵机的电源,这样有效隔离了由于电机转动引起的电源电压波动和噪声,避免由此引起MCU复位或错误,大大提高了系统的稳定性。
1.2.5终点检测电路的选择
检测终点的红光可采用普通的光敏电阻,色差传感器,光敏三极管,光电开关等。
色差传感器分辨效果好,但价格昂贵,体积大,不使用。
光电开关接收方向单一,要求检测方向直线误差小,在本小车行走迷宫中难以做到如此精确的定位,也不采用。
普通的光敏电阻测量角度大,可以不要求精确地对正,但其灵敏度低,不好识别,故不采用。
最后选择了光敏三极管,检测角度较大,灵敏度高,再经一个三极管把检测信号放大后提供给AD转换,由转换值识别有无光源。
在光源检测中,采用判断有无“光源”,而不是判断是不是“红光”,这大大简化了识别过程,使识别简单有效。
2理论分析与计算
2.1路径识别的理论依据
要进行车体的控制,必须知道用来控制的信息和原理。
本方案采用连续模拟量采样反射管的电压值,根据电压值的大小识别车体和墙壁之间的距离,从而采取一定的控制措施,调整车体位置。
为了得到用于控制车体的原理和数据,我们研究了反射电压和距离的关系,测量数据列表如下:
反射式红外发射接收数据表
左边红外接收管
中间红外接收管
右边红外接收管
与墙面距离(cm)
电压值(v)
与墙面距离(cm)
电压值(v)
与墙面距离(cm)
电压值(v)
2.5
3.6
6
2.5
2.5
3.58
3.5
3.33
7
2.22
3.5
3.16
4.5
2.5
8
2.06
4.5
2.5
11
1.12
10
1.47
11
0.9
12
1.14
15
0.81
22
0.41
以上为小车左、中、右三路红外接收管接收到的电压和距离的关系,从图表中可以看出,接收到的电压和反射距离大致成线性关系,这为控制小车提供了理论依据,通过AD转换,取得左中右各路反射回来的电压,即可知道车的左前后和墙壁的距离,根据三方位的信息调整小车的姿态,控制小车沿直线走,左转,右转,后退,90度转、180度转。
外加了两个用于转弯角度定位的传感器,在车子转弯时,它们负责记录转弯时的一些数据,避免转弯的时候车子与墙面相撞,避免了小车突然卡死等一些意外情况。
2.2红外检测中的仲裁
2.2.1直线行驶
左墙
3cm
20cm
右墙
当小车(小车长度为10cm,这里已抽象为一点)在1位置时,左边传感器检测到3cm的距离,则认为小车已左偏并靠近左墙,当小车在2位置时,右边传感器检测到3cm的距离,则认为小车已右偏并远离左墙,同理,当小车在3,4位置时,分别认为小车已右偏并靠近右墙和小车已左偏并远离右墙,由4个状态来判断小车的位置,并使小车在中线4cm范围内行驶而不碰壁。
以左墙还是右墙作为判断依据,跟据程序而定(软件部分再说明)。
2.2.2路口处仲裁
当小车处于路口时,如右图的右路口,0,1,2号红外接收管分别接收到不同的
电压值,这些电压值代表了小车所处在的状态。
0号传感器的电压小于0.8V,即探测的距离大于15cm,可说明右边的距离为“无穷远”,可判断右边有路口,1号传感器电压大于2.5V,说明前方5cm处有墙壁,前方无路。
2号传感器的电压大于0.8V,说明左边15cm以内有墙壁,左边无路口,此时采取的策略是右转90度。
各个状态的AD值:
左传感器
中间传感器
右传感器
车子状态
188
37
61
最左方位
48
40
186
最右方位
188
188
60
左上方
56
188
188
右上方
97
72
121
中间位置
98
188
119
中间靠前
10
9
88
T字路口
8
8
191
右转路口
路口状态表
传感器号/电压/距离
5cm
15cm
路况
0
<0.8V
右方有路
>O.8V
右方无路
1
<2.5V
前方有路
>2.5V
前方无路
2
<0.8
左方有路
>O.8
左方无路
以上数据可用于路况判断,为转向控制策略提供控制信息。
2.2.3舵机转向的控制
使能EN
左电机
右电机
左电机
右电机
电动车运行状态
控制信号
B0
B1
B2
B3
1
0
1
0
1
正转
正转
前行
1
0
1
1
0
正转
反转
右转
1
0
1
1
1
正转
停
以右电机为中心原地右转
1
1
0
0
1
反转
正转
左转
1
1
1
0
1
停
正转
以左电机为中心原地左转
1
1
0
1
0
反转
反转
后退
1/0
0
0
0
0
停止
停止
停止
1/0
1
1
1
1
制动
制动
制动
B0,B1为左舵机的方向控制信号,B2,B3为右舵机的方向控制信号,其中转动的时间长短不同,可以分别得到45度,90度,180度旋转。
3硬件电路设计
3.1XS12控制器系统模块
3.2直流稳压电源
电源我们采用智能车1800mAH大容量电池,输出电压为7.2V,经过LM1117,LM2940组成的稳压电路输出6.0V,5.0V电压,LM1117、LM2940具有电流限制和热保护功能,输出电流可达800mA,输出电压精度高,稳定性好,波形失真小。
3.3电机的驱动模块
传动机构采用两个相同型号的舵机改装而成,驱动芯片采用高性能的L293,实现电机的正转反转,电路如下:
3.4反射式红外线传感器模块
红外检测使用多点检测法,再根据多个反馈数据,能更好的实现高精度控:
布局图为
硬件电路如下:
接收管接收到红外线信号的强弱和通过接收管的电流成正比,经电阻转换,变成电压值,再经由LM358组成的电压跟随器和电容滤波,得到稳定的电压值,输出用于AD转换。
3.5光敏三级管检测模块
光敏三级管对终点设有的红光标志进行感应识别,检测到信号小车将做停车处理。
原理图如右:
为了避免红外发射管发射的红外线的影响,该电路安放在红外模块的下面,并向车里面延伸,在距车头往里3cm处安装,确保三极管只能接受到红光信息。
4.软件设计
4.1系统软件设计
4.1.1算法的分析:
经典算法有:
右手法则,左手法则,中左法则,乱数法则,最终我们选定了右手法则:
右手法则:
第一次慢探测,前、左、右各有一红外探测管,小车初始方向为西。
此时,标记前探测器为西,左探测器为南,右探测器为北,地图用二维数组Map[8][8]描绘,初值为0,其高四位依次表示为北西南东,前进时,根据探测器的测量值,通行方向记为1,遇到拐弯处,改变小车方向。
同时改变探测器与方位对应关系继续前进探测;遇到死巷,掉头前进探测,同时改变探测器与方位对应关系前进探测;其间除了路线的绘制,还记录下每个方向所经过的步数(虚拟方格数)。
到终点时,改变策略,回到起点,(起点的判断:
东西南北各方向的步数超过9即可判断到达起点),小车应立即掉头,准备下来的冲刺。
根据记录下来的路线图信息,如哪个方向通路,每个方向的步数,进而快速的走到终点。
其中前进方向可由每两个二维坐标点的差值判定。
车子运行有三种状态:
左转状态,右转状态,直线前行状态,车子运行在迷宫里面的的时候,以左右两边红外接收数据作为标准判断,车子前进分析如图:
4.1.2系统软件流程图
4.2软件模块设计
4.2.1直线行走策略
右边检测>7cm误判为远离右方
直线行走模块软件设计中,采用的是“平行走”法,即每走一步纠正之后与墙壁平行,矫正若干步之后到达中线时也与墙壁平行。
在中线4cm范围内则直线行走。
这有效避免了由于拐弯过度而使小车撞墙后误判而在道路中间打转。
任何时刻左右方向都至少有一个传感检测到信号,依据此原理,可以消除小车的盲区:
如果只检测到右边有墙,则以右墙为判断依据进行直线行走,如果只检测到左边有墙,则以左墙为判断依据进行直线行走,如果同时检测到左右两边有墙,则以右墙为判断依据进行直线行走。
即以按右墙判断行走为最高优先级。
“平行走”算法:
pingxing_go()
{
if((右边>=7cm)&&(右边<=15cm))
{
turn_right();
delay_1ms(150);
follow_go();
delay_1ms(450);
turn_let();
delay_1ms(130);
}
else
{
if((右边<=3cm)&&(右边<=15cm))
{turn_let();
delay_1ms(150);
follow_go();
delay_1ms(450);
turn_right_go();
delay_1ms(130);
}
elsefollow_go();
}
}
4.2.2路口转弯策略
路口的情况有8种,每一种都有对应的行动策略,路口的情况用一个数组lukuang[3]来表示,lukuang[0],lukuang[1],lukuang[2],分别表示左,中,右的路口情况,1表示有路口,0表示无路口。
8种路口状况:
000001010011
100101110111
本方案中采用右手深度优先遍历算法进行图的搜索:
所搜路径为:
0-2-6-12-11-5-1-4-10-9-3-8-7
搜索到目标则停止所搜。
各种路口状态的右手法则处理策略
路口状态lukuang[x]
000
001
010
011
100
101
110
111
处理策略
向后转180度
右转90度
直线行走
右转90度
向后转180度
向右转90度
直线行走
直线行走
if(前方>=5cm)
{if((右边<=15cm)||(左边<=15cm))
{if(右边<=15cm)right_go();
elseif(左边<=15cm)
{follow_go();
delay_1ms(500);
turn_90right();
follow_go();
delay_1ms(900);
stop();
}
}
elsefollow_go();
}
else
{stop();
if((右边<=15cm)&&(左边<=15cm))turn_180();
else
{if(右边<=15cm)
{turn_90let();
if(前方>=5cm)
{follow_go();
delay_1ms(delay_turn_time);
stop();
}
}
else
{turn_90right();
if(前方>=5cm)
{follow_go();
delay_1ms(delay_turn_time);
stop();
}
}}}
4.2.3终点检测
if(检测AD>设定值)
{stop();
while
(1)
{
LED=~LED;
delay_1ms(200);
}
}
5.总结
我们的完成情况:
1.小车基本控制:
能够实现在迷宫场地内比较快速的完成直行的前进、倒退、急停,以及原地90度180度转弯等基本的运动方式,在行进中根据红外检测信号快速进行自我调节,车子运行比较顺畅。
2.红外线探测:
通过红外线的探测,反馈回3个信息,前方,左方,右方,通过调节每一个红外线发射接受器的发射和反馈的强度,设置好相应的参数,单片机分析数据做出相应的判断使小车能正常工作。
3.通过对小车各个状态参数的修改和对硬件的完善,我们对车子运行当中遇到的不稳定拐弯,转向不到位,碰壁停止不前,进入死循环绕圈转,到尽头不及时转向,行进速度慢等问题进行了改进,现在车子能够达到比较稳定的前进效果,很少会出现判断失误,转向不到位,死循环等问题,能达到自动避障。
6.心得体会与致谢:
1红外测距,最难以把握的就是数据的精确度和稳定性,对于在迷宫里运行的小车来说,把握不好各个传感器的特性,也就是电压与测得距离的关系,车子将无法做到自动避障,开始我们改变各个传感器与墙壁之间的距离,用万用表测得相应的电压值,再根据得到的数据进行参数的调整,发现不管什么调整数据都不是很理想,为了得到更加精确地数据,我们使用了MC9SS12XS128在线调试功能,用调试器实时监视多个传感器的AD变换值,做好记录,传感器数据越多,可供参考的信息就多,车子的状态判断更加精确,失误率降低。
2:
稳定的电压对车子来说非常重要,如果电源不是很稳定或者达不到想要的电压,都极大影响电路性能,本来已经设置好的参数会因为电压改变而变化。
3:
红外传感对环境的变化很敏感,我们在不同的时间段不同的环境条件下测得的数据有很大的不同,这就很难保证车子不管在什么环境下都能顺利的运行,这个问题困扰了好久,后来老师建议我们采用环境参数补偿法,单片机把不同时间段测得的数据存储起来,在实际比赛的时候车子先自我收集各个传感器的数据,经过单片机内部判断比较,对数据进行自我校验,这样车子不管在什么样的环境条件下都可以很好的工作。
4:
车子运行轨迹方案的确立,车子在运行的时候如果发生运行偏差,如何进行有效快速的校正是个难题,在直线行走的时候我们采用校正方案是:
检测偏----后退左转或右转----前进一段距离-----校正------前进,在弯道的时候,我们采用的两个传感器同时感应判段转向,当两个传感器都感应到差不多一样的数据时,这时候车子已经走进转向口,有足够的空间可以转向,这样子的话就避免了碰壁的可能。
5:
红外线对光敏三级管的影响很大,当红外线照射到光敏三级管上的时候,同样输出高电平,这极大地影响了,三极管对终点红光的检测,我们想的办法是把三极管放在红外管照射不到的地方,这就没什么问题了,不然还没到终点,三极管因为感应到红外线而停止运行。
非常感谢学校老师能给我们这个锻炼自我提升自我的机会,随着科技的发展,智能科学已经慢慢成为现阶段的主流,但是对大学生来说,高级自动控制和智能控制离我们还有点远,这一次比赛给我们的触动很大,我们通过做这个迷宫小车,一步一步的完善框架结构和迷宫算法、调试程序,遇到很多困难,在克服困难时也学会了很多新的知识,对智能控制有了更深刻的认识,虽然辛苦,但也乐在其中,希望在以后的日子里,我们能够在学校老师的辅导下,科技之路走得更远更好
参考文献
【1】(美)JosephLJones.机器人编程技术—基于行为的机器人实战指南[M].北京:
机械出版社,2007年
【2】卓晴,黄开胜,邵贝.学做智能--挑战飞思卡