超声波避障小车程序设计

合集下载

单片机课程设计——超声波避障小车

单片机课程设计——超声波避障小车

课程设计说明书(论文)设计题目:超声波避障小车院系:学院班级:设计者:学号:指导教师:设计时间:8.27~9.10课程设计任务书开题报告绪论课题目的通过上学期单片机课程的学习,我们基本掌握了51单片机的基本使用方法,本学期开学初,单片机课程设计给了我们更大的挑战,课题的目的有以下几点。

●进一步熟练掌握单片机的使用方法、提高程序的编写能力●掌握单片机系统外扩器件的连接与使用●提高器件说明书以及时序过程的阅读、理解能力●掌握软件和硬件调试的基本技巧与方法项目研究背景及意义在当今社会,汽车成为了越来越普遍,人们不可缺少的交通工具。

但汽车的不断增加,随之而来就是越来越多的交通事故。

交通事故成为了现在越来越严重的安全隐患。

所以随着汽车工业的快速发展,我们必须加强对汽车安全性能的考虑。

所以,智能汽车概念应运而生,他既是汽车产业的机遇也是汽车产业的挑战。

汽车的智能化必将是未来汽车产业发展的趋势,在这样的背景下,我们开展了基于超声波的智能小车的避障研究。

超声波作为智能车避障的一种重要手段,以其避障实现方便,计算简单,易于做到实时控制,测量精度也能达到实用的要求,在未来汽车智能化进程中必将得到广泛应用。

我国作为一个世界大国,在高科技领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的,在这种情况下研究超声波在智能车避障上的应用具有深远意义,这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用。

设计要求采用超声波模块实现小车避障功能,实现小车自动避障任务。

1主要设计内容及方案总体方案设计系统采用51单片机作为核心控制单元用于智能车系统的控制,在超声波检测到障碍物之后,主控芯片根据距离值控制直流电机的转动,在与障碍物距离较大的情况下,快速前进,在与障碍物距离较小但还未到达临界转弯方向值的时候,慢速前进。

在与障碍物距离很近需要转向避障时,方案上将尝试进行转向,来进行避障。

系统总体的设计方框图如图2-1所示。

超声波避障小车的设计书

超声波避障小车的设计书

超声波避障小车的设计书1.1立项目的(1)设计一辆利用超声波传感器来实现避障功能的小车,使小车对其运动方向受到的阻碍作出各种躲避障碍的动作。

(2)进一步学习单片机原理及其应用,了解超声波传感器的工作原理。

1.2立项意义在科学探索及紧急抢险中经常要对一些危险或人类不能直接到达的地域进行探测,这就需要用机器人来完成。

而机器人在复杂地形行进时自动避障是一项必不可少也是最基本的功能。

因此,自动避障系统的研发也就应运而生。

自动避障小车就是基于这一系统开发而成的。

随着科技的发展,对于未知空间和人类所不能直接到达的地域的探索逐步成为热门,这就使机器人自动避障功能的研发有了重大意义。

通过对自动避障小车的设计,我们可以将其运用于自动避障小车,以作为地域探索机器人和紧急抢险机器人的运动系统,让机器人在行进中自动避过障碍物。

1.3设计要求(1)在车前方没有障碍物时,小车沿直线向前走。

(2)在车前方有障碍物时,小车能避开障碍物,避障方法如下:①先向左边转90度,如果前面没有障碍物,再沿直线向前走;②如果前面仍有障碍物,则向右转180度,如果前面没有障碍物,则直线行走;③如果前面仍有障碍物,则向右90度,然后直线行走2课题设计2.1设计原理该智能车系统可分为四个主要模块:传感器避障模块,单片机主控核心模块,电机驱动模块,USB下载模块。

鉴于电机驱动模块、USB下载模块已经由实验室直接提供了,我们对于传感器避障模块和单片机主控核心模块进行了讨论。

(1)传感器避障模块。

智能车避障系统中的传感器一般分为接触型和非接触型两种,接触型相对比较简单。

这里我们使用了超声波传感器进行测量,也即非接触型传感器。

超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生震动产生的,在碰到杂质获分界面会产生显著反射从而形成反射回波,超声波传感器就是根据超声波在障碍物界面上的反射来判断检测物体的存在以及距离的。

超声波频率高,波长短,绕射现象小,方向性好,再加上信息处理简单且价格低廉,所以这里我们使用28015-PING-v1.6超声波传感器对小车行进前方路况进行探测以及判断,它能实现从3cm到1.8m距离的测量,从而识别出范围内的障碍物。

(毕业论文设计)智能超声波避障小车的设计与制作(可编辑)

(毕业论文设计)智能超声波避障小车的设计与制作(可编辑)

(毕业论文)智能超声波避障小车的设计与制作江阴职业技术学院项目设计报告项目超声波避障小车的设计与制作专业学生班级学号指导教师完成日期摘要智能小车是一种能够通过编程手段完成特定任务的小型化机器人它具有制作成本低廉电路结构简单程序调试方便等优点由于具有很强的趣味性智能小车深受广大机器人爱好者以及高校学生的喜爱本论文介绍的是具有自动避障功能的智能小车的设计与制作以下简称智能小车论文对智能小车的方案选择设计思路以及软硬件的功能和工作原理进行了详细的分析和论述经实践验收测试该智能小车的电路结构简单调试方便系统反映快速灵活设计方案正确可行各项指标稳定可靠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 -。

超声波避障小车设计

