超声波避障小车程序设计
- 格式:doc
- 大小:113.50 KB
- 文档页数:7
单片机系统课程设计成绩评定表设计课题:自动避障小车学院名称:电气工程学院专业班级:自动1105 学生姓名:学号:指导教师:设计地点:31-630 设计时间:单片机系统课程设计课程设计名称:自动避障小车专业班级:自动1105学生姓名:学号:指导教师:课程设计地点:31-630课程设计时间:单片机系统课程设计任务书目录1概述-------------------------------------------------------------- 41.1研究背景----------------------------------------------------- 41.2设计思想及基本功能------------------------------------------- 4 2总体方案设计------------------------------------------------------ 42.1方案论证----------------------------------------------------- 42.2系统框图----------------------------------------------------- 52.3总体方案设计------------------------------------------------- 6 3硬件电路设计------------------------------------------------------ 73.1电源电路----------------------------------------------------- 73.2晶振电路----------------------------------------------------- 83.3复位电路----------------------------------------------------- 83.4键盘电路----------------------------------------------------- 83.5显示电路----------------------------------------------------- 93.6超声波测距电路---------------------------------------------- 103.7舵机电路---------------------------------------------------- 113.8电机驱动电路------------------------------------------------ 113.9电机转速测量电路-------------------------------------------- 133.10设计PCB和腐蚀电路板--------------------------------------- 14 4系统软件设计----------------------------------------------------- 164.1分模块程序设计---------------------------------------------- 184.2主程序设计-------------------------------------------------- 20 5系统调试 ------------------------------------------------------- 20 6总结 ----------------------------------------------------------- 22参考文献:------------------------------------------------------- 23附录A硬件电路图------------------------------------------------- 24附录B 源程序 ---------------------------------------------------- 251概述1.1研究背景科技的发展趋势之一就是让几乎所有的东西具有一定的智能。
(毕业论文)智能超声波避障小车的设计与制作江阴职业技术学院项目设计报告项目超声波避障小车的设计与制作专业学生班级学号指导教师完成日期摘要智能小车是一种能够通过编程手段完成特定任务的小型化机器人它具有制作成本低廉电路结构简单程序调试方便等优点由于具有很强的趣味性智能小车深受广大机器人爱好者以及高校学生的喜爱本论文介绍的是具有自动避障功能的智能小车的设计与制作以下简称智能小车论文对智能小车的方案选择设计思路以及软硬件的功能和工作原理进行了详细的分析和论述经实践验收测试该智能小车的电路结构简单调试方便系统反映快速灵活设计方案正确可行各项指标稳定可靠AbstractSmart cars can be programmed to perform a specific task means the miniaturization 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 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 this intelligent car circuit structure is simple convenientdebug fast flexible system reflect correct and feasible design scheme each index is steady and reliable目录摘要IAbstract II目录III第一章绪论 111项目研究背景及意义 112项目主要研究容113设计思路114应用场合和功能2第二章总体方案 321总体方案概述 322 总体电路原理图 3第三章各模块功能介绍 431障碍物测距系统432显示模块533驱动模块1034电源模块12第四章软件设计1341 程序设计流程图1342 关键程序设计14第五章系统调试1751 调试的思路 1752 各模块的调试1753 调试心得19第六章结论与展望2061 结论 2062 展望 20致谢21参考资料22附录 231元器件清单232样机实物照片243电路原理图25相关程序26第一章绪论11项目研究背景及意义智能作为现代社会的新产物是以后的发展方向他可以按照预先设定的模式在一个特定的环境里自动的运作无需人为管理便可以完成预期所要达到的或是更高的目标本设计主要体现多功能小车的智能模式设计中的理论方案分析方法及特色与创新点等可以为自动运输机器人采矿勘探机器人家用自动清洁机器人等自动半自动机器人的设计与普及有一定的参考意义同时小车可以作为玩具的发展对象为中国玩具市场技术含量的缺乏进行一定的弥补实现经济收益形成商业价值超声波作为智能车避障的一种重要手段以其避障实现方便计算简单易于做到实时控制测量精度也能达到实用的要求在未来汽车智能化进程中必将得到广泛应用我国作为一个世界大国在高科技领域也必须占据一席之地未来汽车的智能化是汽车产业发展必然的在这种情况下研究超声波在智能车避障上的应用具有深远意义这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用本智能小车系统最诱人的前景就是可用于未来的智能汽车上了当驾驶员因疏忽或打瞌睡时这样的智能汽车的设计就能体现出它的作用如果汽车偏离车道或距障碍物小于安全距离时汽车就会发出警报提醒驾驶员注意如果驾驶员没有及时作出反应汽车就会自动减速或停靠于路边这样的小车还可以用于月球探测等的无人探月车帮助我们传达月球上更多的信息让我们更加的了解月球为将来登月做好充分准备这样的小车在科学考察探测车上也有广阔的应用前景在科学考察中有很多危险且人们无法涉足的地方这时智能科学考察车就能够派上用场在它上面装上摄像机代替人们进行许多无法进行的工作12项目主要研究容本设计题目为智能避障小车设计主要研究小车的避障功能小车遇到障碍物时当距离障碍物大于40cmPWM信号自增驱动电机加速小车加速前进当小于30cm时PWM信号自减驱动电机减速小车减速前进并且小车采取相应的避障措施这里探测装置必不可少因为超声波在距离检测方面的较准确定位所以采用超声波传感器作为探测装置由于超声波遇到障碍物时发生像光一样的反射和散射在经过多次发射之后再回到超声波检测端口会产生较严重的路程差从而影响对距离的检测进而影响对障碍物的较准确定位通过软件部校准优化消除外部物理条件造成的误差从而达到对障碍物的较准确定位13设计思路直流电机PWM控制系统的主要功能包括实现对直流电机的加速减速并且可以调整电机的转速能够很方便的实现电机的智能控制主体电路即直流电机 PWM 控制模块这部分电路主要由 AT89S52 单片机的 IO 端口定时计数器外部中断扩展等控制直流电机的加速减速以及转弯并且可以调整电机的转速能够很方便的实现电机的智能控制其间是通过 AT89S52 单片机产生脉宽可调的脉冲信号并输入到L298 驱动芯片来控制直流电机工作的该直流电机 PWM 控制系统由以下电路模块组成设计控制部分主要由 AT89S52 单片机的外部中断扩展电路组成直流电机PWM控制实现部分主要由电机和 L298 直流电机驱动模块组成设计显示部分LCD 数码显示部分实现对超声波测的距离的实时显示14应用场合和功能应用场合智能小车是一种能够通过编程手段完成特定任务的小型化机器人它具有制作成本低廉电路结构简单程序调试方便等优点由于具有很强的趣味性智能小车深受广大机器人爱好者以及高校学生的喜爱同时在玩具的应用上深受小朋友的青睐功能本小车使用AT89S52单片机作为主控芯片它通过超声波测距来获取小车距离障碍物的距离并且用LED显示出来当小车与障碍物的距离大于40cm时小车会沿直线前进当小车与障碍物的距离小于30cm时小车转弯以避开障碍物并且此时蜂鸣器报警在避开障碍物后小车会沿直线前进第二章总体方案21总体方案概述本小车使用AT89S52单片机作为主控芯片它通过超声波测距来获取小车距离障碍物的距离并且用LCD显示出来当小车与障碍物的距离大于40cm时小车会沿直线前进当小车与障碍物的距离小于30cm时小车转弯以避开障碍物并且此时蜂鸣器报警在避开障碍物后小车会沿直线前进简要框图如图2-1图 21简要框图22 总体电路原理图第三章各模块功能介绍31障碍物测距系统方案一超声波视觉优点价格合理夜间不受影响易于多目标测量和分类分辨率好缺点测量围小对天气变化敏感不能直接测量距离算法复杂处理速度慢方案二激光雷达MMW雷达优点夜间不受影响不受灯光天气影响缺点对水灰尘灯光敏感价格贵探测障碍的最简单的方法是使用超声波传感器它是利用向目标发射超声波脉冲计算其往返时间来判定距离的算法简单价格合理所以我们选择超声波传感器超声波测距原理首先利用单片机输出一个40kHz的触发信号把触发信号通过TRIG管脚输入到超声波测距模块再由超声波测距模块的发射器向某一方向发射超声波在发射时刻的同时单片机通过软件开始计时超声波在空气中传播途中碰到障碍物返回超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过ECHO脚反馈给单片机此时单片机就立即停止计时时序图如图1所示由于超声波在空气中的传播速度为340ms根据计时器记录的时间t就可以计算出发射点距障碍物的距离即S VT2通过单片机来算出距离图31超声波测距原理32显示模块方案一用LCD显示优点辐射小显示容多低耗能散热小显示的画面稳定不闪烁缺点不适合做图图像还原不好有可视围限制方案二用LED显示优点亮度高成本低缺点不能显示汉字显示容较少对于本课题的要求我们选择LCD实现功能显示容多低功耗显示画面稳定不闪烁硬件电路设计简单字符型液晶显示模块是一种专门用于显示字母数字符号等点阵式LCD目前常用161162202和402行等的模块下面以太阳人电子的1602字符型液晶显示器为例介绍其用法一般1602字符型液晶显示器实物如图图 3211602字符型液晶显示器1602LCD主要技术参数显示容量16×2个字符芯片工作电压4555V工作电流20mA 50V模块最佳工作电压50V字符尺寸295×435 W×H mm引脚功能说明1602LCD采用标准的14脚无背光或16脚带背光接口各引脚接口说明如表所示编号符号引脚说明编号符号引脚说明 1 VSS 电源地9 D2 数据 2 VDD 电源正极10 D3 数据 3 VL 液晶显示偏压11 D4 数据4 RS 数据命令选择12 D5 数据 5 RW 读写选择 13 D6 数据 6 E 使能信号 14 D7 数据7 D0 数据15 BLA 背光源正极8 D1 数据16 BLK 背光源负极表-2-1引脚接口说明表第1脚VSS为地电源第2脚VDD接5V正电源第3脚VL为液晶显示器对比度调整端接正电源时对比度最弱接地时对比度最高对比度过高时会产生鬼影使用时可以通过一个10K 的电位器调整对比度第4脚RS为寄存器选择高电平时选择数据寄存器低电平时选择指令寄存器第5脚RW为读写信号线高电平时进行读操作低电平时进行写操作当RS和RW共同为低电平时可以写入指令或者显示地址当RS为低电平RW为高电平时可以读忙信号当RS为高电平RW为低电平时可以写入数据第6脚E端为使能端当E端由高电平跳变成低电平时液晶模块执行命令第7~14脚D0~D7为8位双向数据线第15脚背光源正极第16脚背光源负极1602LCD的指令说明及时序1602液晶模块部的控制器共有11条控制指令如表-2-2所示序号指令RS RW D7 D6 D5 D4 D3 D2 D1 D0 1 清显示0 0 0 0 0 0 0 0 0 1 2 光标返回0 0 0 0 0 0 0 0 1 3 置输入模式00 0 0 0 0 0 1 ID S 4 显示开关控制0 0 00 0 0 1 D C B 5 光标或字符移位 0 0 0 0 01 SC RL 6 置功能0 0 0 0 1 DL N F7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址8 置数据存贮器地址0 0 1 显示数据存贮器地址9 读忙标志或地址 0 1 BF 计数器地址10 写数到CGRAM或DDRAM 1 0 要写的数据容11 从CGRAM或DDRAM读数 1 1 读出的数据容表-2-2控制命令表1602液晶模块的读写操作屏幕和光标的操作都是通过指令编程来实现的说明1为高电平0为低电平指令1清显示指令码01H光标复位到地址00H位置指令2光标复位光标返回到地址00H指令3光标和显示模式设置 ID光标移动方向高电平右移低电平左移 S屏幕上所有文字是否左移或者右移高电平表示有效低电平则无效指令4显示开关控制 D控制整体显示的开与关高电平表示开显示低电平表示关显示 C控制光标的开与关高电平表示有光标低电平表示无光标 B控制光标是否闪烁高电平闪烁低电平不闪烁指令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 H 输出D0D7 数据写数据输入RS HRW LD0D7 数据E 高脉冲输出无表-2-3基本操作时序表读写操作时序如图和所示图 322 读操作时序图 323 写操作时序33驱动模块方案一采用ULN2003驱动它是由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成具有同时驱动7组负载的能力一般用于高速大功率驱动电路所以我们不采用这个方案方案二采用由双极性管组成的H桥电路L298N用单片机控制晶体管使之工作在占空比可调的开关状态精确调整电机转速这种电路由于工作在管子的饱和截止模式下则效率非常高H桥电路保证了可以简单地实现转速和方向的控制电子开关的速度很快稳定性也很高而且它有更强的驱动能力L298N有过电流保护功能当出现电机卡死时可以保护电路和电机等L298N有过电流保护功能当出现电机卡死时可以保护电路和电机等所以我们选择L298N下图为L298部图图33L298部原理图L298各引脚功能如下表引脚功能115 SEN1SEN2 分别为两个H桥的电流反馈脚不用时可以接地23 1Y11Y2 输出端与对应输入端IN1IN2同逻辑 4 VS 驱动电压最小值需比输入的低电平电压高25V 57 IN1IN2 输入端TTL电平兼容611 EN1EN2 使能端低电平禁止输出8 GND 地9 VSS 逻辑电源457V 1012 IN3IN4 输入端TTL电平兼容1314 2Y12Y2 输出端与对应输入端IN3IN4同逻辑表3-3-1 封装引脚及功能驱动电机的运行IO端口状态与电机制动对照表如下IN1 IN2 IN3 IN4 EN1 EN2 转速 1 0 1 01 1 正转0 1 0 1 1 1 反转 1 1 1 1 11 停止0 0 0 0 1 1 停止X X X X 0 0停止表3-3-2 IO端口状态与电机制动对照表34电源模块我们选择采用5v的独立的稳压电源优点稳定可靠且有各种成熟电路可供选用缺点各模块都采用独立电源会使系统复杂且可能影响电路电平综合电源模块的缺优点和电路的实际需求我们采用了两块独立稳压电源一块给小车的电机驱动供电一块给小车的芯片供电这样弥补了单个独立电源供电出现电力不足的情况第四章软件设计41 程序设计流程图本设计系统软件采用模块化结构由主程序、定时子程序电机驱动子程序、中断子程序显示子程序、算法子程序构成主程序流程图如图41所示图 41主程序流程图42 关键程序设计PWM产生程序设计void Timer2 void interrupt 5TF2 0RCAP2H 0x0feRCAP2L 0x33clickif click 100 click 0if click ZK1PWM1 1elsePWM1 0if click ZK2 PWM2 1elsePWM2 02超声波的发射与接受程序设计void zd3 interrupt 3TH1 0x0f8TL1 0x30timerif timer 200timer 0TX 1_nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop__nop_TX 031602的初始化程序的设计void ini_lcd1602write_lcd1602 0x380delay 1write_lcd1602 0x0c0delay 1write_lcd1602 0x060delay 1write_lcd1602 0x010delay 141602的写程序的设计void write_lcd1602 uchar cmduchar ilcd_mangrs irw 0e 0_nop__nop_e 1_nop__nop_P0 cmd_nop__nop__nop__nop_e 051602的判忙程序的设计void lcd_mangrs 0rw 1e 1_nop__nop__nop__nop_while P00x80e 0第五章系统调试51 调试的思路本设计的智能避障小车一共分为四大模块分别是L298驱动模块超声波测距模块LCD显示模块以及蜂鸣器报警模块调试的时候我们可以把四大模块分别调试最后再把所有模块组合起来再进行最后的整机调试这样一个调试的思路52 各模块的调试521 LCD的调试首先根据电路图将显示模块焊好再用万用表检查电路是否出现短路一切都正常的情况下将LCD测试程序烧到芯片中观察LCD的显示是否正确如图521一开始可能什么都不显示这个时候我们只需调整LCD 3脚的变阻器阻值即可图 521LCD测试图522 超声波的调试超声波模块一共有四个脚一个是VCC一个是GND还有两个分别是超声波的发射和接收引脚连接电路时候只需引出四根插线分别连接到89S52的对应引脚烧制好测试程序测试结果图如522本设计四根插线分别连接到VCCGND还有发射和接收引脚分别为P30和P32口图 522超声波测试图523 蜂鸣器报警调试蜂鸣器的连接很简单只需用一个PNP管来做驱动当低电平到来时蜂鸣器发出声音当高电平到来时没有声音本设计中蜂鸣器连接到P34口如图523所示图523蜂鸣器报警电路53 调试心得通过系统的调试我们可以学到更多的知识我们也可以发现仿真和实物调试不同的地方程序设计的结果可能往往和实物调试出的结果不一样这就需要我们去思考去斟酌去改进以达到预期效果通过程序和硬件的调试我们可以更深刻的理解各功能模块之间的联系也可以明白各调试的步骤在调试的过程中我也遇到许多问题例如我在宿舍调试好小车之后带到班级时候在插上电源试图让小车跑起来时候发现超声波模块失去了作用LCD不再显示数据了后来我用电脑USB口供电发现也不可以检查了许久才发现是超声波模块上的电源线和地线的两根插线出现了断路换线之后LCD正常显示数值小车正常行驶整个调试过程需要硬件和软件结合起来调试要仔细检查电路认真思考程序硬件部分调试的步骤检查原理图连接是否正确用万用表检查是否有虚焊引脚短路现象检查原理图与上引脚是否一致680欧的电阻焊成了68千欧这使我深深感受到理论与实际间的差距在调试过程中发现插上编程器后不能烧制程序通过检查电路发现AT89S52芯片的使能端没有接VCC改好之后重新烧制发现还是不可以通过再次检查发现是共阴管的驱动芯片74LS245的引脚出现焊接错误通过这些调试提高了我检查电路的能力以及巩固了电路图的知识通过这样的设计提高了我的动手能力每天在实验室除了焊接线路板还可以上机编程使我软件调试知识也提高了本设计采用的是89S52单片机这主要是因为该单片机的稳定性比较好还可以采用其它系列的单片机比如采用陵阳单片机就可以简化编程但其稳定性不是很好62 展望1在本课题的基础上我们可以在小车的底座下面装一个吸尘装置这样就可以在小车行驶的过程中吸除一些预先放好的小纸屑2设计出两辆小车一辆小车放在另一辆的前面当前面一辆小车起动时候后面一辆小车也起动前面一辆小车转弯的时候后面一辆也跟着转弯前面一辆小车停止时后面一辆也跟着停止致谢历时三个月的毕业设计已经告一段落经过自己不断的搜索努力以及白老师的耐心指导和热情帮助本设计已经基本完成在这段时间里白老师严谨的治学态度和热忱的工作作风令我十分钦佩他的指导使我受益非浅通过这次毕业设计使我深刻地认识到学好专业知识的重要性也理解了理论联系实际的含义并且检验了大学四年的学习成果虽然在这次设计中对于知识的运用和衔接还不够熟练但是我将在以后的工作和学习中继续努力不断完善这三个月的设计是对过去所学知识的系统提高和扩充的过程为今后的发展打下了良好的基础由于自身水平有限设计中一定存在很多不足之处敬请各位老师批评指正参考资料1 负图传感器集成电路手册第一版化学工业2004590~5912华MCS-51系列单片机实用接口技术第三版1997年3红润实用自动控制科技大学1990年1月4康华光电子技术基础高等教育1983年10月5潘新民微型计算机控制技术人民邮电技术1988年3月6依军单片机微型接口技术人民邮电技术1989年3月7广弟单片机基础航空航天大学20018汉才单片机原理及其接口技术清华大学19969王毅单片机器件应用手册人民邮电1995附录1元器件清单序号元件名称数量参数 1 AT89S52单片机12 超声波模块 13 L298n 14 智能避障小车底盘 15 蜂鸣器 16 LCD液晶屏 1 2样机实物照片3电路原理图相关程序includeincludedefine uchar unsigned chardefine uint unsigned intunsigned char isbit rs P26 定义引脚sbit rw P25sbit e P27sbit TX P30 触发信号引脚sbit FM P34sbit PWM1 P36 pwm信号输出sbit PWM2 P37static char click 0unsigned char ZK1ZK2unsigned int time 0unsigned int timer 0unsigned long Sbit flag 0unsigned char code ASCII[19] 0123456789-MJU LI static unsigned char DisNum 0 显示用指针unsigned long S 0unsigned char disbuff[11] 0void Conut voidtime TH0256TL0TH0 0TL0 0S time17 100disbuff[0] 13disbuff[1] 14disbuff[2] 15disbuff[3] 16disbuff[4] 17disbuff[5] 18disbuff[6] S1000100disbuff[7] 10disbuff[8] S100010010disbuff[9] S100010 10disbuff[10] 12void delay_1 void 误差 0usunsigned char abfor b 215b 0b--for a 45a 0a--void delay uchar auchar iwhile a--for i 0i 250i_nop__nop__nop__nop_判忙void lcd_mangrs 0rw 1e 1_nop__nop__nop__nop_while P00x80e 01602的写void write_lcd1602 uchar cmduchar i 当i为0的时候为向1602写指令为1写数据lcd_mangrs irw 0e 0_nop__nop_e 1_nop__nop_P0 cmd_nop__nop__nop__nop_e 01602的初始化void ini_lcd1602write_lcd1602 0x380delay 1write_lcd1602 0x0c0delay 1write_lcd1602 0x060delay 1write_lcd1602 0x010delay 1void Timer2InterruptRCAP2H 0x0feRCAP2L 0x33ET2 1 允许T2定时器中断EA 1 打开总中断TR2 1 启动T2定时器void zd0 interrupt 1flag 1void zd3 interrupt 3 T1中断用来扫描数码管和计800MS启动模块TH1 0x0f8TL1 0x30timerif timer 200timer 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 0void Timer2 void interrupt 5TF2 0 T2定时器发生溢出中断时需要用户自己清除溢出标记RCAP2H 0x0feRCAP2L 0x33 恢复定时器初始值clickif click 100 click 0if click ZK1PWM1 1elsePWM1 0if click ZK2 PWM2 1elsePWM2 0主函数void mainTMOD 0x19 设T0为方式1GATE 1 TH0 0TL0 0TH1 0x0f8 2MS定时TL1 0x30ET0 1 允许T0中断ET1 1 允许T1中断TR1 1 开启定时器Timer2InterruptEA 1 开启总中断ZK1 20ZK2 20ini_lcd1602while 1while INT0 0 当RX为零时等待TR0 1while INT0 1 当RX为1计数并等待TR0 0 关闭计数Conut 计算if S 40 控制加速FM 1P1 0xafZK1 ZK1-5ZK2 ZK2-5elseif S 30 控制转向FM 0ZK1 ZK15ZK2 ZK25P1 0X8Fdelay_1if ZK1 99 ZK1 1if ZK1 1 ZK1 10if ZK2 99 ZK2 1if ZK2 1 ZK2 10write_lcd1602 0x800for i 0i 10iwrite_lcd1602 ASCII[disbuff[i]]1- III -- 31 -。
基于Arduino的超声波避障小车设计超声波避障小车的设计摘要本文介绍了一种基于Arduino的超声波避障小车的设计。
该小车使用超声波传感器来扫描其周围的环境,通过Arduino控制系统计算出障碍物的距离和方向,从而避免与障碍物发生碰撞。
本文介绍了系统的硬件设计、程序设计和实验结果,并对设计进行了评估和讨论。
关键词:Arduino、超声波传感器、避障小车、硬件设计、程序设计、实验结果1.引言超声波传感器是一种非常常见的传感器,它可以用来检测物体的距离和方向。
在许多应用领域,如机器人和自动导航系统,在设计中都需要集成超声波传感器。
基于Arduino的超声波避障小车是一种常见的应用,它可以在避免与障碍物碰撞的同时移动。
2.系统设计2.1 系统硬件设计小车的硬件部分主要由以下组件组成:- Arduino开发板- 超声波传感器- 直流电机- L298N电机驱动器- 9V电池组Arduino开发板是系统的核心部分,它负责接收超声波传感器的数据,并根据传感器读数控制小车移动。
超声波传感器负责探测小车周围的障碍物,并将读数发送给Arduino开发板。
直流电机和L298N 电机驱动器负责控制小车的运动。
2.2 程序设计程序设计主要由以下几步完成:- 初始化程序- 读取超声波传感器数据- 计算障碍物的距离和方向- 发送控制信号控制小车移动程序的主要功能是根据传感器读数来计算移动的方向和速度,以避免与障碍物碰撞。
程序还可以在碰到障碍物时停止小车运动,以保护小车和周围环境。
2.3 实验结果为了测试系统的性能,进行了多组实验。
在实验中,我们放置障碍物并观察小车的运动情况。
实验结果表明,小车能够准确地检测障碍物并及时避免与其碰撞。
此外,小车还能够在不同的环境中运行,包括光线强度不同的环境和障碍物形状不同的环境。
3.评估与讨论基于Arduino的超声波避障小车是一种简单而有效的避障系统,可以准确地探测障碍物并避免与其碰撞。
////5路超声波避障实验:51单片机 + HC-SR04超声波 ////include <AT89x52.H> //器件配置文件include <intrins.h> define RX1 P3_6//小车左侧超声波HC-SR04接收端define TX1 P1_7 //发送端define RX2 P3_3 //左前方超声波define TX2 P0_2define RX3 P2_4 //正前方超声波define TX3 P2_5define RX4 P3_5 //右前方超声波define TX4 P3_4define RX5 P3_7 //右侧超声波define TX5 P1_6define Left_moto_pwm P1_5 //PWM信号端define Right_moto_pwm P1_4 //PWM信号端//定义小车驱动模块输入IO口sbit IN1=P1^0;sbit IN2=P1^1;sbit IN3=P1^2;sbit IN4=P1^3;sbit EN1=P1^4;sbit EN2=P1^5;bit Right_moto_stop=1;bit Left_moto_stop =1;define Left_moto_go {IN1=0,IN2=1,EN1=1;} //左电机向前走define Left_moto_back {IN1=1,IN2=0,EN1=1;} //左边电机向后走define Left_moto_Stop {EN1=0;} //左边电机停转define Right_moto_go {IN3=1,IN4=0,EN2=1;} //右边电机向前走define Right_moto_back {IN3=0,IN4=1,EN2=1;} //右边电机向后走define Right_moto_Stop {EN2=0;} //右边电机停转unsigned char pwm_val_left =0;//变量定义unsigned char push_val_left =0;// 左电机占空比N/20unsigned char pwm_val_right =0;unsigned char push_val_right=0;// 右电机占空比N/20unsigned int time=0;unsigned int timer=0;unsigned long S1=0;unsigned long S2=0;unsigned long S3=0;unsigned long S4=0;unsigned long S5=0;void delay_1msunsigned char x //1ms延时函数,100ms以内可用 { unsigned char i; whilex-- fori=124;i>0;i--; } //void Count1 //计算左侧超声波距离的函数{ whileRX1; //当RX1为零时等待TR0=1; //开启计数whileRX1; //当RX1为1计数并等待TR0=0; //关闭计数time=TH0256+TL0;TH0=0;TL0=0;S1=time1.7/100; //算出来是CM }void Count2 //计算函数{ whileRX2; //当RX2为零时等待TR0=1; //开启计数whileRX2; //当RX2为1计数并等待TR0=0; //关闭计数time=TH0256+TL0;TH0=0;TL0=0;S2=time1.7/100; //算出来是CM }void Count3 //计算函数{ whileRX3; //当RX3为零时等待TR0=1; //开启计数whileRX3; //当RX3为1计数并等待TR0=0; //关闭计数time=TH0256+TL0;TH0=0;TL0=0;S3=time1.7/100; //算出来是CM }void Count4 //计算函数{ whileRX4; //当RX4为零时等待TR0=1; //开启计数whileRX4; //当RX4为1计数并等待TR0=0; //关闭计数time=TH0256+TL0;TH0=0;TL0=0;S4=time1.7/100; //算出来是CM }void Count5 //计算函数{whileRX5; //当RX5为零时等待TR0=1; //开启计数whileRX5; //当RX5为1计数并等待TR0=0; //关闭计数time=TH0256+TL0;TH0=0;TL0=0;S5=time1.7/100; //算出来是CMvoid leftrunvoid {push_val_left=20;push_val_right=20;Left_moto_back //左电机往后走 Right_moto_go //右电机往前走 }// //右转void rightrunvoid{push_val_left=20;push_val_right=20;Left_moto_go //左电机往前走 Right_moto_back //右电机往后走 }// //停止void stoprunvoid{Left_moto_Stop //左电机停 Right_moto_Stop //右电机停 }// / PWM调制电机转速 / /// 左电机调速 / /调节push_val_left的值改变电机转速,占空比 /void pwm_out_left_motovoid{ifLeft_moto_stop{ ifpwm_val_left<=push_val_left{ Left_moto_pwm=1; }else { Left_moto_pwm=0; }ifpwm_val_left>=20pwm_val_left=0;}else { Left_moto_pwm=0; } }// / 右电机调速 /void pwm_out_right_motovoid{ ifRight_moto_stop{ ifpwm_val_right<=push_val_right{ Right_moto_pwm=1;}else { Right_moto_pwm=0; }ifpwm_val_right>=20 pwm_val_right=0; }else { Right_moto_pwm=0; } }//void timer0 interrupt 1 //T0中断 { }// ///TIMER1中断服务子函数产生PWM信号/void timer1interrupt 3{ TH1=65536-1000/256; //1ms定时 TL1=65536-1000%256;timer++;pwm_val_left++;pwm_val_right++;pwm_out_left_moto;pwm_out_right_moto; }/ /void mainvoid{TMOD=0x11; //设T0为方式1,GATE=1;TH0=0;TL0=0;TH1=65536-1000/256; //1ms定时TL1=65536-1000%256;ET0=1; //允许T0中断ET1=1; //允许T1中断TR1=1; //开启定时器EA=1; //开启总中断while1 {TX1=1; //开启超声波1探测delay_1ms1;TX1=0;Count1; //测距TX2=1;delay_1ms1;TX2=0;Count2;TX3=1;delay_1ms1;TX3=0;Count3;TX4=1;delay_1ms1;TX4=0;Count4;TX5=1;delay_1ms1;TX5=0;Count5;ifS3<20 && S1<20 && S5<20 //进入狭窄通道{ backrun; //倒车delay_1ms100;}else ifS3<20 && S1<S5 //车子与障碍物90度垂直,左边距离小右转{ rightrun; }else ifS3<20 && S5<S1 //车子与障碍物90度垂直,右边距离小左转 { leftrun; } else ifS2<20{ rightrun; //车与障碍物呈45度角时,车的左边比车的右边距离小,右转 } else ifS4<20{ leftrun; //车与障碍物呈45度角时,车的右边比车的左边距离小,左转 }else { run; } } }。
qiyekejiyufazhan2018年第9期(总第443期)0 引言自避障小车诞生以来,它在很多领域都有涉及,如机械、电子和交通。
各种用电器都在向智能化转变,已经渗透到我们日常生活的方方面面。
在各种高端技术的驱使下,避障小车的各种部件已经数以万计,要想使避障小车自己动起来,就要有类似于人类眼睛的传感器感知周围的环境。
目前的传感器,在计算机超快的计算速度配合下,也只能傻瓜式感知周围的环境。
一般的避障控制系统,属于一种简单的自动引导系统,使智能避障小车能够自己判断障碍物距自己的距离,在与设定值比较之后选择较远的距离朝其驶去。
在汶川大地震的抗震救灾工作中,很多地方人都没有办法到达,这就要靠避障小车来完成。
这就需要避障小车具备类似于人类思考问题的能力,避开各种障碍物,最终到达需要自己的地方。
本次设计要完成的是智能避障小车。
1 小车的设计1.1 硬件介绍小车运行的控制方法多式多样,本设计采用主流的微控制器———单片机,可以说单片机是小车的心脏和大脑,小车运行都依赖它的控制。
本设计中主控采用我们耳熟能详的STC89C51单片机,它主要负责对电机的控制和距离的测量。
虽然这款单片机自身没有脉冲宽度调制模块,但可以通过编程产生脉冲宽度调制,这样既能将资源发挥得淋漓尽致,还能很好地满足使用需求。
利用单片机作为该系统的大脑,用其指挥行进中的小车,以实现智能避障功能。
将系统剖开来看,其致命点在于实现小车的智能避障,而此时单片机的优点就体现出来了,控制起来比较简单,使用起来比较方便,操作起来比较敏捷。
这样一来,它就可以体现其可位寻址操作功能、充分发挥其资源丰富、控制功能强大、价格低廉等优点,对智能避障小车的控制起到了不可替代的作用。
1.2 软件介绍Proteus 软件是英国Lab Center Electronics 公司出版的EDA 工具软件,到现如今为止已经有多个版本,它的功能十分强大,不仅可以用来仿真EDA ,而且也可以自己创作原件,比如仿真单片机及外围元件。
自动避障小车课程设计一、课程目标知识目标:1. 让学生掌握自动避障小车的基本原理,理解传感器的工作机制。
2. 使学生了解程序设计的基本流程,掌握基础的编程指令和逻辑控制。
3. 帮助学生理解自动避障小车在实际生活中的应用,了解相关技术的发展趋势。
技能目标:1. 培养学生运用所学知识进行问题分析,设计简单的自动避障小车程序。
2. 提高学生动手实践能力,学会组装和调试自动避障小车。
3. 培养学生团队协作和沟通能力,能够共同完成项目任务。
情感态度价值观目标:1. 培养学生对科学技术的兴趣,激发创新意识和探索精神。
2. 培养学生面对问题积极思考,勇于克服困难,解决问题的积极态度。
3. 培养学生关注社会热点,认识到科技发展对生活的影响,增强社会责任感。
课程性质:本课程为实践性较强的课程,注重理论知识与实际操作的结合。
学生特点:学生为初中生,具备一定的物理知识和逻辑思维能力,对科技产品感兴趣,喜欢动手操作。
教学要求:结合学生特点,课程设计应注重理论与实践相结合,充分调动学生的积极性,提高学生的动手实践能力和创新能力。
在教学过程中,注重引导学生自主学习,培养学生解决问题的能力。
通过课程学习,使学生在知识、技能和情感态度价值观方面得到全面提升。
二、教学内容1. 理论知识:- 介绍自动避障小车的基本原理,涉及传感器、电机驱动、控制单元等组成部分。
- 结合课本相关章节,讲解编程语言基础,如循环结构、条件判断等。
- 分析自动避障小车在实际应用中的例子,探讨其对社会生活的影响。
2. 实践操作:- 指导学生动手组装自动避障小车,熟悉各部件功能及安装方法。
- 教学编程软件的使用,教授如何编写和调试自动避障小车程序。
- 组织学生进行小组合作,共同完成自动避障小车的制作和调试。
3. 教学大纲:- 第一阶段:自动避障小车原理学习,占课程总进度的30%。
- 第二阶段:编程语言学习,占课程总进度的30%。
- 第三阶段:动手实践,占课程总进度的40%。
综合能力实训项目设计报告1 避障小车设计说明该设计利用单片机STC89C52RC作为主控芯片,该芯片是一种高速、低功耗、抗干扰能力强的芯片,其最高时钟工作频率为48MHz,用户应用程序空间为8K。
能够满足程序空间需要。
驱动采用L298N驱动芯片,它是一种双全桥步进电机专用芯片,通过对其输入端的控制可以实现小车的启动、转向、停止等动作。
为节省成本,小车由两个直流减速电机加一个万向轮构成,并采用后轮驱动。
系统采用单片机为控制核心,利用自制小车或玩具小车进行小车的模拟,采用超声波避障模块进行障碍物的检测。
单片机控制避障模块发射和接收,通过相应的程序处理,判断障碍物的位置。
根据检测情况单片机控制电机驱动模块,控制小车电机的正反转实现小车的转向,启动等相应动作,来实现避开障碍物。
2 总体设计方案2.1设计要求在小车行驶过程中,50ms启动一次超波模块,对前方路况进行检测,当障碍物小于40cm时,小车自动左转90度,当小车转过90度后,对前方道路再次检测,若无障碍,向前行驶。
如果存在障碍物且小于40cm,小车右转180度,并再次检测前方路况,若无障碍物,向前行驶,有障碍物且距离小于40cm,小车向右转90度并向前行驶。
2.2系统设计方案根据设计要求,为了便于调试和改进,采用模块化设计。
系统可分为:微控制器、避障模块、驱动模块、小车模块。
2.3总体设计基于单片机STC89C52RC设计的智能避障小车,本设计需提供+5V电源,,DC+5CV由蓄电池通过降压模块得到+5V电源,为单片机及其他电路提供工作电压。
超声波避障模块,采用购买的现成的超生波发射接收模块,通过单片机控制超声波模块去小车行驶道路上的障碍物进行检测,然后单片机通过处理反馈的信息,判断障碍物的距离,进而发出指令控制驱动模块,控制小车实现转向,达到避障的目的。
系统框图总体设计框图2.4功能说明本设计主控芯片采用51芯片,负责传感器的状态,并向电机驱动模块发出动作指令。
避障小车课程设计一、课程目标知识目标:1. 学生能够理解避障小车的基本工作原理,掌握相关的物理和工程知识。
2. 学生能够描述并解释传感器在避障小车中的作用,以及如何通过编程实现小车自动避障。
3. 学生能够掌握基础的电路连接和编程指令,将理论知识应用于实际操作中。
技能目标:1. 学生能够运用所学知识,独立完成避障小车的组装和编程。
2. 学生能够在团队协作中发挥自己的作用,共同解决制作过程中遇到的问题。
3. 学生通过实践活动,提高动手能力,培养创新思维和问题解决能力。
情感态度价值观目标:1. 学生通过参与避障小车的制作,增强对科学技术的兴趣和好奇心,培养积极的学习态度。
2. 学生在团队合作中学会相互尊重、支持与配合,培养良好的团队精神和沟通能力。
3. 学生在遇到困难和挑战时,能够保持积极心态,勇于尝试和克服困难,增强自信心。
二、教学内容本课程以《信息技术》教材中“机器人制作”章节为基础,结合以下内容进行教学:1. 机器人基础知识:介绍机器人的定义、分类及其应用场景,重点讲解避障小车的工作原理。
2. 传感器及其应用:学习红外传感器、超声波传感器等在避障小车中的作用,以及传感器与单片机的连接方法。
3. 编程控制:学习基本的编程指令,通过编程实现避障小车的自动行驶和避障功能。
4. 实践操作:分组进行避障小车的组装、编程和调试,让学生在实践中掌握相关知识。
5. 创新拓展:在掌握基本功能的基础上,鼓励学生发挥创意,为避障小车增加更多功能。
教学内容安排和进度:第一课时:机器人基础知识学习,了解避障小车工作原理。
第二课时:学习传感器及其应用,进行传感器与单片机的连接。
第三课时:学习编程控制,编写程序实现避障功能。
第四课时:分组实践操作,组装、编程和调试避障小车。
第五课时:创新拓展,为避障小车增加更多功能,分享制作经验。
三、教学方法本课程采用以下多样化的教学方法,以激发学生的学习兴趣和主动性,提高教学效果:1. 讲授法:教师通过生动的语言和形象的表达,为学生讲解机器人基础知识、传感器原理等理论内容,使学生对避障小车有全面的认识。
超声波避障小车设计引言:随着科技的不断发展,人们对机器人的需求越来越大。
超声波避障小车是一种能够利用超声波测距技术进行环境感知和避障的智能机器人。
本文将介绍超声波避障小车的设计方案及其原理、实现和应用。
一、设计方案:1.1硬件设计:1.1.1小车平台设计:小车平台应具备良好的稳定性和可扩展性,可以根据需要添加其他传感器或执行器。
常见的平台材料有金属和塑料,可以根据实际需求选择适合的材料。
1.1.2驱动电机选择:驱动电机应具备足够的功率和转速,以保证小车的运动能力。
一般可以选择直流无刷电机或步进电机。
1.1.3超声波传感器安装:超声波传感器通过发射和接收超声波信号,实现对周围环境的测距。
传感器应安装在小车前方,可以通过支架或支架固定在小车上。
1.2软件设计:1.2.1运动控制程序:运动控制程序通过控制驱动电机的转速和方向,实现小车的前进、后退、转弯等运动。
可以使用单片机或开发板来编写控制程序。
1.2.2避障算法:避障算法是超声波避障小车的核心功能。
当超声波传感器检测到前方有障碍物时,小车应能及时做出反应,避免与障碍物碰撞。
常见的避障算法包括简单的停止或转向,以及更复杂的路径规划算法。
二、工作原理:超声波避障小车的工作原理是通过超声波测距模块对周围环境进行测量和感知。
超声波传感器发射超声波信号,当信号遇到障碍物后会反射回传感器,通过测量反射时间可以计算出距离。
根据测得的距离,小车可以判断是否有障碍物,并采取相应的措施进行避障。
三、实现步骤:3.1搭建小车平台:根据设计方案搭建小车平台,安装驱动电机和超声波传感器。
3.2连接电路:将驱动电机和超声波传感器与单片机或开发板连接,建立电路连接。
3.3编写控制程序:利用编程语言编写运动控制程序,实现小车的基本运动功能。
3.4设计避障算法:根据需求设计避障算法,实现小车的避障功能。
3.5调试和测试:对小车进行调试和测试,确保其正常工作。
四、应用领域:超声波避障小车在工业自动化、家庭服务、教育培训等领域具有广泛的应用前景。