超声波避障小车结题报告_第1页
超声波避障小车结题报告_第2页
超声波避障小车结题报告_第3页
超声波避障小车结题报告_第4页
超声波避障小车结题报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.../HarbinInstituteofTechnology课程设计说明书〔论文设计题目:超声波避障小车院系:电气学院自动化测试与控制系班级:设计者:学号:指导教师:周庆东设计时间:9.2~9.13XX工业大学课程设计考核表题目:超声波避障小车学生姓名:班级:学号:实验部分考核考核内容分值得分基本设计任务的完成情况40附加设计任务的完成情况10对教师提问的回答情况10总结报告评分评分内容分值得分内容完整、字数达标20层次清晰、重点突出、分析透彻10书写规范、文字流畅5有独特见解、有一定的创新5总成绩:指导教师签字:结题报告1课题完成情况本超声波避障小车的设计基于单片机原理和传感器原理,以51单片机为主控芯片,采用直流电机为驱动元件,通过软件编程制作了一整套结构完整,功能模块化,反应较为灵敏的超声波避障小车。经过对该避障小车的避障测试实验,实验结果证明该避障小车能够很好的按照预期完成避障动作,并且能够快速运动灵敏避障,效果良好,运行稳定性较好。预期的目标都能够实现:〔1在车前方没有障碍物时,小车沿直线向前走。〔2在车前方有障碍物时,小车能避开障碍物,避障方法如下:=1\*GB3①先向左边转90度,如果前面没有障碍物,再沿直线向前走;=2\*GB3②如果前面仍有障碍物,则向右转180度,如果前面没有障碍物,则沿直线向前行走;=3\*GB3③如果前面仍有障碍物,则向右90度,然后直线行。但是该超声波避障小车还存在着许多的不足,比如说只能对正前方一定角度内进行探测,使用的是一路超声波而不是多路超声波探测,并且为了简化,默认的只是向同一个方向转弯等,这些都是有待进一步发展和提高的。2所遇问题及解决方案首先,我们对硬件的原理不够明白,在此之前超声波传感器并没有接触使用过,课程设计指导书上介绍的并不详细,我们利用课后时间查了更加详细的资料,对其做了近一步的了解。其次,在烧写完程序,通电之后,小车不停地旋转,旋转次序与设计的避障旋转次序一致,说明子函数"getx〔"返回的Dis的值一直小于10.出现这个结果的问题是子函数"getx〔"里面的子函数delay_nus<1>,因为delay_nus<1>的实现的延时时间实际上不是1us,因为delay_nus<>函数里面有这样的语句"i=i/10",这样实际上i就等于0;为了解决这个问题我们重新编写了一个延时函数delay_nus1<1>,结果小车正常运行。小车再次通电之后,小车在避障功能上完全满足要求,但是前进时,小车却每行进两三厘米就停顿一下,然后再行进两三厘米就停顿。出现这个问题的原因是程序每循环一次时都应该初始化Sig,我们在程序中加上了"delay_nus<20000>;Sig=0;"结果小车正常运行3心得体会通过这次的项目实训,我学习到了很多的电子知识,提高了我对于陌生硬件的学习能力。超声波传感器在此之前我没有接触过,对我来说非常的陌生,从一无所知慢慢查资料到能够熟练应用,让我知道了面对新的硬件应该怎么学习,在以后的工作学习中,我一定会遇到非常多的不熟悉的硬件,我相信,通过不断地锻炼积累,学习能力会进一步提高。这次实训同时还加强了我实践动手能力,特别培养了出现问题、分析问题、解决问题的能力,我相信这些能力的提高对我以后在从事任何工作都将会有极大的帮助。这次的项目实训让我感触最深的是:作为电子爱好者,电子制作中不管遇到什么问题和困境都要有一颗平静的心和坚持不懈的精神,一颗浮躁的心是不会到达成功的彼岸。这次课程设计,给我更多的是一种模块化的思想,将系统按我们所需的功能和系统所能提供的功能进行模块化的分类,将会使我们的工作变得一目了然,非常清晰。比如说这次我选的避障小车,可以分成超声波测速模块,电机驱动模块,单片机核心模块三个,三个部分各司其职,无论从硬件上还是软件上,都能够比较清晰地将他们的功能区分开,从而有利于硬件的连接和程序的编写。对于这次程序的编写,我就是分块编写,按模块调试,从而避免了许多错误。从以后工作来看,这种模块化处理问题的方式将会更加的有用,在公司和以后得科研项目中,系统一定是越来越复杂,不可能一个人完成所有的任务,一定是一个团队来做这些系统的设计,所以模块化之后,能够将任务分配给每个人,最后大家还能够很好的综合到一起,大大的缩短了开发周期。最后,感谢胡老师这么多天对我们的帮助,每次遇到问题时,老师都耐性的帮我解答问题,正是老师一次有一次的讲解才让我坚持下来。老师耐心细致的讲解也让我学到了很多课堂上没有学到的知识在此,感谢指导老师尽心的指导。4参考文献[1]袁新娜,与红英编著.超声波传感器在智能小车避障系统中的应用.[A]中北大学<2009>08-0085-04[2]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京.清华大学出社.2004[3]王晓明.电动机的单片机控制[M].北京.北京航空航天大学出版社.2002[4]臧杰,阎岩.汽车构造[M].北京.机械工业出版社.2005[5]安鹏,马伟.S12单片机模块应用及程序调试[J].电子产品世界.2006.第211期.162-163[6]童诗白,华成英.模拟电子技术基础[M].北京.高等教育出版社.2000[7]沈长生.常用电子元器件使用一读通[M].北京.人民邮电出版社.2004[8]宗光华.机器人的创意设计与实践[M].北京.北京航空航天大学出社.2004[9]张伟等.ProtelDXP高级应用[M].北京.人民邮电出版社.2002[10]张文春.汽车理论[M].北京.机械工业出版社.2005[11]江海波,王卓然,耿德根编著.深入浅出AVR单片机.中国电力出版社,2008.[12]邵贝贝.嵌入式实时操作系统[LC/OS-Ⅱ<第2版>[M].北京.清华大学出版社.2004附录:#include<reg51.h>#include<intrins.h>sbitSin=P1^5;//超声波模块控制端口sbitright=P1^0;//右轮控制信号sbitleft=P1^1;//左轮控制信号unsignedintDis,Time;unsignedcharLTime,HTime;voidIO_init<void>{EA=1; ET0=1; TMOD=0x11;//将T0定时器/计数器设置为16位计数模式 TH0=0x00;//初始值为0 TL0=0x00; TR0=0;//不开始计数}voiddelay_nus<unsignedinti>//延时函数{ i=i/10; while<--i>;}voiddelay_5us<>//短时间延时函数,为SIN高电平准备{ _nop_<>;}voidgetx<unsignedchara>//测距函数{ TH0=TL0=0;//初始值设置为0 if<a> { Sin=0;//Sin置0 Sin=1;//Sin置1,并且延时一段时间,提供一个测距的触发脉冲 delay_5us<>; Sin=0;//Sin重新置0 } while<Sin>; while<!Sin>;//SIN信号从低电平变为高电平,此时跳出该循环TR0置1,开始计数 TR0=1; while<Sin>;/SIN信号从高电平变为低电平,此时跳出该循环TR0置0,停止计数 TR0=0; LTime=TL0; HTime=TH0; Time=HTime*256+LTime;//将高8位乘以256加上低8位得到总值 Dis=Time/<2*29>;//计算出所差距离 }voidForward_fast<void>//快速前进{ left=1; delay_nus<1700>; left=0; delay_nus<20000>; right=1; delay_nus<1300>; right=0; delay_nus<20000>;}voidForward_slow<void>//慢速前进{ left=1; delay_nus<1580>;//减小左电机的高电平时间,增加右电机的高电平时间,减小速度 left=0; delay_nus<20000>; right=1; delay_nus<1420>; right=0; delay_nus<20000>;}voidLeft_90<void>//左转90度{unsignedinti=0;while<i<20>{ i++; left=1; delay_nus<1300>;//令左、右两轮均顺时针转动 left=0; delay_nus<20000>; right=1; delay_nus<1300>; right=0; delay_nus<20000>;}}voidRight_180<>{unsignedinti=0;while<i<38>{ i++; left=1;//令左、右两轮均逆时针转动 delay_nus<1700>; left=0; delay_nus<20000>; right=1; delay_nus<1700>; right=0; delay_nus<20000>;}}voidRight_90<>//令左、右两轮均逆时针转动{unsignedinti=0;while<i<20>{ i++; left=1; delay_nus<1700>; left=0; delay_nus<20000>; right=1; delay_nus<1700>; right=0; delay_nus<20000>;} }voidmain<>//主程序{ IO_init<>;//初始化 while<1> { getx<1>;//测距 if<Dis>=50>//如果距离大于50 { Forward_fast<>; //快速前进 } elseif<Dis>=10&&Dis<50>//如果距离在10与50之内 { Forward_slow<>; //慢速前进 } else //否则,小于10,需转向避障 { Left_90<>; //先左转90度 getx<1>; //测量距离 if<Dis>=10>//如果距离大于10 { Forward_slow<>;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论