超声波避障小车设计
2.2设计原理
该智能车系统可分为三个主要模块:单片机主控核心模块,传感器避障模块,电机驱动模块。系统主要原理是:经过超声波避障模块(即感测模块)实时监测路面情况并及时传输给单片机。由单片机主控核心模块根据感测模块给予的信息控制小车两电机转动工作状态。电机驱动模块驱动两电机转动,实现前进或者左、右转。
(1)单片机主控核心模块。在这次设计中我们选用已经学过的MCS-51单片机为核心作为控制模块。MCS-51系列单片机是美国Intel公司于1980年推出的产品,MCS-51系列单片机的影响及其深远,许多公司都推出了兼容系列单片机,使MCS-51内核成为一个8位单片机的标准,其典型产品有8031、8051、8751等等。
同组设计者及分工:
张佳炜:资料查找、电路搭建与调试、方案设计
魏孙贵:程序设计及编写
指导教师签字___________________
年月日
教研室主任意见:
教研室主任签字___________________
年月日
开题报告
1立项依据
1.1立项目的
(1)设计一辆利用超声波传感器来实现避障功能的小车,使小车对其运动方向受到的阻碍作出各种躲避障碍的动作。
(2)传感器避障模块。智能车避障系统中的传感器一般分为接触型和非接触型两种,接触型相对比较简单。这里我们使用了超声波传感器进行测量,也即非接触型传感器。
超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生震动产生的,在碰到杂质获分界面会产生显著反射从而形成反射回波,超声波传感器就是根据超声波在障碍物界面上的反射来判断检测物体的存在以及距离的。超声波频率高,波长短,绕射现象小,方向性好,再加上信息处理简单且价格低廉,因此这里我们使用28015-PING-v1.6超声波传感器对小车行进前方路况进行探测以及判断,它能实现从3cm到1.8m距离的测量,从而识别出范围内的障碍物。我们将其作为传感器避障模块,利用其返回的数据,从而实现小车避障的功能。图1为超声波传感器。

基于51单片机的超声波避障小车设计-毕业论文

基于51单片机的超声波避障小车设计-毕业论文

基于51单片机的超声波避障小车设计-毕业论文内蒙古科技大学本科生毕业设计说明书(毕业论文)题目:基于单片机的超声波避障小车设计学生姓名:祝伟泰学号:1267112115 专业:测控技术与仪器班级:测控2012-1指导教师:燕芳副教授内蒙古科技大学毕业设计说明书(毕业论文)基于单片机的超声波避障小车设计摘要随着科学技术的飞速发展,人们对智能汽车的研究有增无已,智能车已然成为以后科学技术发展的新思路和新方向。

智能车可以按照预先设定的模式在一个环境里自动的运作,不需要人为的操控,可应用于路面检测,科学勘探,智能温度测量等。

本设计中制作的智能小车(又称轮式机器人)是本人在综合应用了本科所学的专业知识后设计出的一台智能小车,它具有超声波测距,自动避障,同步测速等功能。

虽然超声波避障小车只是智能车领域中的冰山一角,但是它却也是智能车中一个典型的代表。

麻雀虽小五脏俱全,本次设计的超声波避障小车,用STC15单片机作为核心控制器,设计出一种可以自动避障,并能同步实现速度和距离的测量以及显示的智能小车。

避障和测距通过超声波测距模块实现,并加入光电码盘测速模块从而实现测速功能,小车驱动由L298N驱动电路完成,数据的显示用LCD1602实现。

关键词:STC15单片机;超声波;避障;测速I内蒙古科技大学毕业设计说明书(毕业论文)Ultrasonic obstacle avoidance car design basedon Micro Computer UnitAbstractWith the development of science and technology, People have increased the research of smart car.Smart car has become the new way of thinking and a new direction for after the development of science and technology . Smart cars can be according to the preset mode automatically in an environment of operation, without the need of human control, can be applied to road testing, scientific exploration, intelligent temperature measurement, etc.This paper discusses the intelligent car (also known as wheeled robot) is I after summarized the major undergraduate course design a smart car, it has the ultrasonic distance measurement, automatic obstacle avoidance, synchronous speed, and other functions. Although ultrasonic obstacle avoidance car is just the tip of the iceberg in the field of smart car, but it is also a typical representative in intelligent vehicles. The sparrow is small all-sided, the design of ultrasonic obstacle avoidance car, use STC51 single-chip microcomputer as the core controller, design a kind of can automatic obstacleavoidance, and can realize the speed and distance measurement simultaneously and the smart car show. Obstacle avoidance and the distance by ultrasonic ranging module, and add light code disc speed measuring module and function of speed of the car drive by L298N drive circuit is completed, through LCD1602 display of measured data.Keywords: STC15;Ultrasonic sensors; avoidance; speedII内蒙古科技大学毕业设计说明书(毕业论文)目录摘要 (I)Abstract (II)1.1课题研究背景和意义 (1)1.2智能汽车的发展概述 (1)1.3 课题研究技术要求与主要内容 ....................................... 2 第二章总体方案设计 (4)2.1总体方案设计 (4)2.1.1具体设计思路 .................................................52.2系统各模块的设计方案 (6)2.2.1控制核心模块的选择方案论证 ...................................62.2.2主电路板的方案论证 ...........................................67 2.2.3测距避障传感器的方案论证 .....................................2.2.4 测速模块的选择方案论证 ......................................89 2.2.5电机驱动选择方案论证 .........................................2.2.6 显示装置的选型方案论证 ......................................92.3 本章小结 ........................................................11 第三章硬件电路设计 (11)3.1 STC15单片机简介 .................................................123.1.1 引脚说明 ...................................................123.1.2 特别管脚说明 ...............................................133.1.3 中断说明 ...................................................133.2 时钟电路和复位电路 (14)3.3电源电路部分 .....................................................143.4超声波传感器 .....................................................143.4.1 超声波测距的物理性质 .......................................153.4.2 超声波测距的原理 ...........................................153.4.3超声波测距过程分析 ..........................................163.5 电机驱动电路 ....................................................17III内蒙古科技大学毕业设计说明书(毕业论文)3.5.1 电机驱动电路分析 ...........................................183.5.2 PWMD调速分析 ...............................................193.6 LCD1602显示电路设计 .............................................193.6.1 LCD1602显示 ................................................193.6.2 LCD1602引脚功能说明 ........................................203.6.3 1602LCD的指令说明及时序: (20)3.7 光电测速模块 (22)3.8 报警电路设计 ..................................................... 23 第四章软件设计部分 (24)4.1 主程序的设计 (24)4.2 超声波测距程序设计 (25)4.3 避障程序设计 (26)4.4 PWM程序设计 .....................................................2728 4.5 显示子程序设计 ...................................................4.7 报警程序设计 (29)系统调试 .........................................................30 第五章5.1概述 .............................................................305.2 各模块的调试 (30)5.2.1 LCD的调试 ..................................................305.2.2光电码盘调试 ................................................315.2.3 蜂鸣器报警调试 .............................................315.2.4 电机及驱动调试 .............................................325.2.5 超声波模块调试 .............................................32 总结 .................................................................... 33 参考文献 (34)附录A 实物图 ............................................................ 36 附录B 源程序 (37)致谢 ....................................................................38IV内蒙古科技大学毕业设计说明书(毕业论文)第一章绪论1.1课题研究背景和意义随着21世纪的到来科学技术的发展步入了一个高速发展的阶段,智能化也普及了各个领域。

