智能往返小车的设计与实现.docx
- 文档编号:23848891
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:67
- 大小:445.97KB
智能往返小车的设计与实现.docx
《智能往返小车的设计与实现.docx》由会员分享,可在线阅读,更多相关《智能往返小车的设计与实现.docx(67页珍藏版)》请在冰豆网上搜索。
智能往返小车的设计与实现
智能往返小车的设计与实现
---电路+程序+论文
学校:
系别:
专业:
作者:
指导老师:
学号:
班级:
摘要
(关键词:
智能单片机传感器寻迹数码管)
智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途,据本人推测这种这智能将很快运用于我们的生活之中。
智能电动车就是其中的一个体现。
所以,智能往返小车的设计将为今后智能汽车的研究与发展作下很好的模拟与铺垫,设计与实现其功能具有科技意义。
本次设计的智能往返小车的实现功能:
参考智能小车行驶路线示意图,小车从起跑线出发,沿引导线(白纸铺设)到达B点,此过程检测纸下的3块铁片,小车检测到薄铁发出声光指示并实时存储铁片数目;接着通过弯道到达C点并且检测到铁片停留5秒并且声光提示;最后绕过障碍物寻找光源到达仓库停止。
停车后能够通过按键选择在数码管显示全过程所检测到铁片的数目和运行全过程的时间。
本次设计的智能往返小车,采用STC89C52单片机作为小车的检测和控制核心。
设计分为5个模块:
前轮PWM驱动电路、后轮PWM驱动电路、轨迹探测模块、障碍物探测模块、光源探测模块。
前轮PWM驱动电路用于转向控制;后轮PWM驱动电路用于方向和速度控制;探测模块利用三个光感元件,对黑色轨道进行寻迹;障碍物探测模块用于对两个障碍物进行探测;光源探测模块利用三个光敏电阻制成,用于寻光并确定光源角度,以期获得较为精确的转向值。
绕障方案利用障碍物较低这个重要条件,在C点出发后,先利用光敏电阻获得光源的方向是本设计的一大特色。
本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。
智能小车行驶路线示意图
1设计任务………………………………………………………………………6
1.1要求………………………………………………………………………6
1.2说明………………………………………………………………………6
2方案论证比较与选择…………………………………………………………7
2.1轨迹探测模块设计与比较………………………………………………7
2.2数据存储比较……………………………………………………………7
2.3障碍探测模块方案分析与比较…………………………………………8
2.4寻找光源方案分析与比较………………………………………………8
2.5距离检测方案比较………………………………………………………9
2.6刹车机构功能方案比较…………………………………………………10
2.7金属探测方案比较………………………………………………………10
3硬件设计……………………………………………………………………10
3.1总体设计…………………………………………………………………10
3.2原理分析和说明…………………………………………………………11
4软件设计……………………………………………………………………14
4.1软件设计特色说明………………………………………………………14
4.2总体流程图………………………………………………………………15
5智能小车原理图………………………………………………………………16
5.1最小系统控制核心………………………………………………………16
5.2外接控制电路接口………………………………………………………16
5.3外接指示模块……………………………………………………………16
6智能小车PCB图……………………………………………………………17
6.1未敷铜PCB………………………………………………………………17
6.2敷铜PCB顶层……………………………………………………………18
6.3敷铜PCB底层……………………………………………………………19
7智能小车程序………………………………………………………………20
7.1typedef定义变量文件“Config.h”…………………………………20
7.2I/O引脚定义文件“IOCfg.c”………………………………………20
7.3寻迹模块函数声明文件“Flollow.h”………………………………22
7.4寻迹模块函数定义文件“Flollow.c”………………………………22
7.5电机驱动模块函数定义文件“StepMot.h”…………………………23
7.6电机驱动模块函数定义文件“StepMot.c”…………………………24
7.7金属检测模块函数声明文件“MetalDTC.h”…………………………26
7.8金属检测模块函数定义文件“MetalDTC.c”…………………………27
7.9蔽障模块函数声明文件“UltrADTC.h”………………………………28
7.10蔽障模块函数定义文件“UltrADTC.c”……………………………28
7.11光源检测模块函数声明文件“LightDTC.h”………………………29
7.12光源检测模块函数定义文件“LightDTC.c”………………………29
7.13数码管显示模块函数声明文件“SegDisp.h”………………………30
7.14数码管显示模块函数定义文件“SegDisp.c”………………………31
7.15按键模块函数声明文件“KEY.h”……………………………………32
7.16按键模块函数定义文件“KEY.c”……………………………………32
7.17延时函数声明文件“TimeDLY.h”……………………………………33
7.18延时函数定义文件“TimeDLY.c”……………………………………33
7.19系统主函数文件“System.c”………………………………………34
8结论…………………………………………………………………………38
9致谢…………………………………………………………………………39
10参考文献……………………………………………………………………40
11附录…………………………………………………………………………41
1.设计任务:
设计并制作了一个智能电动车,依照智能小车行驶路线示意图,其行驶路线
及过程满足所需的要求。
1.1要求:
1.1.1基本要求:
(1)电动车从起跑线出发(车体不得超过起跑线),沿引导线到达B点。
在“直
道区”铺设的白纸下沿引导线埋有1~3块宽度为15cm、长度不等的薄铁片。
电
动车检测到薄铁片时需立即发出声光指示信息,并实时存储、显示在“直道区”
检测到的薄铁片数目。
(2)电动车到达B点以后进入“弯道区”,沿圆弧引导线到达C点(也可脱
离圆弧引导线到达C点)。
C点下埋有边长为15cm的正方形薄铁片,要求电
动车到达C点检测到薄铁片后在C点处停车5秒,停车期间发出断续的声光
信息。
(3)电动车在光源的引导下,通过障碍区进入停车区并到达车库。
电动车必
须在两个障碍物之间通过且不得与其接触。
(4)电动车完成上述任务后应立即停车,但全程行驶时间不能大于90秒,行
驶时间达到90秒时必须立即自动停车。
1.1.2发挥部分:
(1)电动车在“直道区”行驶过程中,存储并显示每个薄铁片(中心线)至起
跑线间的距离。
(2)电动车进入停车区域后,能进一步准确驶入车库中,要求电动车的车身
完全进入车库。
(3)停车后,能准确显示电动车全程行驶时间。
1.2说明:
(1)跑道上面铺设白纸,薄铁片置于纸下,铁片厚度为0.5~1.0mm。
(2)跑道边线宽度5cm,引导线宽度2cm,可以涂墨或粘黑色胶带。
示意图
中的虚线和尺寸标注线不在绘制在白纸上。
(3)障碍物1、2可由包有白纸的砖组成,其长、宽、高约为50cm
12cm
6cm,
两个障碍物分别放置在障碍区两侧的任意位置。
(4)电动车允许用玩具车改装,但不能由人工遥控,其外围尺寸(含车体上
附加装置)的限制为:
长度≤35cm,宽度≤15cm。
(5)光源采用200W白炽灯,白炽灯泡底部距地面20cm,其位置如图所示。
(6)要求在电动车顶部明显标出电动车的中心点位置,即横向与纵向两条
中心线的交点。
2.方案论证比较与选择:
2.1轨迹探测模块设计与比较
方案一、使用简易光电传感器结合外围电路探测
由于所采用光电传感器实际效果并不理想,对行驶过程中的稳定性要求
很高,且误测几率较大、易受光线环境和路面介质影响。
在使用过程极易出现问题,而且容易因为该部件造成整个系统的不稳定。
故最终未采用该方案。
方案二、利用两只光电开关
分别置于轨道的两侧,根据其接受到白线的先后来控制小车转向来调整车向,但测试表明,如果两只光电开关之间的距离很小,则约束了速度,如果着重于小车速度的提升,则随着车速的提升,则势必要求两只光电开关之间的距离加大,从而使得小车的行驶路线脱离轨道幅度较大,小车将无法快速完成准确的导向从而有可能导致寻迹失败。
方案三、用三只光电开关
一只置于轨道中间,两只置于轨道外侧,当小车脱离轨道时,即当置于中间的一只光电开关脱离轨道时,等待外面任一只检测到黑线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨道)再恢复正向行驶。
现场实测表明,虽然小车在寻迹过程中有一定的左右摇摆(因为所购小车的内部结构决定了光电开光之间的距离到达不了精确计算值1厘米),但只要控制好行驶速度就可保证车身基本上接近于沿靠轨道行驶。
综合考虑到寻迹准确性和行驶速度的要求,采用方案三。
2.2数据存储比较
方案一、采用外接ROM进行存储
采用外接ROM进行存储是保存实验数据的惯用方法,其特点是在单片机断电之后仍然能保存住数据,但无疑将增大软硬开销和时间开销。
方案二、直接用单片机内部的RAM进行存储
虽然不能在断电后保存数据,但可以在实验结束后根据按键显示相应值。
而且本实验的数据存储不大,采用RAM可以减少IO接口的使用,便利IO接口分配,故此方案具有成本低、易实现的优点,更符合实际需求。
鉴于方案二的以上优点,综合比较,本方案采用方案二。
2.3障碍探测模块方案分析与比较
考虑到在测障过程中小车车速及反应调向速度的限制,小车应在距障碍物40CM的范围内做出反应,这样在顺利绕过障碍物的同时还为下一步驶入车库寻找到最佳的位置和方向。
否则,如果范围太大,则可能产生障碍物的判断失误;范围过小又很容易造成车身撞上障碍物或虽绕过障碍物却无法实现理想定向方案。
方案一、采用一只红外传感器置于小车中央
一只红外传感器小车中央安装简易,也可以检测到障碍物的存在,但难
以确定小车在水平方向上是否会与障碍物相撞,也不易让小车做出精确的转向反应。
方案二、采用二只红外传感器分置于小车两边
二只红外传感器分别置于小车的前端两侧,方向与小车前进方向平行,对小车与障碍物相对距离和方位能作出较为准确的判别和及时反应。
但此方案过于依赖硬件、成本较高、缺乏创造性,而且置于小车左方的红外传感器用到的几率很小,所以最终未采用。
方案三、采用一只红外传感器置于小车右侧并与小车前进方向呈一固定角度
基于对C点后行车地图中光源及障碍物尺寸、位置的分析,我们采用了从C点出发即获得光源对行车方向的控制,在向光源行驶的过程之中检查障碍物并做出相应的反应,这样不仅只使用一只红外传感器就实现了避障,而且避免因小车自然转弯而导致的盲目方向控制,同时为后面以最简单直接的路线和在最短时间内驶入车库创造了机会。
智能小车应以准确、智能见优,采用方案三。
2.4寻找光源方案分析与比较
方案一、采用多只方向性较强的光敏二极管作光源定位器
若干定位器在水平面上按不同角度展开,在寻找光源时根据每个定位器接收到的光线强弱(有无)得出实时车库方位。
该方案若采用方向性较强的光敏二极管作为光源定位器,要么是需要很多的器件,要么是难以检测到光源的方向。
方案二、采用一个光源定位器
用深色不透光材料与光敏电阻制成的光源定位器有较理想的定向测试效
果,2.5米之外就可以确定电源的方向。
当小车绕过障碍物之后,通过不停
地旋转使定位器获得最大光线照射以确定光源方向,这种方案有一定的可行
性,但寻找光源的过程必定带来不必要的大量时间开销,且寻找过程盲目性
太大,不利于控制,又增加了一个电机,增大的电源方案选择或安装的难度。
方案三、利用多只光源定位器
在方案二所得数据的基础上,结合光敏电阻的敏感性,只用三到五只光
敏电阻就可以达到目的,只是因其对光非常敏感,所以必需为每只光敏电阻
加上黑色隔离板。
虽然制作有一定难度,但其能见长度和相对简明的控制措
施显示了很大的优越性。
综合考虑以上方案,方案三更具准确性和独创性,故我们采用方案三。
2.5距离检测方案比较
方案一、
通过测试得出小车平均速度v,在行驶过程中将行驶时间与其乘积t•v
作为驶过的距离。
但该方案受电池电量、路面介质等因素的影响,在大多数
情况下均暴露出误差较大的缺点。
故不予采用。
方案二、
在后轮内侧匀距贴上m个磁钢,车厢内装上霍尔开关。
对轮子转速进行
测量,由于低速下轮子与地面接触良好,设轮周长为c,可以用霍尔开关输
出脉冲数n乘以c/m得出行驶距离。
只要磁钢在后轮上的位置足够精确,
霍尔开关固定牢靠,就可以获得较好的测试效果。
但车子颠簸时,稳定性较
差。
方案三、
在齿轮箱中安装透射式光电开关,测出变速齿轮的每秒转速,用变速比
和车轮周长计算出线速度,积分求行驶距离。
但在齿轮箱中使用光电开关,
要求有足够的安装位置,不能影响传动机构的机械动作。
其优点是工作稳定。
综合以上方案优劣和小车的结构特点,本系统采用了方案二。
2.6刹车机构功能方案比较
方案一、自然减速式
当系统发出停止信号时停止给驱动电机供电,小车在无动力状态因阻力
而自然变为静止。
由于惯性,小车全速行驶时需1.8秒后才能停止,因车轮
滑行造成的误差较大。
无法实现精确制动的目标。
方案二、反转式
当小车需要停车时给驱动电机以反转信号,利用轮胎与跑道的摩擦力抵
消惯性效应。
由于车速是渐减的,反向驱动信号长度也要渐减,否则小车可
能反向行驶。
使用此方案后全速刹车反应时间减少为0.5s。
本系统中采用方案二。
2.7金属探测方案比较
方案一、使用探测线圈和探测仪构成的金属探测器
此类金属探测器利用探测线圈产生的交变磁场在接近金属材料时产生微
弱变化这一原理,将变化信号放大处理进而实现探测金属的目的。
由于该探
测器结构复杂,在短期内不可能完成制作,为节省时间,我们放弃了该方案。
方案二、使用电感式接近开关代替金属探测器
电感式接近开关本身就是理想的传感器。
当金属物体接近开关的感应区
域,开关就能无接触,无压力、无火花、迅速作出反应。
用它作为本次小车
的金属传感器,简单易行、准确且抗干扰性能优越。
本系统中采用方案二。
3.硬件设计:
3.1总体设计
3.1.1本设计需要器件清单
元件
数量
元件
数量
元件
数量
接近开关
1只
电位器
若干
二极发光管
若干
光电开关
5只
单片机最小系统板
一块
12M晶振
1只
霍尔开关
1只
光敏电阻
若干
51系列89C52芯片
一块
玩具电动小车
1辆
集成电路芯片
三个
数码管
2位
电阻,电容
若干
蜂鸣器
一个
按键
若干
3.1.2设计模块图
3.2原理分析和说明
3.2.1键盘显示模块说明及示图
设计使得原本需要14个IO接口的键盘显示少用了9个单片机IO接口,
虽然该设计的优势在本实验中没有完全体现出来,但若在现代工业设计中应用此方案,在对引脚需要较大的产品中其优点将体现得淋漓尽致。
3.2.2元件安装方位图
3.2.3光敏电阻分布位置图
3.2.4小车动力系统
为达到满意的控速性能,动力系统中的驱动电路使用了自制的PWM模
块并配以组合门电路加以保护。
在行驶过程中有可能变热的部分电路也涂上了低熔点胶给予保护,有效的保证了整套系统的工作稳定性。
3.2.5车顶状态彩灯
直接由单片机控制的车顶状态彩灯简单易行,却使得小车更加人性化。
3.2.6四电源供电系统
为确保在行驶过程小车各部件均能正常工作且相互之间不收影响,我们使用了四组电源为不同模块提供工作电压。
其中:
三组9V电源分别为测距光电开关供电,经整流稳压后单独为单片机最小系统及其附属部件供电,及为霍尔开关、寻迹光电开关供电,一组6V电源为电机供电。
如此安排满足了多次测试大量用电的需求。
3.2.7结合实际的传感器采集方式安排
鉴于小车使用的传感器较多,不可能也没必要让所有的传感器都采用中断方式,由于霍尔传感器和金属探测器应用于实时检测,我们安排它们工作在中断方式下,让应用于分时检测的其他传感器工作在查询方式下。
这样不仅贴合实际,更有效地节省了单片机的引脚空间。
3.2.8独具自动返回跑道能力的寻迹方式
小车的寻迹模块采用三只光电开关。
一只置于轨道中间,两只置于轨道外侧,当置于中间的一只光电开关检测不到黑线且外侧两传感器任一只检测到黑线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨道)再恢复正向行驶。
这种寻迹方式的独到之处在于,当小车因车速过快而使所有传感器脱离轨道时小车能根据最近一次转弯记录自动判别正确的运动轨迹,从而自动返回轨道。
4.软件设计:
4.1软件设计特色说明
4.1.1不同占空比脉冲驱动电动机
以往方案都是用事先定义好的0、1脉冲置于ROM中以查表获得脉冲的方法,但是这种办法不但不方便于操作,还占用了ROM单元,在使用上不具优越性。
而本次方案在软件设置上,每个全脉冲都由40个10ms脉冲组成,前面全都是1,后面都是0,高脉冲,即1的个数由RAM中5AH单元中摆放的数值来决定,所有脉冲均通过计数器中断来控制,中断每10ms询查一下5BH单元,当5BH中数小于5AH中数时,脉冲置1,否则置0,每次5BH中数值加1,加到40就清0。
这样就减少了许多ROM空间的使用,减少了软件延时控制的麻烦,通过设置5AH单元中的数来设置档,即我们有40个档可调。
4.1.2越障程序的设计
特色之处在于,本设计充分利用了障碍物高度为6cm且光源高20cm这个重要条件,在从C点出发之初就寻找光源,以通过查询三个光敏电阻的阻值变化来确定车身与光源的方位,在无其它参照物的情况下通过光源来确定小车的运动方向控制。
在这个过程中首先不断追踪光源的方位,锁定光源后立即检测前方是否有障碍物,当检测到障碍物时即刻放弃追踪光源而左转躲避,直至不再探测到障碍物又重新追踪光源,如此循环,就可达到安全迅速地进入车库的目的。
在一开始就将探测障碍物与寻找光源同时进行,经计算和实验论证,本方案能大幅度提高避障和寻光源的速度,降低寻找路线的盲目性。
4.1.3主程序分段
无论是在网上还是在一些参考资料上,许多软件大多的运行控制都是由一个主程序的循环来进行的,但本软件在主程序上也采取了分段的方式。
在主程序间根据不同的功能区间来进行跳转,很明确很直观地将主程序进行了功能分段,为子程序的设计、程序的控制提供了很大方便,同时增强的程序的可读性。
4.1.4时钟控制
所有倒计时,计时都通过计时器1中断控制,根据RAM单元中相应的控制位选择不同的工作。
在计时器计到90秒时,显示时钟,停车,并跳转到HOME程序段,以确定用户按键从而显示不同的数值供查询使用。
4.1.5软件降温
在长转弯过程中通过设置前端转向电机间隙停转以达到降温的目的。
4.1.6转弯加速
由于本设计前后电机采用同一电源供电,在前轮转向时,后轮速度将有所降低,此时即通过软件表象加速来弥补其电流的降低,从而提高了小车在弯道的行驶速度。
4.1.7进弯道前减速行驶
分别采用不同的速度来控制直道与弯道的行驶,可以使得在直道区尽可能加速,以节省时间;在弯道区减速,有更多的时间来寻轨,避免脱离轨道,也使得小车以比较直的方向进入C点以后区域
4.2总体流程图
5.智能小车原理图:
5.1最小系统控制核心
5.2外接控制电路接口
5.3外接指示模块
6.智能小车PCB图:
6.1未敷铜PCB
6.2敷铜PCB顶层
6.2敷铜PCB底层
7.智能小车程序:
7.1typedef定义变量文件“Config.h”
#ifndef_CONFIG_H_
#define_CONFIG_H_
typedefunsignedcharINT8U;//无符号8位整型变量
typedefsignedcharINT8;//有符号8位整型变量
typedefunsignedshortINT16U;//无符号16位整型变量
typedefsignedshortINT16;//有符号16位整型变量
typedefunsignedlongINT32U;//无符号32位整型变量
typedefsignedlongINT32;//有符号32位整型变量
typedeffloatFP32;//单精度浮点数(32位长度)
typedefdoubleFP64;//双精度浮点数(64位长度)
//电机速度
#defineHSPEED50
#defineLSPEED20
#endif//_CONFIG_H_
7.2I/O引脚定义文件“IOCfg.c”
#include
/*引脚定义*/
//步进电机引脚
//左边电机
sbitLMot_AP=P0^0;
sbitLMot_AN=P0^1;
sbitLMot_BP=P0^2;
sbitLMot_BN=P0^3;
//右边电机
sbitRMot_AP=P3^4;
sbitRMot_AN=P3^5;
sbitRMot_BP=P3^6;
sbitRMot_BN=P3^7;
//寻线电路引脚
sbitFollow_L=P0^5;
sbitFollow_M=P0^6;
sbitFollow_R=P0^7;
//金属检测引脚
sbitMetal_DTC=P3^2;
//超声波障碍物检测引脚
sbitUltraDTC_TR=P1^0;
sbitUltraDTC_RE=P1^1;
//光源检测引脚
sbitLightDTC_L=P1^2;
sbitLightDTC_M=P1^3;
sbitLightDTC_R=P1^4;
//声光指示引脚
sbitGuide=P1^5;
//数码管显示引脚
#defineDispDataP2
sbitDS1CS=P1^6;
sbitDS0CS=P1^7;
//按键选择
sbitKEY_1=P0^4;
sbitKEY_2=P3^3;
7.3寻迹模块函数声明文件“Flollow.h”
#ifndef_FOLLOW_H_
#define_FOLLOW_H_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 往返 小车 设计 实现