《智能超声波避障小车的设计与制作-毕业论文.docx》由会员分享,可在线阅读,更多相关《智能超声波避障小车的设计与制作-毕业论文.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 智能超声波避障小车的设计与制作摘 要智能小车是一种能够通过编程手段完成特定任务的小型化机器人它具有制作成本低廉电路结构简单程序调试方便等优点由于具有很强的趣味性智能小车深受广大机器人爱好者以及高校学生的喜爱本论文介绍的是具有自动避障功能的智能小车的设计与制作以下简称智能小车论文对智能小车的方案选择设计思路以及软硬件的功能和工作原理进行了详细的分析和论述经实践验收测试该智能小车的电路结构简单调试方便系统反映快速灵活设计方案正确可行各项指标稳定可靠AbstractSmart cars can be programmed to perform a specific task means the m
2、iniaturization of robot it has to make cost is low circuit simple structure convenient program test Because of it has strong interest intelligent robot car favored by the majority of the university students enthusiasts and love This paper introduces the is a automatic obstacle avoidance function of
3、intelligent car design and production hereinafter referred to as the smart car the thesis to the intelligence of the car scheme selection design idea and the implementation of hardware and software function and working principle of a detailed analysis and discusses After practice acceptance test thi
4、s intelligent car circuit structure is simple convenient debug fast flexible system reflect correct and feasible design scheme each index is steady and reliable 目 录摘 要IAbstractII目 录III第一章 绪论111项目研究背景及意义112项目主要研究内容113设计思路114应用场合和功能2第二章 总体方案321总体方案概述322 总体电路原理图3第三章 各模块功能介绍431障碍物测距系统432显示模块533驱动模块1034电
5、源模块12第四章 软件设计1341 程序设计流程图1342 关键程序设计14第五章 系统调试1751 调试的思路1752 各模块的调试1753 调试心得19第六章 结论与展望2061 结论2062 展望20致 谢21参考资料22附录231元器件清单232样机实物照片243电路原理图25相关程序26第一章 绪论 11项目研究背景及意义 智能作为现代社会的新产物是以后的发展方向他可以按照预先设定的 模式在一个特定的环境里自动的运作无需人为管理便可以完成预期所要达 到的或是更高的目标本设计主要体现多功能小车的智能模式设计中的理论 方案分析方法及特色与创新点等可以为自动运输机器人采矿勘探机器人 家用自
6、动清洁机器人等自动半自动机器人的设计与普及有一定的参考意义同 时小车可以作为玩具的发展对象为中国玩具市场技术含量的缺乏进行一定的 弥补实现经济收益形成商业价值 超声波作为智能车避障的一种重要手段以其避障实现方便计算简单 易于做到实时控制测量精度也能达到实用的要求在未来汽车智能化进程中 必将得到广泛应用我国作为一个世界大国在高科技领域也必须占据一席之 地未来汽车的智能化是汽车产业发展必然的在这种情况下研究超声波在智 能车避障上的应用具有深远意义这将对我国未来智能汽车的研究在世界高科 技领域占据领先地位具有重要作用 本智能小车系统最诱人的前景就是可用于未来的智能汽车上了当驾驶员 因疏忽或打瞌睡时这
7、样的智能汽车的设计就能体现出它的作用如果汽车偏离 车道或距障碍物小于安全距离时汽车就会发出警报提醒驾驶员注意如果 驾驶员没有及时作出反应汽车就会自动减速或停靠于路边 这样的小车还可以用于月球探测等的无人探月车帮助我们传达月球上更 多的信息让我们更加的了解月球为将来登月做好充分准备 这样的小车在科学考察探测车上也有广阔的应用前景在科学考察中有 很多危险且人们无法涉足的地方这时智能科学考察车就能够派上用场在 它上面装上摄像机代替人们进行许多无法进行的工作12项目主要研究内容本设计题目为智能避障小车设计主要研究小车的避障功能小车遇到障碍物时当距离障碍物大于40cmPWM信号自增驱动电机加速小车加速前
8、进当小于30cm时PWM信号自减驱动电机减速小车减速前进并且小车采取相应的避障措施这里探测装置必不可少因为超声波在距离检测方面的较准确定位所以采用超声波传感器作为探测装置由于超声波遇到障碍物时发生像光一样的反射和散射在经过多次发射之后再回到超声波检测端口会产生较严重的路程差从而影响对距离的检测进而影响对障碍物的较准确定位通过软件内部校准优化消除外部物理条件造成的误差从而达到对障碍物的较准确定位13设计思路直流电机PWM控制系统的主要功能包括实现对直流电机的加速减速并且可以调整电机的转速能够很方便的实现电机的智能控制主体电路即直流电机 PWM 控制模块这部分电路主要由 AT89S52 单片机 的
9、 IO 端口定时计数器外部中断扩展等控制直流电机的加速减速以及转弯并且可以调整电机的转速能够很方便的实现电机的智能控制 其间是通过 AT89S52 单片机产生脉宽可调的脉冲信号并输入到 L298 驱动芯片来 控制直流电机工作的该直流电机 PWM 控制系统由以下电路模块组成设计控制部分 主要由 AT89S52 单片机的外部中断扩展电路组成直流电机PWM控制实现部分主要由电机和 L298 直流电机驱动模块组成设计显示部分LCD 数码显示部分实现对超声波测的距离的实时显示14应用场合和功能应用场合智能小车是一种能够通过编程手段完成特定任务的小型化机器人它具有制作成本低廉电路结构简单程序调试方便等优点
10、由于具有很强的趣味性智能小车深受广大机器人爱好者以及高校学生的喜爱同时在玩具的应用上深受小朋友的青睐功能本小车使用AT89S52单片机作为主控芯片它通过超声波测距来获取小车距离障碍物的距离并且用LED显示出来当小车与障碍物的距离大于40cm时小车会沿直线前进当小车与障碍物的距离小于30cm时小车转弯以避开障碍物并且此时蜂鸣器报警在避开障碍物后小车会沿直线前进第二章 总体方案21总体方案概述 本小车使用AT89S52单片机作为主控芯片它通过超声波测距来获取小车距离障碍物的距离并且用LCD显示出来当小车与障碍物的距离大于40cm时小车会沿直线前进当小车与障碍物的距离小于30cm时小车转弯以避开障碍
11、物并且此时蜂鸣器报警在避开障碍物后小车会沿直线前进简要框图如图2-1图 21简要框图22 总体电路原理图第三章 各模块功能介绍31障碍物测距系统方案一超声波视觉 优点价格合理夜间不受影响易于多目标测量和分类分辨率好缺点测量范围小对天气变化敏感不能直接测量距离算法复杂处理速度慢方案二激光雷达MMW雷达 优点夜间不受影响不受灯光天气影响缺点对水灰尘灯光敏感价格贵 探测障碍的最简单的方法是使用超声波传感器它是利用向目标发射超声波脉冲计算其往返时间来判定距离的算法简单价格合理所以我们选择超声波传感器超声波测距原理首先利用单片机输出一个40kHz的触发信号把触发信号通过TRIG管脚输入到超声波测距模块再
12、由超声波测距模块的发射器向某一方向发射超声波在发射时刻的同时单片机通过软件开始计时超声波在空气中传播途中碰到障碍物返回超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过ECHO脚反馈给单片机此时单片机就立即停止计时时序图如图1所示由于超声波在空气中的传播速度为340ms根据计时器记录的时间t就可以计算出发射点距障碍物的距离即S VT2通过单片机来算出距离图31超声波测距原理32显示模块方案一用LCD显示优点辐射小显示内容多 低耗能散热小显示的画面稳定不闪烁缺点不适合做图图像还原不好有可视范围限制 方案二用LED显示优点亮度高成本低缺点不能显示汉字显示内容较少对于本课题的要求我们选择L
13、CD实现功能显示内容多低功耗显示画面稳定不闪烁硬件电路设计简单字符型液晶显示模块是一种专门用于显示字母数字符号等点阵式LCD目前常用161162202和402行等的模块下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例介绍其用法一般1602字符型液晶显示器实物如图图 3211602字符型液晶显示器1602LCD主要技术参数显示容量162个字符芯片工作电压4555V工作电流20mA 50V 模块最佳工作电压50V字符尺寸295435 WH mm引脚功能说明1602LCD采用标准的14脚无背光或16脚带背光接口各引脚接口说明如表所示编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2
14、VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据命令选择12D5数据5RW读写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表-2-1引脚接口说明表第1脚VSS为地电源第2脚VDD接5V正电源第3脚VL为液晶显示器对比度调整端接正电源时对比度最弱接地时对比度最高对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度第4脚RS为寄存器选择高电平时选择数据寄存器低电平时选择指令寄存器第5脚RW为读写信号线高电平时进行读操作低电平时进行写操作当RS和RW共同为低电平时可以写入指令或者显示地址当RS为低电平RW为高电平时
15、可以读忙信号当RS为高电平RW为低电平时可以写入数据第6脚E端为使能端当E端由高电平跳变成低电平时液晶模块执行命令第714脚D0D7为8位双向数据线第15脚背光源正极第16脚背光源负极1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令如表-2-2所示序号指令RSRWD7D6D5D4D3D2D1D01清显示00000000012光标返回0000000013置输入模式00000001IDS4显示开关控制0000001DCB5光标或字符移位000001SCRL6置功能00001DLNF7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址
16、9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容表-2-2控制命令表1602液晶模块的读写操作屏幕和光标的操作都是通过指令编程来实现的说明1为高电平0为低电平指令1清显示指令码01H光标复位到地址00H位置指令2光标复位光标返回到地址00H指令3光标和显示模式设置 ID光标移动方向高电平右移低电平左移 S屏幕上所有文字是否左移或者右移高电平表示有效低电平则无效指令4显示开关控制 D控制整体显示的开与关高电平表示开显示低电平表示关显示 C控制光标的开与关高电平表示有光标低电平表示无光标 B控制光标是否闪烁高电平
17、闪烁低电平不闪烁指令5光标或显示移位 SC高电平时移动显示的文字低电平时移动光标指令6功能设置命令 DL高电平时为4位总线低电平时为8位总线 N低电平时为单行显示高电平时双行显示 F 低电平时显示5x7的点阵字符高电平时显示5x10的点阵字符指令7字符发生器RAM地址设置指令8DDRAM地址设置指令9读忙信号和光标地址 BF为忙标志位高电平表示忙此时模块不能接收命令或者数据如果为低电平表示不忙指令10写数据指令11读数据与HD44780相兼容的芯片时序表如下读状态输入RS LRW HE H输出D0D7 状态字写指令输入RS LRW LD0D7 指令码E 高脉冲输出无读数据输入RS HRW HE
18、 H输出D0D7 数据写数据输入RS HRW LD0D7 数据E 高脉冲输出无表-2-3基本操作时序表读写操作时序如图和所示图 322 读操作时序图 323 写操作时序33驱动模块方案一采用ULN2003驱动它是由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成具有同时驱动7组负载的能力一般用于高速大功率驱动电路所以我们不采用这个方案方案二采用由双极性管组成的H桥电路L298N用单片机控制晶体管使之工作在占空比可调的开关状态精确调整电机转速这种电路由于工作在管子的饱和截止模式下则效率非常高H桥电路保证了可以简单地实现转速和方向的控制电子开关的速度很快稳定性也很高而且它有更强的驱动能力
19、L298N有过电流保护功能当出现电机卡死时可以保护电路和电机等L298N有过电流保护功能当出现电机卡死时可以保护电路和电机等所以我们选择L298N下图为L298内部图图33L298内部原理图L298各引脚功能如下表引脚功能115SEN1SEN2分别为两个H桥的电流反馈脚不用时可以接地231Y11Y2输出端与对应输入端IN1IN2同逻辑4VS驱动电压最小值需比输入的低电平电压高25V57IN1IN2输入端TTL电平兼容611EN1EN2使能端低电平禁止输出8GND地9VSS逻辑电源457V1012IN3IN4输入端TTL电平兼容13142Y12Y2输出端与对应输入端IN3IN4同逻辑表3-3-1
20、 封装引脚及功能驱动电机的运行IO端口状态与电机制动对照表如下IN1IN2IN3IN4EN1EN2转速101011正转010111反转111111停止000011停止XXXX00停止表3-3-2 IO端口状态与电机制动对照表34电源模块我们选择采用5v的独立的稳压电源优点稳定可靠且有各种成熟电路可供选用缺点各模块都采用独立电源会使系统复杂且可能影响电路电平综合电源模块的缺优点和电路的实际需求我们采用了两块独立稳压电源一块给小车的电机驱动供电一块给小车的芯片供电这样弥补了单个独立电源供电出现电力不足的情况第四章 软件设计41 程序设计流程图本设计系统软件采用模块化结构由主程序、定时子程序电机驱动
21、子程序、中断子程序显示子程序、算法子程序构成主程序流程图如图41所示图 41主程序流程图42 关键程序设计PWM产生程序设计void Timer2 void interrupt 5 TF2 0 RCAP2H 0x0feRCAP2L 0x33 click if click 100 click 0 if click ZK1 PWM1 1 else PWM1 0 if click ZK2 PWM2 1 else PWM2 0 2超声波的发射与接受程序设计void zd3 interrupt 3 TH1 0x0f8TL1 0x30timerif timer 200 timer 0TX 1 _nop_
22、_nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ TX 0 31602的初始化程序的设计void ini_lcd1602 write_lcd1602 0x380 delay 1 write_lcd1602 0x0c0 delay 1 write_lcd1602 0x060 delay 1 write_lcd1602 0x010 delay 1 41602的写程序的设计void write_lcd1602 u
23、char cmduchar i lcd_mang rs irw 0e 0_nop_ _nop_ e 1 _nop_ _nop_ P0 cmd _nop_ _nop_ _nop_ _nop_ e 0 51602的判忙程序的设计void lcd_mang rs 0 rw 1 e 1 _nop_ _nop_ _nop_ _nop_ while P00x80 e 0 第五章 系统调试51 调试的思路本设计的智能避障小车一共分为四大模块分别是L298驱动模块超声波测距模块LCD显示模块以及蜂鸣器报警模块调试的时候我们可以把四大模块分别调试最后再把所有模块组合起来再进行最后的整机调试这样一个调试的思路52
24、 各模块的调试521 LCD的调试首先根据电路图将显示模块焊好再用万用表检查电路是否出现短路一切都正常的情况下将LCD测试程序烧到芯片中观察LCD的显示是否正确如图521一开始可能什么都不显示这个时候我们只需调整LCD 3脚的变阻器阻值即可图 521LCD测试图522 超声波的调试超声波模块一共有四个脚一个是VCC一个是GND还有两个分别是超声波的发射和接收引脚连接电路时候只需引出四根插线分别连接到89S52的对应引脚烧制好测试程序测试结果图如522本设计四根插线分别连接到VCCGND还有发射和接收引脚分别为P30和P32口图 522超声波测试图523 蜂鸣器报警调试蜂鸣器的连接很简单只需用一
25、个PNP管来做驱动当低电平到来时蜂鸣器发出声音当高电平到来时没有声音本设计中蜂鸣器连接到P34口如图523所示图523蜂鸣器报警电路53 调试心得通过系统的调试我们可以学到更多的知识我们也可以发现仿真和实物调试不同的地方程序设计的结果可能往往和实物调试出的结果不一样这就需要我们去思考去斟酌去改进以达到预期效果通过程序和硬件的调试我们可以更深刻的理解各功能模块之间的联系也可以明白各调试的步骤在调试的过程中我也遇到许多问题例如我在宿舍调试好小车之后带到班级时候在插上电源试图让小车跑起来时候发现超声波模块失去了作用LCD不再显示数据了后来我用电脑USB口供电发现也不可以检查了许久才发现是超声波模块上
26、的电源线和地线的两根插线出现了断路换线之后LCD正常显示数值小车正常行驶整个调试过程需要硬件和软件结合起来调试要仔细检查电路认真思考程序硬件部分调试的步骤检查原理图连接是否正确用万用表检查是否有虚焊引脚短路现象检查原理图与上引脚是否一致680欧的电阻焊成了68千欧这使我深深感受到理论与实际间的差距在调试过程中发现插上编程器后不能烧制程序通过检查电路发现AT89S52芯片的使能端没有接VCC改好之后重新烧制发现还是不可以通过再次检查发现是共阴管的驱动芯片74LS245的引脚出现焊接错误通过这些调试提高了我检查电路的能力以及巩固了电路图的知识通过这样的设计提高了我的动手能力每天在实验室除了焊接线路
27、板还可以上机编程使我软件调试知识也提高了本设计采用的是89S52单片机这主要是因为该单片机的稳定性比较好还可以采用其它系列的单片机比如采用陵阳单片机就可以简化编程但其稳定性不是很好62 展望1在本课题的基础上我们可以在小车的底座下面装一个吸尘装置这样就可以在小车行驶的过程中吸除一些预先放好的小纸屑2设计出两辆小车一辆小车放在另一辆的前面当前面一辆小车起动时候后面一辆小车也起动前面一辆小车转弯的时候后面一辆也跟着转弯前面一辆小车停止时后面一辆也跟着停止致 谢历时三个月的毕业设计已经告一段落经过自己不断的搜索努力以及白老师的耐心指导和热情帮助本设计已经基本完成在这段时间里白老师严谨的治学态度和热忱
28、的工作作风令我十分钦佩他的指导使我受益非浅通过这次毕业设计使我深刻地认识到学好专业知识的重要性也理解了理论联系实际的含义并且检验了大学四年的学习成果虽然在这次设计中对于知识的运用和衔接还不够熟练但是我将在以后的工作和学习中继续努力不断完善这三个月的设计是对过去所学知识的系统提高和扩充的过程为今后的发展打下了良好的基础由于自身水平有限设计中一定存在很多不足之处敬请各位老师批评指正参考资料1 赵负图传感器集成电路手册第一版化学工业出版社20045905912李华MCS-51系列单片机实用接口技术第三版北京1997年3张红润实用自动控制成都科技大学出版社1990年1月4康华光电子技术基础北京高等教育
29、出版社1983年10月5潘新民微型计算机控制技术北京人民邮电技术出版社1988年3月6赵依军单片机微型接口技术北京人民邮电技术出版社1989年3月7李广弟单片机基础北京北京航空航天大学出版社20018胡汉才单片机原理及其接口技术北京清华大学出版社19969王毅单片机器件应用手册北京人民邮电出版社1995附录1元器件清单序号元件名称数量参数1AT89S52单片机12超声波模块 13L298n14智能避障小车底盘15蜂鸣器16LCD液晶屏12样机实物照片3电路原理图相关程序include include define uchar unsigned chardefine uint unsigned
30、intunsigned char isbit rs P26 定义引脚sbit rw P25sbit e P27sbit TX P30 触发信号引脚sbit FM P34sbit PWM1 P36 pwm信号输出 sbit PWM2 P37static char click 0 unsigned char ZK1ZK2unsigned int time 0unsigned int timer 0unsigned long Sbit flag 0unsigned char code ASCII19 0123456789-MJU LI static unsigned char DisNum 0 显示
31、用指针 unsigned long S 0 unsigned char disbuff11 0 void Conut void time TH0256TL0TH0 0TL0 0S time17 100 disbuff0 13disbuff1 14disbuff2 15disbuff3 16disbuff4 17disbuff5 18disbuff6 S1000100disbuff7 10disbuff8 S100010010disbuff9 S100010 10disbuff10 12 void delay_1 void 误差 0us unsigned char ab for b 215b 0
32、b- for a 45a 0a- void delay uchar a uchar i while a- for i 0i 250i _nop_ _nop_ _nop_ _nop_ 判忙 void lcd_mang rs 0 rw 1 e 1 _nop_ _nop_ _nop_ _nop_ while P00x80 e 0 1602的写void write_lcd1602 uchar cmduchar i 当i为0的时候为向1602写指令为1写数据 lcd_mang rs irw 0e 0_nop_ _nop_ e 1 _nop_ _nop_ P0 cmd _nop_ _nop_ _nop_
33、_nop_ e 0 1602的初始化void ini_lcd1602 write_lcd1602 0x380 delay 1 write_lcd1602 0x0c0 delay 1 write_lcd1602 0x060 delay 1 write_lcd1602 0x010 delay 1 void Timer2Interrupt RCAP2H 0x0feRCAP2L 0x33ET2 1 允许T2定时器中断EA 1 打开总中断TR2 1 启动T2定时器 void zd0 interrupt 1 flag 1 void zd3 interrupt 3 T1中断用来扫描数码管和计800MS启动模
34、块 TH1 0x0f8TL1 0x30timerif timer 200 timer 0TX 1 800MS 启动一次模块_nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ _nop_ TX 0 void Timer2 void interrupt 5 TF2 0 T2定时器发生溢出中断时需要用户自己清除溢出标记 RCAP2H 0x0feRCAP2L 0x33 恢复定时器初始值click if click 1
35、00 click 0 if click ZK1 PWM1 1 else PWM1 0 if click ZK2 PWM2 1 else PWM2 0 主函数void main TMOD 0x19 设T0为方式1GATE 1TH0 0TL0 0 TH1 0x0f8 2MS定时TL1 0x30ET0 1 允许T0中断ET1 1 允许T1中断TR1 1 开启定时器Timer2Interrupt EA 1 开启总中断ZK1 20ZK2 20ini_lcd1602 while 1 while INT0 0 当RX为零时等待TR0 1while INT0 1 当RX为1计数并等待TR0 0关闭计数Conut 计算if S 40 控制加速 FM 1P1 0xafZK1 ZK1-5ZK2 ZK2-5 else if S 30 控制转向 FM 0ZK1 ZK15ZK2 ZK25P1 0X8Fdelay_1 if ZK1 99 ZK1 1 if ZK1 1 ZK1 10if ZK2 99 ZK2 1 if ZK2 1 ZK2 10 write_lcd1602 0x800 for i 0i 10i write_lcd1602 ASCIIdisbuffi1 - III - 31 -