自动避障小车课程设计

自动避障小车课程设计

自动避障小车课程设计一、课程目标知识目标: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芯片,负责传感器的状态,并向电机驱动模块发出动作指令。

一种基于超声波的避障小车

一种基于超声波的避障小车

摘要随着机器人技术的发展, 自主移动机器人以其活性和智能性等特点, 在人们的生产、生活中的应用来越广泛。

自主移动机器人通过各种传感器系统感知外界环境和自身状态, 在复杂的已知或者未知环境中自主移动并完成相应的任务。

而在多种探测手段中, 超声波传感器系统由于具有成本低, 安装方便, 易受电磁、光线、被测对象颜色、烟雾等影响, 时间信息直观等特点, 对于被测物处于黑暗、有灰尘、烟雾、电磁干扰、有毒等恶劣的环境下有一定的适应能力, 因此在移动机器人领域有着广泛的应用。

针对一种基于光电寻迹、超声波和光电接近开关的避障小车,通过对整体方案、电路、算法、调试、车辆参数的介绍,详尽地阐述移动机器人通过传感器系统感知外界环境和自身状态, 在复杂的环境中自主移动并完成相应的任务。

超声波传感器以其独有的特征而被青睐。

本文利用两个超声波传感器对障碍物进行定位, 从而使机器人顺利到达结构化环境中的目标。

该智能小车系统涉及计算机控制技术、路径识别、传感技术、电子设计、程序设计、机械设计等多个学科,在全国ROBOCUP机器人大赛中取得了优异的成绩,磨练我们的知识融合和实践动手能力的培养。

在此感谢学校学院的大力支持及指导老师悉心的教导。

第一章总体方案本章主要简要地介绍系统总体方案的选定和总体设计思路,在后面的章节中将整个系统分为机械结构、控制模块、控制算法等三部分对智能车控制系统进行深入的介绍分析。

1.1 需求分析设计一种基于光电寻迹的小车移动平台,借助超声波传感器、光电接近开关传感器的使用满足在一定的复杂的环境中自主寻迹移动、避障任务。

1.2 总体设计通过学习和研究相关技术资料了解到,路径识别模块是系统的关键模块之一,路径识别方案的好坏,直接关系到最终性能的优劣,因此确定路径识别模块的类型是决定系统总体方案的关键。

前能够用于智能车辆路径识别的传感器主要有光电传感器和CCD/CMOS传感器。

光电传感器寻迹方案的优点是电路简单、信号处理速度快,但是其前瞻距离有限;CCD摄像头寻迹方案的优点则是可以更远更早地感知赛道的变化,但是信号处理却比较复杂,如何对摄像头记录的图像进行处理和识别,加快处理速度是摄像头方案的难点之一。

超声波避障小车设计毕业设计

超声波避障小车设计毕业设计

摘要80C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。

这里介绍的是如何用80C51单片机来实现长春工业大学的毕业设计,该设计是结合科研项目而确定的设计类课题。

本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。

整个系统的电路结构简单,可靠性能高。

实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用关键词80C51单片机、光电检测器、PWM调速、电动小车TitleAbstract80C51 is a 8 bit single chip computer.Its easily useing and multi-function suffer large users. This article introduce the CCUT graduation design with the 80C51 single chip copmuter.This design combines with scientific research object. This system regard the request of the topic, adopting 80C51 for controling core,super sonic sensor for test the hinder.It can run in a high and a low speed or stop automatically.It also can record the time ,distance and the speed or searching light and mark automatically The electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyse.The adoption of technique as:(1)Reduce the speed by program the engine;(2)efficient application of the sensor;(3)The adoption of the new display chip.Keywords 80C51 single chip computer、light electricity detector、PWM speed adjusting毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

超声波避障小车程序设计

超声波避障小车程序设计

