单片机三级项目寻迹小车程序编写与实现含汇编程序和c语言C51语言.docx
- 文档编号:8239558
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:15
- 大小:3.47MB
单片机三级项目寻迹小车程序编写与实现含汇编程序和c语言C51语言.docx
《单片机三级项目寻迹小车程序编写与实现含汇编程序和c语言C51语言.docx》由会员分享,可在线阅读,更多相关《单片机三级项目寻迹小车程序编写与实现含汇编程序和c语言C51语言.docx(15页珍藏版)》请在冰豆网上搜索。
单片机三级项目寻迹小车程序编写与实现含汇编程序和c语言C51语言
三级项目
项目题目寻迹小车程序编写与实现
作者姓名吉人他手
学科专业车辆工程
指导教师吉人他手
2017年6月
单片机原理及应用三级项目报告
汽车起重机液压系统设计
学院:
车辆与能源学院
专业:
车辆工程1班
姓名:
吉人他手
指导老师:
吉人他手
完成日期:
2017年6月
一、项目背景
1.什么是循迹小车
如今,智能汽车迅速地发展。
智能车辆是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高新技术综合体。
目前对智能车辆的研究主要致力于提高汽车的安全性、舒适性,以及提供优良的人车交互界面。
近年来,智能车辆己经成为世界车辆工程领域研究的热点和汽车工业增长的新动力,很多发达国家都将其纳入到各自重点发展的智能交通系统当中。
而智能汽车最基本的一项技能就是按规定的路线行驶。
因此,循迹小车的实现是十分有思想上的指导意义的。
使用一定的循迹方法,使得小车自动循着赛道运行的技术,就是循迹技术,这样的循迹小车就叫做为简单的智能循迹小车。
智能循迹小车是指装备如电磁,光学或其他自动导引装置,通过电脑程序来控制,沿设定的引导路径行驶,也可把电磁轨道黏贴在地板上来确定其行进路线,无需驾驶员操作,将货物自动从起始点运送到目的地。
2.各种循迹方法介绍
红外对管循迹法:
利用黑、白色对红外线的吸收作用不同;使用红外传感器。
黑线的检测原理是红外发射管发射光线到路面,红外光遇到白底则被反射,接收管接收到反射光,经施密特触发器整形后输出低电平;当红外光遇到黑线时则被吸收,接收管没有接收到反射光,经施密特触发器整形后输出高电平。
摄像头循迹法:
利用摄像头读取赛道信息,分为模拟和数字;摄像头传感器实现智能车自主循迹行驶通过采用摄像头传感器的信号采样模块获取赛道黑线信息,高效稳定的循迹算法使小车能够自主识别黑色引导线并根据黑色引导线实现快速稳定的寻线行驶。
激光管循迹法:
和红外循迹法原理相似,但是检测距离远。
二、红外循迹原理
1.基本硬件
红外发射管和接收管:
分离式和一体式
2.变送电路
模拟量;
数字量:
将模拟量经过比较器输出开关量
3.信号接收原理
该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“路面”——黑线。
实验项目中在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。
红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。
在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。
1)红外管原理
外部图:
型号就是一个红外发谢管,一个红外接收管
内部图:
可以用下面的图理解,方框内部的电路如下图:
2)红外信号处理电路
由一个LM324芯片处理4路红外信号原理图如下:
3)信号显示LED电路
4路红外传感器有信号时相应的LED灯会点亮,低电平有效。
4.路循迹模块的输出
在一般电子设计比赛等对循迹功能要求不高的场合,完全可以采用比较器输出开关量,这样编程简单,易于实现
2路循迹模块则输出2路开关量,可以接单片机的普通输入IO口;
5.2路循迹实现方法原理
1)综述
黑线(黑色赛道)会根据小车的运行情况,被某一探头所检测到,则2个探头分为2种情况对小车进行转向控制;
若没有被任何一个探头检测到,则继续直行;上述算法描述是最简单的循迹算法,如果有一定的速度需求,则在以上算法上进行改进。
小车比赛赛道:
底色一般是白色,赛道一般为单条或双条黑线,具有直道、普通弯道、交叉、180度转弯、连续波浪弯道等。
自己制作跑道:
用黑胶布作为赛道,用白色KT板作为底板,如果没有KT板,也可以用大的白纸或者直接在浅色地砖上铺设赛道。
2)51智能车走黑线实现原理
利用黑色对光线的反射率小这个特点,当平面的颜色不是黑色时,传感器发射出去的红外光被大部分反射回来。
于是传感器输出低电平0。
当平面中有一黑线,传感器在黑线上方时,因黑色的反射能力很弱,反射回来的红外光很少,达不到传感器动作的水平,所以传感器输出1。
我们只要用单片机判断传感器的输出端是0或者是1,就能检测到黑线。
3)黑白线识别模块调试
由W1(W2)电位器,L1(L2)信号指示灯右左光电传感器组成。
L1(L2)信号灯没有接收到红外信号时会不亮(输出高电平1),当接到红外反馈信号后,指示灯亮起(输出低电平0)。
W1(W2)右(左)光电信号强度调节----顺时针调节电位器是增加检测距离,反时针调节电位器时减少检测距离
三、具体实现
1.总体方案
整个电路系统分为检测、控制、驱动三个模块。
首先利用光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。
系统方案方框图如图1所示。
2.循迹模块的安装调试步骤
1)将2路探头呈一行布置在智能车前方,探头朝下,可以采用铜柱+螺丝方式固定;
2)将中控板固定在车身上;
3)正确连接中控板和探头的杜邦线;
4)正确连接控制主板;
5)将小车放到赛道上,调节电位器,在赛道上平移小车,保证某探头在经过黑线和白底时,LED的状态不同。
6)若无论怎么调节电位器,LED状态都不变化,则应该是杜邦线接触不好,要更换。
3.调节循迹传感器灵敏度注意事项
1)小车必须用车子配套的电池供电,因为稳定的电流才能保证循迹传感器稳定工作,便于调试。
2)写入小车对应的循迹程序,
3)找干净的地面,一定要偏向于白色地面(不能有杂质颜色)。
4)把车子放地上,调节传感器对应的可调电阻刚好调节到对应循迹传感器的LED指示灯亮起来,亮了之后再调过一点点(不要调太多),然后车子平行抬高离开地面2-3厘米时对应的指示灯要灭掉,这样就是最合理的循迹传感灵敏度范围
4.循迹传感器51单片机接法
1)P3.3P3.4控制口分别对应HL-1小车底盘J5OUT1OUT2位置
2)P3.3----OUT1右传感器白线低电平有效
3)P3.4----OUT2左传感器白线低电平有效
5.调试技巧
把W1、W2可调电位器,用一字批慢慢调动到中间位置,小车放在一个能反光的平面上,此时L1、L2LED灯刚好点亮,再慢慢转动一字批,反时针方向,调到L1、L2灯刚好不亮,再放到准备好的黑色胶带上面,使L1、L2不亮,就完成了调试工作,当然实际行驶时还需要细调节一次。
注意:
要用充满电的两节3.6V电池调试
黑白线合理参数调试
调节电位器W1,在反馈距离与小车车轮底部一个平面上,操作员注意要认真,细致调动W1电位器,切忌操之过急。
有可能会出现黑线传感器感应不到黑线的情况,是因为黑线传感器的灵敏度调得太高了,应该调低灵敏度,这样才能检测到黑线,因为灵敏度太高,黑色反射的红外光都能被传感器识别,导致检测失败
应该把黑线传感器上的可调电阻参考上面调节说明调试。
6.调节循迹传感器灵敏度的方式
1)小车必须用车子配套的电池供电,因为稳定的电流才能保证循迹传感器稳定工作,便于调试。
2)写入小车对应的循迹程序,
3)找干净的地面,一定要偏向于白色地面(不能有杂质颜色)。
4)把车子放地上,调节传感器对应的可调电阻刚好调节到对应循迹传感器的LED指示灯亮起来,亮了之后再调过一点点(不要调太多),然后车子平行抬高离开地面2-3厘米时对应的指示灯要灭掉,这样就是最合理的循迹传感灵敏度范围
四、程序编写
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitIN1=P1^2;
sbitIN2=P1^3;
sbitIN3=P1^6;
sbitIN4=P1^7;
sbitEN1=P1^4;
sbitEN2=P1^5;
sbitGDL=P3^2;
sbitGDR=P3^3;
voiddelay(uintk)
{
uintx,y;
for(x=0;x for(y=0;y<30;y++); } voidrun(void) { IN1=0; IN2=1; IN3=1; IN4=0; EN1=1; EN2=1; } voidbackrun(void) { IN1=1; IN2=0; IN3=0; IN4=1; EN1=1; EN2=1; } voidleftrun(void) { IN1=0; IN2=1; IN3=0; IN4=0; EN1=1; EN2=1; } voidrightrun(void) { IN1=0; IN2=0; IN3=1; IN4=0; EN1=1; EN2=1; } voidstoprun(void) { IN1=0; IN2=0; IN3=0; IN4=0; EN1=1; EN2=1; } voidmain(void) { while (1) { if((GDL==1)&(GDR==1)) { stoprun(); delay (1); run(); delay (1); } if((GDL==0)&(GDR==0)) { stoprun(); delay (1); backrun(); delay (1); } if((GDL==1)&(GDR==0)) { stoprun(); delay (1); leftrun(); delay (1); } if((GDL==0)&(GDR==1)) { stoprun(); delay (1); rightrun(); delay (1); } } } 五、感想体会 吉人他手1: 通过本次单片机三级项目,自己有很多收获和体会。 刚开始的时候觉得单片机编程是比较难的,上课的时候就没太听懂,这次做项目自己做编程就感觉有些吃力,不过在通过请教同学和老师后,自己逐渐会了一些基础的编程,编程并不是之前想象的那么难。 通过组内三名成员的相互帮助和共同努力,最后我们成功的完成了小车的编程,成功完成三级项目,但是在过程当中并不是一直顺利的,遇到了一些问题,编码改了好多次,进行了多次调试之后才成功。 整个三级项目我体会到理论知识十分重要,基础不扎实,做项目就会很吃力,必须掌握基础,然后提高自己的实践能力和创新能力,还有就是注意团队合作,只有这样才能做好一个项目。 吉人他手2: 通过几次实验,让我对C语言有了简单的认识,这对三级项目中小车循迹程序的编写有很大的帮助。 同时也让我意识到要想更快的把把程序调试好一定要亲自去敲代码,当然对传感器的调试也是必不可少的。 更重要的是加强了我们组内成员的相互协作,合理分工的能力。 吉人他手3: 这次三级项目首先让我体会到了动手的重要性和培养动手能力的重要性。 比如这次三级项目的完成中,在调试灵敏度的时候就需要非常的小心,耐心,细心。 灵敏度调的不足和太多,都会形象小车很好的识别黑线线路,然而在不同的地方,红外管对赛道的识别对光的接受程度也不同,比如我们原来用的是我们自己电脑前桌子上的一条黑线去条灵敏度,一旦拿到老师的大桌子上,小车识别就变得不灵敏了。 后来才发现是因为我们的位置的光线比较暗,而老师桌子的光线很亮,这影响到了小车灵敏度的精准问题。 再一个就是让我认识到了程序的实现应用不仅仅是在于程序的编写,程序的就够多么完整,多么细密,而是在于调试。 小车的程序很简单,知道了原理,知道了思路小车的程序花不了多长时间就编写完成了。 然而当我们烧写到小车内之后才发现,小车并没有按我们想象中的去寻迹,有时甚至因为识别判断间隔时间太长而跑出赛道。 只有经过不断地调整,反复的烧写,反复的修改,才能按照最适合自己的意图和想法让小车跑起来,跑好,跑快。 参考文献 [1]李全利编著单片机原理及接口技术高等教育出版社,2009.1 [2]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009. [3]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010. [4]刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007. [5]钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社,2007. [6]李平等.单片机入门与开发[M].机械工业出版社,2008. [7]侯媛彬等,凌阳单片机原理及其毕业设计精选2006年,科学出版社 [8]罗亚非,凌阳十六位单片机应用基础2003年北京航空航天大学出版社 [9]北京北阳电子有限公司,061A凌阳单片机及其附带光盘2003年 [10]张毅刚等,MCS-51单片机应用设计,哈工大出版社,2004年第2版 [11]霍孟友等,单片机原理与应用,机械工业出版社,2004.1 [13]许泳龙等,单片机原理及应用,机械工业出版社,2005.1 [14]马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社,2003修订版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 三级 项目 小车 程序 编写 实现 汇编程序 语言 C51
![提示](https://static.bdocx.com/images/bang_tan.gif)