ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:420.05KB ,
资源ID:26104262      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26104262.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(超声波避障小车的设计书.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

超声波避障小车的设计书.docx

1、超声波避障小车的设计书超声波避障小车的设计书1.1立项目的(1)设计一辆利用超声波传感器来实现避障功能的小车,使小车对其运动方向受到的阻碍作出各种躲避障碍的动作。(2)进一步学习单片机原理及其应用,了解超声波传感器的工作原理。1.2立项意义在科学探索及紧急抢险中经常要对一些危险或人类不能直接到达的地域进行探测,这就需要用机器人来完成。而机器人在复杂地形行进时自动避障是一项必不可少也是最基本的功能。因此,自动避障系统的研发也就应运而生。自动避障小车就是基于这一系统开发而成的。随着科技的发展,对于未知空间和人类所不能直接到达的地域的探索逐步成为热门,这就使机器人自动避障功能的研发有了重大意义。通过

2、对自动避障小车的设计,我们可以将其运用于自动避障小车,以作为地域探索机器人和紧急抢险机器人的运动系统,让机器人在行进中自动避过障碍物。1.3设计要求(1)在车前方没有障碍物时,小车沿直线向前走。(2)在车前方有障碍物时,小车能避开障碍物,避障方法如下: 先向左边转90度,如果前面没有障碍物,再沿直线向前走;如果前面仍有障碍物,则向右转180度,如果前面没有障碍物,则直线行走;如果前面仍有障碍物,则向右90度,然后直线行走2课题设计2.1设计原理该智能车系统可分为四个主要模块:传感器避障模块,单片机主控核心模块,电机驱动模块,USB下载模块。鉴于电机驱动模块、USB下载模块已经由实验室直接提供了

3、,我们对于传感器避障模块和单片机主控核心模块进行了讨论。(1)传感器避障模块。智能车避障系统中的传感器一般分为接触型和非接触型两种,接触型相对比较简单。这里我们使用了超声波传感器进行测量,也即非接触型传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生震动产生的,在碰到杂质获分界面会产生显著反射从而形成反射回波,超声波传感器就是根据超声波在障碍物界面上的反射来判断检测物体的存在以及距离的。超声波频率高,波长短,绕射现象小,方向性好,再加上信息处理简单且价格低廉,所以这里我们使用28015-PING-v1.6超声波传感器对小车行进前方路况进行探测以及判断,它能实现从3cm到

4、1.8m距离的测量,从而识别出范围内的障碍物。我们将其作为传感器避障模块,利用其返回的数据,从而实现小车避障的功能。图2.1.1超声波传感器(2)单片机主控核心模块。在这次设计中我们选用已经学过的MCS-51单片机为核心作为控制模块。MCS-51系列单片机是美国Intel公司于1980年推出的产品,MCS-51系列单片机的影响及其深远,许多公司都推出了兼容系列单片机,使MCS-51内核成为一个8位单片机的标准,其典型产品有8031、8051、8751等等。(3)电机驱动模块。电机驱动模块是由两个伺服电机组成,伺服电机控制原理如下所示:控制电机运动转速的是高电平持续的时间,当高电平持续时间为1.

5、3ms时,电机顺时针全速旋转,当高电平持续时间1.7ms时,电机逆时针速旋转。图2.1.2伺服电机控制时序图2.2设计内容系统主要原理是:通过超声波避障模块(即感测模块)实时监测路面情况并及时传输给单片机。由单片机主控核心模块根据感测模块给予的信息控制小车两电机转动工作状态。电机驱动模块驱动两电机转动,实现前进或者左、右转。小车的避障流程如下:(1)在车前方没有障碍物时,小车沿直线向前走。(2)在车前方有障碍物时,小车能避开障碍物,避障方法如下: 先向左边转90度,如果前面没有障碍物,再沿直线向前走;如果前面仍有障碍物,则向右转180度,如果前面没有障碍物,则沿直线向前行走;如果前面仍有障碍物

6、,则向右90度,然后直线行走根据小车的避障流程画出小车避障程序的程序流程图如下:根据程序流程图编写单片机控制程序(见附录)2.3设计结果 组装出来的避障小车图2.3.1所示。将编写好的C语言程序转换成.hex文件,将.hex文件“烧入”单片机中,接通电源,小车向前沿直线行走,把手放在传感器前,小车立即向左旋转90度;放开手,小车又沿直线向前走。把手一直放在传感器前面,小车会先向左转90度,再右旋转180度,再接着向右旋转90度,再向左旋转90度,然后一直循环通过不同的测试发现下车完全满足设计要求。图2.3.1结题报告1、课题完成情况介绍将编写好的C语言程序转换成.hex文件,将.hex文件“烧

7、入”单片机中,接通电源,小车向前沿直线行走,把手放在传感器前,小车立即向左旋转90度;放开手,小车又沿直线向前走。把手一直放在传感器前面,小车会先向左转90度,再右旋转180度,再接着向右旋转90度,再向左旋转90度,然后一直循环通过不同的测试发现下车完全满足设计要求。2、设计中发现的问题及相应的解决情况2.1、发现的问题(1)通电之后,小车不停地旋转,旋转次序与设计的避障旋转次序一致,说明子函数“getx()”返回的Dis 的值一直小于10.(2)小车通电之后,小车在避障功能上完全满足要求,但是前进时,小车却每行进两三厘米就停顿一下,然后再行进两三厘米就停顿。2.2、解决情况(1)出现这个结

8、果的问题是子函数“getx()”里面的子函数delay_nus(1),因为delay_nus(1)的实现的延时时间实际上不是1us,因为delay_nus()函数里面有这样的语句“i=i/10”,这样实际上i就等于0;为了解决这个问题我们重新编写了一个延时函数delay_nus1(1),结果小车正常运行。(2)出现这个问题的原因是程序每循环一次时都应该初始化Sig口,我们在程序中加上了“delay_nus(20000);Sig=0;” 结果小车正常运行。3、课程设计的心得体会通过这次课程设计,我对单片机的原理和应用有了更深的理解。在这次课程设计中,我重新学习了一遍张毅刚老师编写的教材单片机原理

9、及应用,将以前学习的知识重新看了一遍,加深了我对单片机知识的印象。最重要的是,我知道如何在实际设计中使用单片机,这个是在课本上学不来的。在这次课程设计中我们遇到了很多问题,尤其是在调试程序的时候,虽然我们严格的按照程序流程图的逻辑来编写程序,编译也没有出错,但是把程序“烧入”单片机运行时小车总是不能按照预想的情况运行,经过我们耐心的调试和修改,以及在胡瑞强老师的耐心指导下,我们最终还是成功了。4、参考文献【1】张毅刚.单片机原理及应用.高等教育出版社。附录#include int dis,ltime,htime,time; /dis代表距离,time代表时间sbit SIG=P34; /P34

10、控制和读取传感器IO口状态sbit left=P10; /左轮sbit right=P11; /右轮/延时程序void delay(int i) /用于延时i微秒 i=i/10-14; /这里减去14因为通过debug得到精确时间 while(i-);void delay1(int i) /用于产生脉冲,激发超声波 while(i-);/初始化void init() TMOD=0x01; /T0方式1 TH0=0;TL0=0; /计时器清零 ET0=1; /定时器0中断允许 EA=1; /总中断允许 TR0=0; /定时器0先不开始计时/行车程序void xingjin(int l,int r

11、) /方便下面程序的编写 left=1; /给左轮提供长度为l微秒的脉冲 delay(l); left=0; right=1; /给右轮提供长度为r微秒的脉冲 delay(r); right=0; delay(18000);void left_90() /原地左转90度,两轮均为顺时针 int i=30; while(i) xingjin(1300,1300); i-; void right_90() /原地右转90度,两轮均为逆时针 int i=30; while(i) xingjin(1700,1700); i-; void right_180() /原地右转180度,两轮均为逆时针 in

12、t i=60; while(i) xingjin(1700,1700); i-; void forward() /前行,左轮逆时针,右轮顺时针 xingjin(1700,1300);/测距子程序int getx(int a) TH0=TL0=0; if(a) /通过产生一个脉冲,使发出超声波 SIG=0; SIG=1; delay1(1); SIG=0; while(SIG); /除噪 while(!SIG); /当超声波发出时低电平结束 TR0=1; /定时器0开始计时 while(SIG); /当收到回波或超时时高电平结束 TR0=0; /定时器0停止计时 ltime=TL0; /分别存储

13、定时器高低位的数据 htime=TH0; /经过debug可知每次计时约为1.085us time=htime*256+ltime; /将数据转化为时间,单位为微秒 dis=time/(2*29); /将时间转化为距离,单位为厘米/主程序void main() init(); /对定时器进行初始化,为计时测距做准备 while(1) /保证小车始终进行下面的判断 getx(1); /获得小车行进方向的障碍物信息 if(dis=10) /若距离大于10cm则继续前行,结束本循环 forward(); else left_90(); /否则左转90度,并进行下一次判断 getx(1); if(dis=10) /若距离大于10cm则继续前行,结束本循环 forward(); else right_180(); /否则右转180度,并进行下一次判断 getx(1); if(dis=10) /若距离大于10cm则继续前行,结束本循环 forward(); else right_90(); /否则右转90度,结束本循环 delay(20000); /这里考虑到有时会出现运行出错的现象 SIG=0; /加入了一个延时与清零的过程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1