***** ***/// 5路超声波避障实验:1单片机HC-SR04 超声波/// **** ****** ** */#include 〈AT89x52、H> //器件配置文件#i nclude <intrins 、h> #define RX1P3_6// 小车左侧超声波HC—SR04 接收端#define TX1 P1_7 //发送端#define RX2 P3_3 //左前方超声波#define TX2 P0_2#define RX3 P2_4 //正前方超声波#defineTX3 P2_5#defin eRX4 P3_5 //右前方超声波#define TX4 P3_4#define RX5P3_7 //右侧超声波#defineTX5 P1_6#define Left_moto _pwm P1_5 //P WM信号端#defineRight_moto_pwmP1_4//PWM 信号端//定义小车驱动模块输入IO 口sbitIN1=P1^0 ;sbit IN2=P1^1;sbit IN 3=P1^2;sbit IN4=P1^3 ;sbitEN1=P1^4;sbit EN2=P1^5;bit Right_moto_s top=1;bit Left_ moto_ stop =1;#define Left_m oto_go { IN1=0,IN2=1,EN1=1;} // 左电机向前走#defineLeft_moto_ back {IN1=1,IN2=0,EN1=1;} //左边电机向后走#defi neLeft_moto_Stop { EN1=0;} // 左边电机停转#def ineRight _mo to_go {IN3=1,IN4=0,EN2=1;} // 右边电机向前走#define Right_moto_back {IN3=0,IN4=1,EN2=1;} //右边电机向后走#define Right_moto_ Stop { EN2=0;} // 右边电机停转unsigned charpwm_val_l eft =0;// 变量定义unsigned char push_val_left =0 ;//左电机占空比N/20unsigned char p wm_val_right=0;unsignedchar push_val_ right=0;// 右电机占空比N/20 unsigned in ttime =0; unsigned int tim er= 0;unsigned long S1=0;unsignedlong S2=0; unsigned long S3=0;unsignedlong S4=0;unsigned long S5=0;void delay_ 1m s(unsignedchar x)//1ms 延时函数,100ms 以内可用{ unsigned char i;while(x——)for (i=124;i〉0;i--); } ***** */void Count1() // 计算左侧超声波距离得函数{ while(!RX1);//当RX1为零时等待TR0=1;// 开启计数while(RX1);//当RX1为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S1=(time*1、7)/100;//算出来就是CM } voi dCount2()//计算函数{ while(!RX2);// 当RX2 为零时等待TR0=1;/ /开启计数while(RX2);// 当RX2 为1计数并等待TR0=0;// 关闭计数time=TH0* 256+TL0;TH0=0;TL0=0;S2=(time*1、7)/100; // 算出来就是CM } v oidCount3() // 计算函数{ whi le(!RX3);// 当RX3 为零时等待TR0=1; // 开启计数while(RX3);//当RX3为1计数并等待TR0=0;// 关闭计数time=TH0* 256+TL0;TH0=0;TL0=0;S3=(time*1、7)/100;//算出来就是CM } void Count4 ()// 计算函数{ while(!RX4); // 当RX4 为零时等待TR0=1;// 开启计数while(RX4); //当RX4为1计数并等待TR0=0; // 关闭计数time=TH0* 256+TL0;TH0=0;TL0=0;S4=(time*1 、7)/100;//算出来就是CM } void Count5 () / /计算函数{while ( !RX5); // 当 RX 5为零时等待TR 0=1; //开启计数w hil e (RX 5) ; //当 R X5为 1计数并等待TR0=0; / /关闭计数time = TH0* 256+T L 0;TH0=0;TL0=0;S5=(t i me*1 、7)/100; / /算出来就是C Mvo id left run (void ) {push _ val_left=20 ;push_va l _right=20;/ * ** * ** * * * * ******* */ // 右转/* * ** ** * * ********// * * *** * * ***/ oi d p w m _ out_l e f t_moto ( void )if (Left_moto_ s to p) fi ( pwm _ val _ left 〈=pu sh_v a l_l eft )p wm_val_left= 0 ;/ ** * * * * * * * **v oid p w m _ou t_ r i ght_m ot o ( void )** ** ** **** *** ******/ /* 右电机调速*/ Le f t_moto_ ba c k //左电机往后走 Right _mot o_go / /右电机往前走o i d r gh run (voi d)p us h va l le f t=2 0;u sh_val_r i gh t =20;Le ft _moto_go // 左电机往前走 Rig h t_mot o_ ba ck //右电机往后走/ * * ** * *** ** * ** * * * * **** */ / /停止voi d stoprun ( v o id )Left m o to_S t op // 左电机停 R ig ht_m o to_Stop // 右电机停PWM 调制 电机转/* 左电机调速*/ */ 调节 sh_val_lef t得值改变电机转速, 占空比 */Lef t m oto _ p w m=1 ;el s e Le tf _mo t o_ pwm=0;if ( pw m_ val_left 〉 =20)el se L ef t _m ot o_pwm =0;{ if(Right_moto_stop){ if(pwm_va l_right〈=push_val_r ight)Right_moto_ pwm=1;else Right_ moto_pwm=0;f(pwm_val_right〉=20)pwm_val_right=0; }else Rihg t_moto_pw m=0;/******/vo d timer0()inter pt 1 / /T0 中断{/*/ ///*TIMER1 中断服务子函数产生PWM 信号*/void timer1()interrupt 3{ TH1=(65536—1000)/256;//1ms 定时TL1=(65536-1000)%256; timer ++;pwm_val_left++; pwm_val_ri ght ++; pwm_out _left_mot o();pwm_ out_r ight_moto (); }/*** *** ******* *** *** ***** ** ***** ** ****** *** **** ** ******** ***** /void main(void){TM OD=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; //开启总中断whil e(1){TX1=1; //开启超声波1 探测delay_1ms(1);TX1=0;Count1();// 测距TX2=1;delay_1ms(1);TX2=0;Count 2()TX3=1; delay_1ms(1);TX3=0;Count3();TX4=1;delay_1ms(1);TX4=0;Count 4();TX5=1;delay_1ms (1);TX5=0;Count 5();if(S3<20 &&S1<20 && S5<20) / /进入狭窄通道{ backrun(); // 倒车delay_1ms(100);}else if(S3<20 && S1<S5 )//车子与障碍物90 度垂直,左边距离小右转{ rightrun();}elseif(S3<20 &&S5<S1)//车子与障碍物90 度垂直,右边距离小左转 { lef trun(); }else if(S2<20){ rightr un(); //车与障碍物呈45 度角时,车得左边比车得右边距离小,右转 } else if (S4<20){ leftrun();// 车与障碍物呈45 度角时,车得右边比车得左边距离小,左转 } else { run(); } } }。

