单片机课程设计-超声波避障小车_第1页
单片机课程设计-超声波避障小车_第2页
单片机课程设计-超声波避障小车_第3页
单片机课程设计-超声波避障小车_第4页
单片机课程设计-超声波避障小车_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计——超声波避障小车课程设计说明书(论文)设计题目:超声波避障小车院系:学院班级:设计者:学号:指导教师:设计时间:8.27~9.10单片机课程设计——超声波避障小车全文共21页,当前为第1页。单片机课程设计——超声波避障小车全文共21页,当前为第1页。单片机课程设计——超声波避障小车全文共21页,当前为第2页。课程设计任务书单片机课程设计——超声波避障小车全文共21页,当前为第2页。姓名:院(系):专业:测控技术与仪器班号:任务起至日期:2012年8月27日至2012年9月7日课程设计题目:超声波避障小车已知技术参数和设计要求:已知技术参数:工作电压:5v工作电流:30mA典型,50mA最大工作频率:38.5KHz最大探测距离:1.8m最小探测距离:3cm输入触发器:上升沿触发回波脉冲:正TTL高电平脉冲宽度下一次测量的延时:20mS设计要求:实现小车自动避障任务,采用超声波模块实现小车避障功能。工作量:总工作时间为10天;完成硬件电路的设计工作;设计程序流程图并编写、调试程序;硬件连接调试,完成设定的功能;最后撰写开题报告和结题报告各一份。单片机课程设计——超声波避障小车全文共21页,当前为第3页。单片机课程设计——超声波避障小车全文共21页,当前为第3页。工作计划安排:1)2012.8.27——2012.8.28:任务布置、查阅资料,了解小车避障原理;2)2012.8.29——2012.8.30:根据要实现的功能及采用的方法设计程序流程并编写程序;3)2012.8.31——2012.9.3:程序装载、调试运行各种拟实现的功能;4)2012.9.4——2012.9.5:完成设定要实现的功能,撰写课程设计说明书;5)2012.9.6——2012.9.7:完成硬件调试、验收。同组设计者及分工:自己独立完成:完成硬件电路的设计工作;设计程序流程图并编写、调试程序;硬件连接调试,完成设定的功能;撰写开题报告和结题报告各一份指导教师签字___________________年月日教研室主任意见:教研室主任签字___________________年月日单片机课程设计——超声波避障小车全文共21页,当前为第4页。*注:此任务书由课程设计指导教师填写单片机课程设计——超声波避障小车全文共21页,当前为第4页。开题报告绪论课题目的通过上学期单片机课程的学习,我们基本掌握了51单片机的基本使用方法,本学期开学初,单片机课程设计给了我们更大的挑战,课题的目的有以下几点。进一步熟练掌握单片机的使用方法、提高程序的编写能力掌握单片机系统外扩器件的连接与使用提高器件说明书以及时序过程的阅读、理解能力掌握软件和硬件调试的基本技巧与方法项目研究背景及意义在当今社会,汽车成为了越来越普遍,人们不可缺少的交通工具。但汽车的不断增加,随之而来就是越来越多的交通事故。交通事故成为了现在越来越严重的安全隐患。所以随着汽车工业的快速发展,我们必须加强对汽车安全性能的考虑。所以,智能汽车概念应运而生,他既是汽车产业的机遇也是汽车产业的挑战。汽车的智能化必将是未来汽车产业发展的趋势,在这样的背景下,我们开展了基于超声波的智能小车的避障研究。超声波作为智能车避障的一种重要手段,以其避障实现方便,计算简单,易于做到实时控制,测量精度也能达到实用的要求,在未来汽车智能化进程中必将得到广泛应用。我国作为一个世界大国,在高科技领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的,在这种情况下研究超声波在智能车避障上的应用具有深远意义,这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用。单片机课程设计——超声波避障小车全文共21页,当前为第5页。单片机课程设计——超声波避障小车全文共21页,当前为第5页。设计要求采用超声波模块实现小车避障功能,实现小车自动避障任务。主要设计内容及方案总体方案设计系统采用51单片机作为核心控制单元用于智能车系统的控制,在超声波检测到障碍物之后,主控芯片根据距离值控制直流电机的转动,在与障碍物距离较大的情况下,快速前进,在与障碍物距离较小但还未到达临界转弯方向值的时候,慢速前进。在与障碍物距离很近需要转向避障时,方案上将尝试进行转向,来进行避障。系统总体的设计方框图如图2-1所示。图图STYLEREF1\s2SEQ图2-\*ARABIC\s11系统总体方案图图1.2系统总体方框图根据以上的总体方案设计,我们进行了主程序流程图的设计,下面为所设计的主程序的流程图。其中DIS即为小车与障碍物的距离;单片机课程设计——超声波避障小车全文共21页,当前为第6页。单片机课程设计——超声波避障小车全文共21页,当前为第6页。单片机课程设计——超声波避障小车全文共21页,当前为第7页。图STYLEREF1\s22主程序流程图单片机课程设计——超声波避障小车全文共21页,当前为第7页。主要模块的基本原理超声波探测模块超声波探测模块的基本原理及使用方法如下:IO口触发,给Sin口至少5~10us的高电平,启动测量;模块自动发送8个40Khz的方波,自动检测是否有信号返回;有信号返回,通过IO口Sin输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*340)/2。图图2-3超声波探测模块时序图直流电机控制模块机器人的动作由伺服电机控制。单片机课程设计——超声波避障小车全文共21页,当前为第8页。伺服电机与单片机接口的连接,图电机连接原理图和实际接线图,P1_0引脚的控制输出用来控制右的伺服电机,而P1_1则用来控制左边的伺服电机。单片机课程设计——超声波避障小车全文共21页,当前为第8页。图2-4左、右电机连接图控制电机运动转速的是高电平持续的时间,当高电平持续时间为1.3ms时,电机顺时针全速旋转,当高电平持续时间1.7ms时,电机逆时针速旋转。图2-5电机顺、逆时针旋转控制脉冲图所以可知,若令左、右车轮电机高电平持续时间为1.5ms时,小车将处于静止状态。若令左车轮电机高电平持续时间为1.7ms,右车轮电机高电平持续时间为1.3ms时,则左车轮电机逆时针,右车轮电机顺时针,小车将会以最快的速度前进。此时,若想改变小车的前进速度,则逐渐减小左电机的高电平时间,逐渐增加右电机的高电平时间,则可以减小车速。同理可知,若令左车轮电机高电平持续时间为1.3ms,右车轮电机高电平持续时间为1.7ms时,则左车轮电机顺时针,右车轮电机逆时针,小车将会以最快的速度后退。当需要转弯时,通过分析和测试我们可以知道,当小车想左转时,需令左右两轮均顺时针旋转,而当小车想右转时,需令左右两轮均逆时针旋转。通过对直流电机模块的学习和了解,我已经了解了控制小车运动的方法。单片机课程设计——超声波避障小车全文共21页,当前为第9页。单片机课程设计——超声波避障小车全文共21页,当前为第9页。需解决的关键问题关键问题首先是要学会使用超声波测距器件,根据老师所提供的知识,利用图像读懂超声波器件的工作时序,根据时序以及超声波测距器件的工作信号特点,并且结合单片机的定时器/计数器等功能,来顺利的完成小车对于前方障碍物距离的测量。另一个比较关键的问题就是确定小车的避障方案,根据上方的主程序流程图,我们采用一种避障方案,在接下的设计中,我们需要对于该方案能否正确躲避障碍进行验证,并且需要不断思考,提出更多的更好的更有效的避障方案。具体实施方案及程序2.4.1程序初始化初始化函数中需要对定时器/计数器的模式进行设定,以及初始值的设定,流程图如下程序如下:voidIO_init(void){EA=1; ET0=1; TMOD=0x11;//将T0定时器/计数器设置为16位计数模式 TH0=0x00;//初始值为0 TL0=0x00; TR0=0;//不开始计数}单片机课程设计——超声波避障小车全文共21页,当前为第10页。单片机课程设计——超声波避障小车全文共21页,当前为第10页。2.4.2测距函数测距函数是本程序的比较关键的一个函数,需要根据仪器的本身特点来进行编程,流程图如下测距函数如下: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,开始计数单片机课程设计——超声波避障小车全文共21页,当前为第11页。 TR0=1;单片机课程设计——超声波避障小车全文共21页,当前为第11页。 while(Sin);/SIN信号从高电平变为低电平,此时跳出该循环TR0置0,停止计数 TR0=0; LTime=TL0; HTime=TH0; Time=HTime*256+LTime;//将高8位乘以256加上低8位得到总值 Dis=Time/(2*29);//计算出所差距离 }2.4.3主函数主函数的流程图如下单片机课程设计——超声波避障小车全文共21页,当前为第12页。单片机课程设计——超声波避障小车全文共21页,当前为第12页。主函数如下: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(); //慢速前进 } else //如果距离依旧小于10 { Right_180(); //右转180 getx(1);//测距 if(Dis>=10)//如果此时距离小于10 { Forward_slow(); //慢速前进 } else //否则,继续调试 { Right_90();//右转90度 } } } }}2.4.4完整程序代码与注释#include<reg51.h>单片机课程设计——超声波避障小车全文共21页,当前为第13页。#include<intrins.h>单片机课程设计——超声波避障小车全文共21页,当前为第13页。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;单片机课程设计——超声波避障小车全文共21页,当前为第14页。 Time=HTime*256+LTime;//将高8位乘以256加上低8位得到总值单片机课程设计——超声波避障小车全文共21页,当前为第14页。 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);} }单片机课程设计——超声波避障小车全文共21页,当前为第15页。单片机课程设计——超声波避障小车全文共21页,当前为第15页。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单片机课程设计——超声波避障小车全文共21页,当前为第16页。 { 单片机课程设计——超声波避障小车全文共21页,当前为第16页。 Forward_fast(); //快速前进 } elseif(Dis>=10&&Dis<50)//如果距离在10与50之内 { Forward_slow(); //慢速前进 } else //否则,小于10,需转向避障 { Left_90(); //先左转90度 getx(1); //测量距离 if(Dis>=10)//如果距离大于10 { Forward_slow(); //慢速前进 } else //如果距离依旧小于10 { Right_180(); //右转180 getx(1);//测距 if(Dis>=10)//如果此时距离小于10 { Forward_slow(); //慢速前进 } else //否则,继续调试 { Right_90();//右转90度 } } } }}单片机课程设计——超声波避障小车全文共21页,当前为第17页。单片机课程设计——超声波避障小车全文共21页,当前为第17页。结题报告1课题完成情况本超声波避障小车的设计基于单片机原理和传感器原理,以51单片机为主控芯片,采用直流电机为驱动元件,通过软件编程制作了一整套结构完整,功能模块化,反应较为灵敏的超声波避障小车。经过对该避障小车的避障测试实验,实验结果证明该避障小车能够很好的按照预期完成避障动作,并且能够快速运动灵敏避障,效果良好,运行稳定性较好。2所遇问题及解决方案在进行小车调试时,我们遇到的一个最大困难就是当我们前期的程序烧入芯片后,我们的小车运行的非常不平稳,前进运行的非常不连贯。小车前进一会,就会有一段比较明显的时段停止。当我遇到这个问题时,我没有慌乱,我一步一步的进行了分析。首先,我怀疑了前进函数Forward()出现问题,检查Forward()的后,发现提供给左右车轮的PWM信号正常,没有出现异常,而且出于控制变量思想,为了准确的找到问题的症结所在,我单独讲Forward()函数烧入小车中,运行后可以发现,小车的运行非常正常,不存在运行不平稳的现象。

在排除了Forward()函数的问题后,我开始怀疑是不是测速的函数getx()对Forward()函数造成了干扰。我们通过分析可以知道,forward()函数提供了一个非常完美的驱动电机的PWM信号,但是一旦在程序中,存在着一些其他例如测距程序,判断语句等程序时,会对其PWM信号产生一些干扰,应尽可能的减少这些程序对于小车运行程序的干扰。所以我将我之前使用的delay()函数用系统的库函数_nop()_来代替,再将更改后的程序下载入小车后,惊奇的发现,小车能够平稳的运行了。我们再进一步的分析这个问题的原因,我们可以看到,在之前的delay()函数中,我们使用了除法,除法在指令周期最长的一个指令,他会导致PWM信号在某一电平上停留的时间过长,影响信号的占空比与波形,而系统的库函数运行的时间则比较短,对其他函数的影响较小。单片机课程设计——超声波避障小车全文共21页,当前为第18页。以上就是我对这个问题的思考,可能我对这个问题的分析也存在一些不完善的地方,比如说,我自己也会问自己,指令的运行周期长短,怎么会对毫秒级的PWM电机驱动信号造成如此大的影响等等,课程设计结束后,我也会继续的查找一些资料,多问问师兄和老师,争取找到最完整,正确的答案。单片机课程设计——超声波避障小车全文共21页,当前为第18页。3心得体会这次课程设计给我们提供了一个非常好的机会来提高我们实际的应用能力。从选题开始老师就给予我们很大的自主性,让我们大家自主选题,这种开放式教学方式也从另一个方面激发起了我们去学习的欲望。这次课程设计,给我更多的是一种模块化的思想,将系统按我们所需的功能和系统所能提供的功能进行模块化的分类,将会使我们的工作变得一目了然,非常清晰。比如说这次我选的避障小车,可以分成超声波测速模块,电机驱动模块,单片机核心模块三个,三个部分各司其职,无论从硬件上还是软件上,都能够比较清晰地将他们的功能区分开,从而有利于硬件的连接和程序的编写。对于这次程序的编写,我就是分块编写,按模块调试,从而避免了许多错误。从以后工作来看,这种模块化处理问题的方式将会更加的有用,在公司和以后得科研项目中,系统一定是越来越复杂,不可能一个人完成所有的任务,一定是一个团队来做这些系统的设计,所以模块化之后,能够将任务分配给每个人,最后大家还能够很好的综合到一起,大大的缩短了开发周期。这次课程设计,提高了我对于陌生硬件的学习能力,超声波仪器对我来说非常的陌生,所以通过这次的学习,我感觉我学习硬件的能力有所提高,对于时序的理解能力也有了进步。单片机主要的功能就是对各种各样的外设进行控制,在以后的工作学习中,我一定会遇到非常多的不熟悉的硬件,我相信,通过不断地锻炼积累,应该有比较强的学习能力。但是该超声波避障小车还存在着许多的不足,比如说只能对正前方一定角度内进行探测,使用的是一路超声波而不是多路超声波探测,并且为了简化,默认的只是向同一个方向转弯等,这些都是有待进一步发展和提高的,这与制作者自身的对与

温馨提示

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

评论

0/150

提交评论