超声避障小车设计报告

超声避障小车设计报告

综合能力实训项目设计报告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 避障小车设计说明该设计利用单片机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芯片,负责传感器的状态,并向电机驱动模块发出动作指令。

超声波在小车避障技术的应用设计(论文)

超声波在小车避障技术的应用设计(论文)

南京理工大学毕业设计说明书(论文)作者:教学点:南京工业职业技术学院专业: 电子工程题目: 超声波在小车避障技术的应用设计2013 年 5 月毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要目次1 引言 (1)1.1 研究背景与意义 (5)2 超声波的避障技术 (8)2.1 小车的避障技术 (8)2.2 超声波的传播特性 (9)2.3 超声波测距技术 (9)2.4 基于单片机的超声波测距系统 (10)2.5 超声波的衰减 (10)3 超声波避障系统硬件设计 (11)3.1 方案概述 (12)3.2 方案设计 (12)3.3 元器件介绍 (13)3.4 超声波发射系统电路 (20)3.5 超声波接收系统电路 (20)3.6 相关软件、电路模块和器件清单。

(21)4 超声波避障系统的软件设计 (22)4.1 直流电机控制软件设计 (23)4.2 超声波测距模块软件设计 (23)4.3 超声波避障技术软件设计 (24)4.4 软件与硬件的整合软件与硬件的整合 (26)5 超声波避障系统调试 (26)5.1 调试过程 (27)5.2 问题分析 (30)5.3 误差分析 (30)致谢 (33)参考文献 (34)1 引言1.1 研究背景与意义随着机器人技术的发展,自主移动机器人以其活性和智能性等特点,在人们的生产、生活中的应用来越广泛。

自主移动机器人通过各种传感器系统感知外界环境和自身状态, 在复杂的已知或者未知环境中自主移动并完成相应的任务。

而在多种探测手段中, 超声波传感器系统由于具有成本低, 安装方便, 不易受电磁、光线、被测对象颜色、烟雾等影响,时间信息直观等特点, 对于被测物处于黑暗、有灰尘、烟雾、电磁干扰、有毒等恶劣的环境下有一定的适应能力, 因此在移动机器人领域有着广泛用。

本设计主要体现多功能小车的智能避障模式,设计中的理论方案、分析方法及特色与创新点等可以为自动运输机器人、采矿勘探机器人、家用自动清洁机器人等自动半自动机器人的设计与普及有一定的参考意义。

超声波避障智能小车

超声波避障智能小车
超声波避障智能小车
目录
01 一、研究背景
03 三、设计制作
02 二、技术原理 04 四、实验结果
目录
05 五、实验分析
07 参考内容
06 六、结论
随着科技的不断发展,自动驾驶技术成为了人们的热点。而超声波避障智能 小车,作为自动驾驶技术的一种,具有独特的技术优势和应用前景。本次演示将 介绍超声波避障智能小车的研究背景、技术原理、设计制作、实验结果以及未来 改进方向。
一、系统设计
1、硬件设计
智能小车的硬件主要由以下几个部分组成:单片机、红外线传感器、超声波 传感器、电机驱动、电源和车轮。其中,单片机是整个系统的核心,负责处理传 感器数据和控制电机驱动。红外线传感器和超声波传感器用于感知周围环境中的 障碍物,并将数据传输给单片机。电机驱动部分负责根据单片机的指令来控制小 车的运动。最后,电源为整个系统提供能量,车轮则是小车移动的关键部件。
2、软件设计
智能小车的软件部分同样重要。在单片机上运行的程序需要能够处理传感器 数据、判断是否遇到障碍物、计算路径并控制电机驱动。具体的程序流程包括: 初始化各个模块、读取红外线传感器和超声波传感器的数据、判断是否遇到障碍 物、根据障碍物的位置计算出最佳的避障路径、控制电机驱动等。
二、实验结果与分析
在完成硬件和软件的设计后,我们进行了一系列实验来验证智能小车的性能。 实验结果表明,基于单片机控制的红外线与超声波混合避障智能小车能够在各种 环境下有效地感知障碍物,计算出最佳的避障路径,并成功避开障碍物。
然而,我们也发现了一些问题。例如,红外线传感器的响应速度较慢,可能 会在小车遇到快速移动的障碍物时无法及时反应。此外,超声波传感器的精度受 到环境噪声的影响较大,可能会对避障效果产生一定的影响。针对这些问题,我 们提出了改进方案,包括优化红外线传感器的响应速度和采用更先进的滤波算法 来降低超声波传感器的环境噪声干扰。

避障小车课程设计

避障小车课程设计

避障小车课程设计一、课程目标知识目标: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调试和测试:对小车进行调试和测试,确保其正常工作。

四、应用领域:超声波避障小车在工业自动化、家庭服务、教育培训等领域具有广泛的应用前景。

基于AT89C52的智能避障小车设计

基于AT89C52的智能避障小车设计

基于AT89C52的智能避障小车设计全文共四篇示例,供读者参考第一篇示例:基于AT89C52的智能避障小车设计智能小车是一种基于单片机控制的智能移动设备,能够根据周围环境的变化自主地进行导航和避障。

在现代社会,智能小车已经得到广泛的应用,比如在工业生产中的物流运输、家庭服务机器人等领域。

本文将介绍基于AT89C52的智能避障小车的设计方案,并详细解析各个模块的功能和工作原理。

一、硬件设计1.主控模块主控模块选用AT89C52单片机,其具有较强的计算和控制能力,并且易于编程和驱动外部设备。

AT89C52还具有丰富的外设接口,可以方便地与其他传感器和执行器进行连接。

2.传感器模块智能避障小车需要搭载多种传感器,用于感知周围的环境,并做出相应的反应。

一般包括超声波传感器、红外传感器和摄像头等。

超声波传感器可用于探测障碍物的距离,红外传感器可用于检测地面的黑线以进行自动寻迹,摄像头可用于图像识别和路标识别。

3.执行器模块执行器模块包括直流电机、舵机等,用于驱动小车的轮子和转向,实现前进、后退、左转、右转等动作。

4.电源模块智能避障小车需要稳定可靠的电源供应,一般采用锂电池或者干电池进行供电。

二、软件设计1.传感器数据处理传感器模块采集到的数据需要进行处理和分析,以确定当前环境的状态。

比如利用超声波传感器测量到的距离数据,可以计算出周围障碍物的位置和距离。

2.路径规划根据传感器模块采集到的数据,主控模块需要根据预设的算法来规划小车的行驶路径,避开障碍物并找到最优的行驶路线。

3.运动控制执行器模块需要根据路径规划模块给出的指令来控制小车的运动,包括轮子的速度和方向等。

4.用户界面智能小车设计还需要考虑用户界面的设计,一般通过蓝牙或者Wi-Fi模块,将小车的状态和控制权传输到手机App或者PC端,方便用户进行监控和控制。

三、系统整合在完成硬件和软件模块的设计后,还需要对系统进行整合调试。

首先需要进行硬件电路的连接和焊接,然后对软件进行编译和下载,最后将各个模块进行组合测试,验证整个系统的功能和性能。

基于STM32智能循迹避障小车(设计报告)

基于STM32智能循迹避障小车(设计报告)

基于STM32智能循迹避障小车(设计报告)具有丰富的外设和存储器资源,能够满足本设计的需求。

在硬件方面,采用了红外对管和超声波传感器来检测道路上的轨迹和障碍物,并通过PWM调速来控制电动小车的速度。

在软件方面,采用MDK(keil)软件进行编程,实现对小车的自动循迹和避障,快慢速行驶,以及自动停车等功能。

设计方案本设计方案主要分为硬件设计和软件设计两个部分。

硬件设计部分主要包括电路原理图的设计和PCB的制作。

在电路原理图的设计中,需要将stm32芯片、红外对管、超声波传感器、电机驱动模块等元器件进行连接。

在PCB的制作中,需要将电路原理图转化为PCB布局图,并进行钻孔、贴片等工艺流程,最终得到完整的电路板。

软件设计部分主要包括程序的编写和调试。

在程序的编写中,需要先进行芯片的初始化设置,然后分别编写循迹、避障、速度控制等功能的代码,并将其整合到主函数中。

在调试过程中,需要通过串口调试工具来进行数据的监测和分析,以确保程序的正确性和稳定性。

实验结果经过多次实验测试,本设计方案实现了对电动小车的自动循迹和避障,快慢速行驶,以及自动停车等功能。

在循迹和避障方面,红外对管和超声波传感器的检测精度较高,能够准确地控制小车的运动方向和速度;在速度控制方面,PWM调速的方式能够实现小车的快慢速行驶,且速度控制精度较高;在自动停车方面,通过超声波传感器检测到障碍物后,能够自动停车,确保了小车的安全性。

结论本设计方案采用stm32为控制核心,利用红外对管和超声波传感器实现对电动小车的自动循迹和避障,快慢速行驶,以及自动停车等功能。

在硬件方面,电路结构简单,可靠性能高;在软件方面,采用MDK(keil)软件进行编程,实现了程序的稳定性和正确性。

实验测试结果表明,本设计方案能够满足题目的要求,具有一定的实用性和推广价值。

内核采用ARM32位Cortex-M3 CPU,最高工作频率为72MHz,1.25DMIPS/MHz,具有单周期乘法和硬件除法功能。

超声波避障小车程序设计

超声波避障小车程序设计

超声波避障小车程序设计/**************************************** ***************************************** **************************///5路超声波避障实验:51单片机+ HC-SR04超声波///**************************************** ***************************************** **************************/#include <AT89x52.H> //器件配置文件#include <intrins.h> #defineRX1 P3_6//小车左侧超声波HC-SR04接收端#define TX1 P1_7 //发送端#define RX2 P3_3//左前方超声波#define TX2 P0_2#define RX3 P2_4 //正前方超声波#define TX3 P2_5#define RX4 P3_5 //右前void Count2() //计算函数{ while(!RX2); //当RX2为零时等待TR0=1; //开启计数while(RX2); //当RX2为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S2=(time*1.7)/100; //算出来是CM }void Count3() //计算函数{ while(!RX3); //当RX3为零时等待TR0=1; //开启计数while(RX3); //当RX3为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S3=(time*1.7)/100; //算出来是CM }void Count4() //计算函数{ while(!RX4); //当RX4为零时等待TR0=1; //开启计数while(RX4); //当RX4为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S4=(time*1.7)/100; //算出来是CM }void Count5() //计算函数{while(!RX5); //当RX5为零时等待TR0=1; //开启计数while(RX5); //当RX5为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S5=(time*1.7)/100; //算出来是CMvoid leftrun(void) {push_val_left=20;push_val_right=20;Left_moto_back //左电机往后走Right_moto_go //右电机往前走}/************************************** **********************************/ //右转void rightrun(void){push_val_left=20;push_val_right=20;Left_moto_go //左电机往前走Right_moto_back //右电机往后走}/************************************** **********************************/ //停止void stoprun(void){Left_moto_Stop //左电机停Right_moto_Stop //右电机停}/************************************** **********************************/ /*PWM 调制电机转速*/ /**** ***************************************** ***************************//*左电机调速*/ /*调节push_val_left的值改变电机转速,占空比*/void pwm_out_left_moto(void){if(Left_moto_stop){ if(pwm_va l_left<=push_val_left){ Left_mo to_pwm=1; }else {Left_moto_pwm=0;}if(pwm_val_left>=20)pwm_val_left=0;}else {Left_moto_pwm =0; } } /******************************************************************/ /*右电机调速*/void pwm_out_right_moto(void) { if(Right_moto_stop){ if(pwm_val_right<=pu sh_val_right){ Right_moto_pwm =1;}else {Right_moto_pwm=0; } if(pwm_val_right>=20)pwm_val_right=0; }else{ Right_moto_p wm=0; } }/************************************** ******************/void timer0() interrupt 1 / /T0中断{ }/************************************** *************/ ///*TIMER1中断服务子函数产生PWM信号*/void timer1()interrupt 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 main(void){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; //开启总中断while(1) {TX1=1; //开启超声波1探测delay_1ms(1);TX1=0;Count1(); //测距TX2=1;delay_1ms(1);TX2=0;Count2();TX3=1;delay_1ms(1);TX3=0;Count3();TX4=1;delay_1ms(1);TX4=0;Count4();TX5=1;delay_1ms(1);TX5=0;Count5();if(S3<20 && S1<20 && S5<20) //进入狭窄通道{ backrun(); //倒车delay_1ms(100);}else if(S3<20 && S1<S5 ) //车子与障碍物90度垂直,左边距离小右转{ rightrun(); }else if(S3<20 && S5<S1 ) //车子与障碍物90度垂直,右边距离小左转{ leftrun(); }else if(S2<20){ rightrun(); //车与障碍物呈45度角时,车的左边比车的右边距离小,右转}else if(S4<20){ leftrun(); //车与障碍物呈45度角时,车的右边比车的左边距离小,左转}else { run();} } }。

毕业设计智能超声波避障小车

毕业设计智能超声波避障小车

编号:毕业设计(论文)说明书题目:智能超声波避障小车系别:电子工程系专业:电子信息工程题目类型:☐理论研究☐实验研究☑工程设计☐工程技术研究☐软件开发☐应用研究随着现今社会智能化愈来愈高,智能性交通工具的改善是必不可确少的,由于交通工具的普及,由于驾驶员的长时刻驾驶引发精神注意力不集中而发生许多严峻的交通事故触目皆是,因此智能车的诞生是必然的,它致力于提高汽车的平安性、适应性、舒适性、和提升良好的人车交互界面。

自主智能寻迹避障小车是通过单片机、传感器、信号处置器、电机驱动和自动操纵等技术来实现环境感知和自动行驶相结合的高新技术综合体,随着不断提高企业生产技术和不断加深对自动化技术的要求,智能车已普遍的应用于许多工业部门。

能够说它已日趋深切到社会和工业的方方面面,例如:智能车在物流运输方面的应用;智能车在军事领域的应用;智能车在社会生活中的应用;智能车在智能运输系统上的应用等等。

这些应用能够使社会上正在面临各类各样的问题得以有效解决,关于城市公共交通效劳质量的提高,减缓各地交通拥堵,减轻交通治理,道路建设压力起到踊跃的推动作用。

在我国高科技水平的日趋提高的同时,工业自动化进程也在不断地推动,智能小车能够通过自动采取一些躲避障碍物的方法,有效幸免交通事故的发生,同时也被普遍应用于各类玩具和其他产品的设计中,极大地丰硕了人们的生活。

本次设计主若是利用ATmega16单片机,超声波传感器、红外线传感器和L298N完成避障小车的制作。

以ATmega16为主控芯片,利用超声波传感器对距离的检测,将前方障碍探测出,而且通过超声波的传回数据和红外线传感器对小车双侧的障碍物位置的确信,进行判定,1602液晶显示所测距离,然后由ATmega16单片机发出指令,操纵电机转动,电机驱动采纳经常使用的PWM方式进行电机的调速操纵。

关键词:智能小车;单片机;超声波;避障As intelligent in today's society more and more high, the improvement of the intelligent transportation is will not do less, due to the popularity of traffic tools, because the driver from driving for a long time of the spirit of inattention and many serious traffic accidents, so the birth of smart cars is inevitable, it aims to improve vehicle safety, adaptability, comfort, and promote good interactive interface, autonomous intelligent tracing car obstacle avoidance is by single-chip computer, sensor, signal processors, motor drive and automatic control technology to realize environmental awareness and the combination of autonomous driving technology, along with the continuously improve enterprise production technology as well as the growing demand for automation technology, intelligent vehicle has been widely used in many industrial sectors. It has increasingly deep into the social and industrial aspects, such as: intelligent car applications in logistics; Smart car in the field of military application; Smart car in the application of social life.High-tech level rising in our country at the same time, industrial process automation is in constant propulsion, smart car can automatically take some measures to avoid obstacles, effectively avoid the happening of traffic accident, but also are widely used in the design of all kinds of toys and other products, greatly enriched people's life.This design mainly use ATmega16 single chip microcomputer, ultrasonic sensors, infrared sensors and L298N complete obstacle avoidance car production. ATmega16 as main control chip, using ultrasonic sensors to the detection of the distance, will be in front of the obstacle detection, and returned by ultrasonic and infrared sensors data for determining obstacles on either side of the car position, judge, 1602 liquid crystal display measured distance, and instructions issued by the ATmega16 single chip microcomputer to control motor rotation, the motor driver uses the commonly used PWM motor speed control in the form of control.Key words :intelligent car; Single chip microcomputer; Ultrasound; Obstacle avoidance目录引言 (1)1 系统设计 (1)1.1 任务要求 (1)整体设计 (1)2 方案论证 (2)系统操纵模块设计方案论证 (2)电机的选择方案论证 (3)避障模块设计方案论证 (4)显示模块设计方案论证 (5)直流调速方案设计 (5)电源模块设计方案论证 (5)3 元器件介绍 (6)AVR单片机主控芯片介绍 (6)3.2 L298N驱动芯片 (6) (6)驱动芯片特点 (6)3.3 直流电机 (6)3.4 超声波传感器 (7)超声波传感器概述 (7)接口说明 (8)超声波测距原理 (8)3.5 光电传感器 (8)3.6 LCD1602液晶显示 (9)液晶显示LCD实物图 (9)液晶显示原理 (9)管脚功能 (9)4 系统单元电路的设计 (10)4.1 超声波收发电路 (10)4.2 红外线收发电路 (10)4.3 单片机主控电路 (10)4.4 电源电路 (11)LCD1602显示电路 (12)4.6 电机驱动电路 (13)直流电机H 桥驱动方案的选择 (14)调速原理 (14)4.7 光警示电路 (16)4.8 单片机复位电路 (16)4.9 单片机时钟震荡电路 (17)5 软件设计 (18)主程序 (19)避障子程序 (19)电机驱动子程序 (20)显示子程序 (21)5.5 测量距离子程序 (23)5.6 光警示子程序 (24)6 调试与仿真 (24)6.1 调试仿真工具Proteus介绍 (24)6.2 硬件的制作与调试 (26)6.3 电路与程序调试进程 (28)电路的仿真调试 (28)电路的调试 (28)7 结论 (30)谢辞 ............................................................................................ 错误!未定义书签。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/****************************************************************************** *****************************///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_2#define RX3 P2_4 //正前方超声波#define TX3 P2_5#define RX4 P3_5 //右前方超声波#define TX4 P3_4#define RX5 P3_7 //右侧超声波#define TX5 P1_6#define 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_1ms(unsigned char x) //1ms延时函数,100ms以内可用 { unsigned char i; while(x--) for(i=124;i>0;i--); }/********************************************************/void Count1() //计算左侧超声波距离的函数{ while(!RX1); //当RX1为零时等待TR0=1; //开启计数while(RX1); //当RX1为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S1=(time*1.7)/100; //算出来是CM }void Count2() //计算函数{ while(!RX2); //当RX2为零时等待TR0=1; //开启计数while(RX2); //当RX2为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S2=(time*1.7)/100; //算出来是CM }void Count3() //计算函数{ while(!RX3); //当RX3为零时等待TR0=1; //开启计数while(RX3); //当RX3为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S3=(time*1.7)/100; //算出来是CM }void Count4() //计算函数{ while(!RX4); //当RX4为零时等待TR0=1; //开启计数while(RX4); //当RX4为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S4=(time*1.7)/100; //算出来是CM }void Count5() //计算函数{while(!RX5); //当RX5为零时等待TR0=1; //开启计数while(RX5); //当RX5为1计数并等待TR0=0; //关闭计数time=TH0*256+TL0;TH0=0;TL0=0;S5=(time*1.7)/100; //算出来是CMvoid leftrun(void) {push_val_left=20;push_val_right=20;Left_moto_back //左电机往后走 Right_moto_go //右电机往前走 }/************************************************************************/ //右转void rightrun(void){push_val_left=20;push_val_right=20;Left_moto_go //左电机往前走 Right_moto_back //右电机往后走 }/************************************************************************/ //停止void stoprun(void){Left_moto_Stop //左电机停 Right_moto_Stop //右电机停 }/************************************************************************/ /* PWM调制电机转速 */ /********************************************************** **************//* 左电机调速 */ /*调节push_val_left的值改变电机转速,占空比 */void pwm_out_left_moto(void){if(Left_moto_stop){ if(pwm_val_left<=push_val_left){ Left_moto_pwm=1; }else { Left_moto_pwm=0; }if(pwm_val_left>=20)pwm_val_left=0;}else { Left_moto_pwm=0; } }/******************************************************************/ /* 右电机调速 */void pwm_out_right_moto(void){ if(Right_moto_stop){ if(pwm_val_right<=push_val_right){ Right_moto_pwm=1;}else { Right_moto_pwm=0; }if(pwm_val_right>=20) pwm_val_right=0; }else { Right_moto_pwm=0; } }/********************************************************/void timer0() interrupt 1 //T0中断 { }/***************************************************/ ///*TIMER1中断服务子函数产生PWM信号*/void timer1()interrupt 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 main(void){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; //开启总中断while(1) {TX1=1; //开启超声波1探测delay_1ms(1);TX1=0;Count1(); //测距TX2=1;delay_1ms(1);TX2=0;Count2();TX3=1;delay_1ms(1);TX3=0;Count3();TX4=1;delay_1ms(1);TX4=0;Count4();TX5=1;delay_1ms(1);TX5=0;Count5();if(S3<20 && S1<20 && S5<20) //进入狭窄通道{ backrun(); //倒车delay_1ms(100);}else if(S3<20 && S1<S5 ) //车子与障碍物90度垂直,左边距离小右转{ rightrun(); }else if(S3<20 && S5<S1 ) //车子与障碍物90度垂直,右边距离小左转 { leftrun(); } else if(S2<20){ rightrun(); //车与障碍物呈45度角时,车的左边比车的右边距离小,右转 } else if(S4<20){ leftrun(); //车与障碍物呈45度角时,车的右边比车的左边距离小,左转 }else { run(); } } }。

相关文档
最新文档