欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PDF文档下载  

    基于单片机控制的智能小车设计与制作.pdf

    • 资源ID:3581071       资源大小:6.57MB        全文页数:44页
    • 资源格式: PDF        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机控制的智能小车设计与制作.pdf

    目录 中文摘要1 英文摘要2 1引 言3 2方案论证4 2.1 控制核心的选择及其简介 4 2.1.1 SPCE061A 单片机简介4 2.2.2 61 板简介.5 2.2.3 集成开发环境(IDE)简介.6 2.2 小车驱动方式的选择.6 2.3 语音播放和语音识别模块 6 2.4 光电检测模块.7 2.5 障碍检测模块.8 3系统硬件设计9 3.1 车体结构及其驱动电路.9 3.2 循线模块. 12 3.2.1 循线硬件电路设计 12 3.2.2 循线传感器的安装 14 3.3 避障模块. 16 3.3.1 避障硬件电路设计 17 3.3.2 避障硬件电路的制作与安装23 3.4 硬件完成后的小车总体图24 4系统软件设计. 26 4.1 主程序设计.26 4.2 循线模块程序设计.27 4.3 障碍检测模块程序设计 28 4.4 语音播放程序设计.30 5使用说明32 结论 34 谢辞 35 参考文献36 附录 1.37 附录 2.39 附录 3.40 附录 4.42 附录 5.43 1 基于单片机控制的智能小车设计与制作 摘要: : : :课题的主要任务是设计并制作一辆智能小车,要求实现小车的语音控制、 循线行走、避免撞到障碍物三大功能。设计以凌阳 16 位单片机为控制核 心,应用光电传感器和超声波传感器,成功实现了小车的三大功能。课题 完成了光电传感器和超声波传感器的选择、采购、各传感器的接口电路设 计和制作,以及各传感器和电路的安装位置和方式的安排,并完成了整个 硬件的制作工作。此外,对整个控制软件进行设计和程序的编制以及程序 的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 关键词:智能小车,光电传感器,超声波传感器,单片机 2 Abstract:This subject isto design and manufacture an intelligent car, whose three functions are carsvoice control, following the line to run, avoiding hitting the obstacles. This design takes the Ling Yang 16 monolithic integrated circuits as the control core, and with applying the photoelectric sensor and the ultrasonic sensor, the car's three functions have realized. The designer has completed the choice and purchase of the photoelectric sensor and ultrasonic sensor, the design and manufacturing of various sensors' interface circuit, the installment position and arrangement preparation of the sensors and circuit, as well as the entire hardware's manufacturing work. At the same time, the control software's design and the programsestablishment and debugging are finished. Finally completes the software and hardware's fusion, which realizes the car's anticipated function. Keywords:intelligent car,photoelectric sensor,ultrasonic sensor,SCM 3 1引 言 当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息 已经不再明显分家,自动控制在工业领域中的地位已经越来越重要, “智能”这个词 也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平, 特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而 且具有一定的学习能力,还据说其智商已达到 6 岁儿童的水平。 作为机械行业的代表产品汽车,其与电子信息产业的融合速度也显著提高, 呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐 步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也 很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开 始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具 有交通、娱乐、办公和通讯等多种功能。 无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来, 主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器 人大赛(ABU ROBCON) 、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都 能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现 实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以 作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车 的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项 目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“基于单 片机控制的智能小车设计与制作”一题作为尝试。 此项设计是在以张老师提供的小车为基础上,采用凌阳 16 位单片机作为控制核 心,逐步实现语音识别、躲避障碍和循迹行走三大功能。 本次设计主要解决利用凌阳单片机强大的语音识别功能实现语音识别,并独立 设计和制作避障用超声波接口电路和循迹用红外发射和接收电路。最后完成硬件实 物制作与组装,并编制相关程序,使其实现功能的融合,做出具有预先要求功能的 实物。 4 2方案论证 小车总体功能描述:在小车的底盘上有一个总开关,当开关闭合时,小车开始 工作,播放语音提示“请选择模式” ,进入模式选择菜单,这时可以呼叫其名字,小 车则做出相应的应答,还可以语音选择模式,即语音和循线两种模式,确定工作模 式后开始工作。在语音模式下,可以识别前进,后退,左转,右转和返回五个命令, 而且在小车前进、左转或右转的过程中,将调用避障函数进行避障,所以一旦离障 碍物的距离小于安全距离时, (设的安全距离为 23CM) ,小车反转急停车,播放语音 提示遇到障碍;或者本来就离障碍物小于安全距离时,命令小车前进、左拐、右拐, 小车将不会执行相应动作,且直接语音提示遇到障碍。当小车接到返回命令时,则 返回至模式选择菜单,并语音提示返回成功;在循线模式下,把小车放到线轨上时 则执行循线动作,值得注意的是如果小车不在循线轨道上时,小车是不会执行循线 动作的,只有在放到线轨上才会执行动作,当按下控制板上的 KEY2 键则退出循线模 式。至于左后退和右后退两个不常用的命令则由于语音识别函数局限的原因,放到 了模式菜单那一级。 下面根据设计要求,针对各模块需要完成的功能,本着简单、实用、廉价、容 易操作、稳定的原则,对各模块进行充分的理论分析和方案论证。 2.1 控制核心的选择及其简介 因为所设计的小车具有语音、循迹和避障的功能,所一对控制核心的要求还是 比较高的,特别是语音模块,一般的单片机很难满足要求,比如常用的 51 系列单片 机,要其真正实现语音识别很有难度,所以根据实际需要选用具有强大语音功能的 SPCE061A 单片机。SPCE061A 单片机的编程环境也比较人性化,采用专用的集成开发 环境(IDE)进行程序的编辑,而且其不仅支持汇编,还支持比较高级的 C 语言。 还有一个特点是这种单片为凌阳公司所提供,有现成做好的 61 板,也就是说有 供电电路等辅助电路, 还特别具有音频电路 (含 MIC 输入部分和 DAC 音频输出部分)、 复位电路等。 2.1.1 SPCE061A 单片机简介 5 SPCE061A 是继nSPTM 系列产品 SPCE500A 等之后,凌阳科技推出的又一个 16 位结构的微控制器。 SPCE061A 里内嵌了 32k 字的闪存 FLASH。 较高的处理速度,使 nSPTM 能够非常容易地快速处理复杂的数字信号,以nSPTM 为核心的 SPCE061A 微 控制器,也适用在数字语音识别应用领域。 SPCE061A 在 2。 63。 6V 工作电压范围内, 工作速度范围为 0。3249115MHz,较高的工作速度使其应用领域进一步拓宽。2k 字 SRAM和 32k字闪存 FLASH 仅占一页存储空间,32位可编程的多功能 I/O 端口:两个 16 位定时器/计数器,32768Hz 实时时钟,低电压复位/监测功能,8 通道 10 位模数转换 输入功能,并具有内置自动增益控制功能的麦克风输入方式,双通道 10 位 DAC 方式的 音频输出功能。SPCE061A 是数字声音和语音识别产品的一种非常经济的应用。 2.2.2 61 板简介 61 板是 SPCE061A EMU BOARD 的简称,是以凌阳 16 位单片机 SPCE061A 为核心的 精简开发仿真实验板(如图 2.1),大小相当于一张扑克牌,是“凌阳科技大学 计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作 及电子竞赛所设计的,也可作为单片机项目初期研发使用。61 板除了具备单片机最 小系统电路外,还包括有电源电路、音频电路(含 MIC 输入部分和 DAC 音频输出部 分)、复位电路等,采用电池供电,方便学生随身携带!使学生在掌握软件的同时, 熟悉单片机硬件的设计制作,锻炼学生的动手能力,也为单片机学习者和开发者创 造了一个良好的学习条件和开发新产品的机会! 图 2.161 板实物图 6 2.2.3 集成开发环境(IDE)简介 61 板配有凌阳自行研发设计的 16 位单片机开发环境 IDE。此工具在 Windows 环 境下操作,支持标准 C 语言和汇编语言,集编译、编程、链接、调试和仿真于一体, 应用方便简单易学。同时还提供大量的编程函数库,特别是语音播放和语音识别的 相关函数,大大加快了软件开发的进程。 集成开发环境 IDE 具有友好的交互界面、下拉菜单、快捷键和快速访问命令列 表等,使编程、调试工作方便且高效。此外,它的软件仿真功能可以在不连接仿真 板的情况下模拟硬件的各项功能来调试程序。 在集成开发环境 IDE 中,可以非常方便将编写好的程序,通过 61 板配套的下载 线下载到 61 板上进行在线调试。 2.2 小车驱动方式的选择 玩具小车上的两个电机均为一般的玩具直流电动机,前轮用一个电机控制方向, 后轮的电机用来驱动小车,这就是传统的控制小车方向的方式,缺点是转向过于灵 敏;另外一种常见驱动方式为两电机四驱,差速转向,其优点是转向性能好,能实 现原地 360°转向,且在循迹行走的时候能比较稳定的行驶,但是这种驱动方式的硬 件制作比较有难度;还有一种驱动方案是采用三轮方案,即前面或后面安装一个万 向轮,然后两电机分别控制两驱动轮,这种驱动方式具有两电机四驱的优点,而且 硬件制作简单多了。 比较上面三种方案,首先排除了第三种方案,因为一开始的定位是要做四轮车。 对于第二种驱动方式虽然有制作的经验,但是制作过于麻烦,而且由于小车采用单 片机控制,可以通过单片机自动校正来克服第一种转向过于灵敏的缺点,能达到运 行平稳、安全高效的要求;再者,参照合肥工业大学参加“飞思卡尔”比赛的视频, 其驱动就是采用第一种方式,并很好的实现了预期的功能。所以,本设计亦采用此 种驱动方式。 2.3 语音播放和语音识别模块 语音模块需要实现语音播放和语音识别的功能,在 2.1 章节已经对控制核心作 了选择,利用 61 板就能很好的实现这些功能。 7 前面已经对 61 板进行了简单了介绍,61 板上面已经集成了音频电路 (含 MIC 输 入部分和 DAC 音频输出部分) ,所以不必要对硬件电路进行单独设计了。再者,在软 件方面,凌阳提供了多种格式的语音播放函数和功能强大的语音识别函数库,极大 的方便了语音模块的程序编制。 2.4 光电检测模块 光电检测是用于循迹功能的,这里的循迹是指小车能在白色地板上循黑线行走, 通常采取的方法便是红外探测法。 红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点, 在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫 反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上 的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线 的位置和小车的行走路线。红外探测器探测距离有限,一般最大不应超过 3cm。 传感器的选用是个艰难的过程,放弃使用前几届师兄所采用的那种一般的红外 发射接收对管,因为那种管子太大,不适合安装,而且发射和接收为独立的部分, 之间没有遮挡, 容易造成干扰。 根据日 常经验, 麻将机中有一种很好的红外发 射接收光耦管可以用于循线, 经查找相 关资料,查到如下几种型号的传感: FS-359FRG149ARPR220TCRT5000。 然 后, 逐一查找到了这几种传感器的技术 资料,经过仔细分析和对比其性能, 结 合 购买 可 能 性, 最 后确 定 了 选用 TCRT5000 型号的传感器,其形状如图 2.2 所示。 图 2.2TCRT5000 实物图 8 2.5 障碍检测模块 智能小车既然智能,至少要求其在行走的过程中不能碰到障碍物,所以其必须 具有避障的功能。避障的基本原理为小车不断发射某种东西(比如光或波) ,并不断 检测这种东西的反射情况来判断前面有无障碍。 一般障碍检测传感器的选择有两种: A利用光电开关。这种方法简单实用,也很稳定,而且接口电路简单,甚至不 用单独设计接口电路。但是其体积较大,而且检测距离不够远,对障碍的要求也比 较高,比如遇到玻璃之类的透明物体就不能有效识别了。 B利用超声波。这种方法较为复杂,特别是接口电路的设计,有一定的难度, 但其具有体积小、灵敏度高、检测距离远、对障碍物要求不高等优点。 光电开关避障比较简单,就是在一定距离内有反射就认为遇到障碍,可以适当 调节接收灵敏度来小幅度调节避障距离,这种方式不需要单片机参与计算,所以可 以为单片机节省资源;而超声波的避障原理则相对复杂一些:超声波发射器向某一 方向发射波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物 就立即返回来, 超声波接收器收到发射 波就立即停止计时。 超声波在空气中的 传播速度为 340m/s,根据计时器记录 时间 t, 就可以计算出发射点距离障碍 物的距离(s) ,即:s=340t/2。当计算 的距离小于程序中设定的障碍安全距 离时, 则认为遇到障碍。 所以这个距离 可以方便的在程序中调节, 但是这种避 障方式需要单片机参与计算, 占用了资 源。 综合对比两种方案的优略,最终采用超声波避障,从网络上查得一种比较合适 的超声波传感器,型号为 TCT40-16T/R1,其实物图如图 2.3 所示。其实首先进行试 验的时候采用的超声波型号为 TCT40-12T/R1,也许灵敏度不够或是已经坏了,在后 来在成熟的电路上试验并没成功。 图 2.3TCT40-16T/R1 9 3系统硬件设计 在第 2 章方案论证的基础上,根据设计要求,对各模块的硬件进行系统设计。 由于语音播放和语音识别模块在 61 板上已经有现成的电路,所以在本章节中将不再 作说明。 3.1 车体结构及其驱动电路 车体驱动方式已经在前一章确定下来,硬件部分则在张老师提供的小车基础上 进行,小车的实物图如图 3.1 所示,控制板下的电路板为电机驱动电路板。 图 3.1小车实物图 该小车为四轮结构,车的结构示意图如图 3.2 所示。其中前面两个车轮由前轮 电机控制,在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向。在自 然状态下,前轮在弹簧作用下保持中间位置。后面两个车轮由后轮电机驱动,为整 个小车提供动力, 所以又称前面的轮子为方向轮, 后面的两个轮子为驱动轮, 如图 3.3 所示。 10 图 3.2车体侧视图 图 3.3车体顶视图 电机驱动电路部分虽然在小车上已经有了,但是还需要把小车拆开来对电路进 行详细的分析,经分析,前后电机的驱动电路是一样的,采用的都是全桥驱动电路, 其后轮驱动电路如图 3.4 所示,前轮的驱动电路和后轮驱动电路是一样的,只是控 制接口是 IOB10 和 IOB11。 现以后轮驱动电路为例,对其进行详细介绍。Q1、Q2、Q3、Q4 四个三极管组成 11 四个桥臂,Q1 和 Q4 组成一组,Q2 和 Q3 组成一组,Q5 控制 Q2、Q3 的导通与关断, Q6 控制 Q1 和 Q4 的导通与关断,而 Q5、Q6 由 IOB9 和 IOB8 控制(前轮驱动电路为 IOB10 和 IOB11) ,这样就可以通过 IOB8 和 IOB9 控制四个桥臂的导通与关断控制后 轮电机的运行状态,使之正转反转或者停转,进而控制小车的前进和后退(左拐和 右拐) 。 图 3.4后轮电机驱动电路 还是以后轮驱动电机为例,当 IOB8 为高电平、IOB9 为低电平时 Q1 和 Q4 导通, Q2 和 Q3 截止,后轮电机正转,小车前进;反之当 IOB8 为低电平、IOB9 为高电平时 Q1 和 Q4 截止,Q2 和 Q3 导通,后轮电机反转,小车倒退;而当 IOB8、IOB9 同为低 电平时 Q1、 Q2、 Q3 和 Q4 都截止, 后轮电机停转, 小车停止运动。 值得注意的是 IOB10、 IOB11 不能同时为高电平,否则会造成前轮驱动全桥的桥臂短路。 至于转向电机,其电路和驱动电机的电路是一样的,只是其控制端口为 IOB10、 IOB11,且在 IOB10 和 IOB11 都为低电平时,前轮在弹簧的作用下保持在中间位置, 所以通过控制 IOB8、IOB9 以及 IOB10、IOB11 端口的状态组合就可以得到小车不同 的运动方式。 注:IOB10、IOB11 或 IOB8、IOB9 不能同时为高电平,这样会造成前轮或后轮驱 动全桥的桥臂短路。 结合以上对前轮和后轮的状态分析,得到小车的运行状态与输入的对照表,如 表 3.1 所示: 12 表 3.1输入与小车运动状态对照表 IOB11IOB10IOB9IOB8后电机前电机小车 0000停转停转停 0001正转停转前进 0010反转停转倒退 0101正转正转左前进 1001正转反转右前进 0110反转正转右后退 1010反转反转左后退 *11停转*禁止 11*停转 3.2 循线模块 在第2章已确定了采用红外探测法来实现循线的功能, 也选用了型号为TCRT5000 的红外反射式光藕,在此章节中将对其接口电路和安装方式进行详细设计。 3.2.1 循线硬件电路设计 通过互联网的资料查询,得知 TCRT5000 是一种自带发光二极管和光敏二极管的 器件,并查得其集电极电流如与反射距离 d 之间有图 3.5 所示关系。 图 3.5TCRT5000 的 Icd 关系 13 当反射距离一定时,其集电极电流就主要和反射率有关了,反射率越大,则集 电极电流越大;反之则越小。利用其这个特点就很容易把黑线和白线区分开来了。 A.红外线的发射电路很简单,即给发光二极管串联一个电阻供电就可以实现; B.接收电路也相对容易,根据集电极电流与反射率的关系,利用一个三极管就 可以实现红外线的接收。实际中需要用到两个 TCRT5000 传感器,所以相应的有两套 电路,但两套电路完全一样,设计出的 TCRT5000 接口电路如图 3.6 所示。 R10 100 R9 4.7K R8 300 C7 104 TRIG 2 OUT 3 RST 4 CVOLT 5 THR 6 DISC 7 VCC 8 GND 1 U4 NE555N VCC T1 9013 1 TCRT 5000 图 3.6TCRT5000 接口电路 TCRT5000 的接口电路主要原理:根据检测到黑白地面的反射率不同进行区分识 别,当检测到黑色地面时,由于反射率不高,IC1 太小,三极管 T1 截止而输出高电 平;当检测到白色地面时,由于反射率较高,IC1 较大,三极管 T1 饱和而输出低电 平,从而实现了白线的检测。然后利用 555 构成施密特触发器,用于去除反射性光 耦产生的噪声和波形的整形。 在实际中可以调整 R9 的大小来调整 TCRT5000 的灵敏度,所以 R9 可以设计成可 调电阻,这样可以方便的调整其灵敏度。但遗憾的是在最后焊接电路板的时候,由 于缺少可调电阻,就没有做成灵敏度可调的了,而是通过很多次试验确定了一个比 较适中且合适的阻值 4.7K 的电阻代替了。 理论上 555 的使用不是非常的必要,但是其在实际中能使得输出的信号更加的 稳定可靠,滤去了没用的噪声信号,所以还是比较重要的。 14 3.2.2 循线传感器的安装 循线原理:一般情况下线轨是白色或是黑色的,而背景地面的颜色则一般为对 比度很大的黑色或白色。需说明一下的是我设计的小车是基于白色地面和黑色线轨 的。小车在循线的时候,两个传感器夹着黑线行走,小车方向正常时其信号均为高 电平(有反射) ,当小车偏离轨道时,一侧的传感器信号将发生改变,控制核心则立 即发出执行相应的修正动作的命令,将小车重新拉入轨道,这样不断检测,不断的 修正,小车便能实现巡线行走了。 根据小车循线的基本原理,传感器理所当然的是要安装在小车底部了,而且是 安装在对转向最为敏感的部位,也就是小车转向的时候小车摆动幅度较大的地方最 佳。这样便能加快小车的反应速度,从而使得循线动作更为稳定。因为小车为前轮 转向,所以两个传感器安装的最佳位置就是小车底部的前面了。其实本来可以把它 们和转向连杆固定在一块,因为这样可以使得传感器对于转向更为敏感而增强小车 的循线能力,但是由于车体结构的限制,这样安装很有难度,在这里也不必要有这 样高的灵敏度,从而放弃了此方法。TCRT5000 的相对安装位置示意图如图 3.7 所示: 小车控制板 超声波传器 TCRT5000白色地面黑线 前轮 图 3.7TCRT5000 的相对安装位置示意图 很多循线小车设计都不止用两个传感器,一般为四个或更多,安装形式为中心 对称分布,主要是用来防止由于小车惯性太大而冲出第一对传感器的检测范围。这 种方法对于速度比较快的小车确实很实用,但是我所设计的小车对车速要求不高, 所以就只用了两个传感器。 下面谈一下传感器的具体安装,因为小车车体已经固定,所以传感器的安装比 15 较被动。前面已经对传感器的安装位置进行了分析,现在先看一下小车前轮底部的 实物图,如图 3.8。 图 3.8小车前轮底部实物图 不难发现,底部有两个孔,所以可以利用这两个孔来安装和固定传感器了。具 体方案是先把传感器焊接在 PCB 板上, 信号线由排线引出(处理电路和超声波 电路焊在一块板上,并安装在车上部 分,具体请查看 3.3 避障模块) ,再把 焊有传感器的 PCB板通过那两个小孔用 螺丝固定在上面。由于空间和中间有个 调整前轮转向平衡杆的原因,PCB 板的 形状必须是特殊的形状,经过仔细测量 和用纸板模拟,得出了电路板的具体形 状和尺寸,如图 3.9 所示。 两个安装孔的位置要比较精确,因 图 3.9PCB 板形状 16 为孔本来就比较小,误差大就安装不上去。那个半圆的作用是避开调整前轮转向平 衡杆,使的即使安装了传感器也不能影响它的功能。 然后便是硬件制作,本来是打算制作 PCB 板的,但是由于某些问题,采用通过 板代替了。通过使用小刀、剪刀和小螺丝刀等工具把通用板加工成了预想的形状, 把 TCRT5000 焊接上, 然后经过测试就开始安装了。 但遗憾的是没有找到合适的螺丝, 后来在刘老师的帮助下用塑料给粘上了。这样的缺点是不容易拆卸,而且影响了前 轮转向平衡调整杆的使用,但幸运的是影响不大,而且比螺丝安装结实。安装好的 实物图如图 3.10。 图 3.10循线传感器安装实物图 3.3 避障模块 在第 2 章已经确定了使用超声波避障的方式,并对传感器进行了选择,在此章 节中将对其接口电路和安装方式详细进行设计。 17 3.3.1 避障硬件电路设计 超声波电路的设计是一个曲折过程,花费的时间和精力最多,表 3.2 是我查到 的 TCT40-16T/R1 的产品性能。 表 3.2TCT40-16T/R1 的产品性能 性能要求 标称频率(KHz)40 发射声压 at40KHz(0dB=0.02mPa)min117dB 接收灵敏度 at40KHz (0dB=V/Pa) min65dB 静电容量 at1KHz, 0) switch(uiRes) case NAME_ID: 38 switch(uiBS_Team) case 0: PlaySnd(20, 3); break;/第一组的第一个命令(名字)/播放 yeah case 1: ImportFiveCommand(Group1); uiBS_Team=0; reFlag=1; goto Loop; break; break;/第二组的第一个命令(返回) case Command_One_ID: switch(uiBS_Team) case 0: ImportFiveCommand(Group2); PlaySnd(17, 3); /第一组的第二个命令(语音) uiBS_Team=1; goto Loop; break; case 1:Car_Go(100); break; break;/第二组的第二个命令(前进) case Command_Two_ID: switch(uiBS_Team) case 0: PlaySnd(17, 3); Execute_route();/第一组的第三个命令(寻线)调用循线 ImportFiveCommand(Group1); uiBS_Team = 0; reFlag=1; goto Loop; break; case 1: Car_Back(200);break; break;/第二组的第三个命令(后退) case Command_Three_ID: switch(uiBS_Team) case 0:Car_LeftBack(400); break; /第一组的第四个命令(左后退) case 1: Car_TurnLeft(100);break; break;/第二组的第四个命令(左转) case Command_Four_ID: switch(uiBS_Team) case 0:Car_RightBack(400); break; /第一组的第五个命令(右后退) case 1: Car_TurnRight(100); break; break;/第二组的第五个命令(右转) uiKey = *P_IOA_Data; uiKey = uiKey if(uiKey = 0x0004)/检测 KEY3 键 F_FlashErase(0xfd00);/清标志位 while(1); *P_Watchdog_Clear = 0x0001; 39 附录 2: 循线程序清单: void Execute_route(void) unsigned int n=1;/标志 unsigned int i=1; unsigned int uiKey; BSR_StopRecognizer();/停止识别器 Initial_route(); CarSystemInit(); pp: while(i) *P_TimerA_Ctrl = 0x0000|0x0000|0x0030;/关闭停止 *P_IOB_Data=0x0000; uiKey = *P_IOA_Data;/检测 KEY2 键 uiKey = uiKey if(uiKey = 0x0002) *P_TimerA_Ctrl = 0x0000|0x0000|0x0030;/关闭停止 *P_IOB_Data=0x0000; i=0; n=0; if(*P_IOA_Data *P_TimerA_Ctrl = 0x02c0|0x0000|0x0030;/设置占空比 *P_TimerA_Data = 0xf100;/设置计数初值 while(n) switch(*P_IOA_Databreak;/左端的传感器没有信号时,向右拐 case 0x0020:se_goleft();break;/右端的传感器没有信号时向左拐 case 0x0000:goto pp;break;/都没信号时,停车 case 0x0030:se_goahead();break; uiKey = *P_IOA_Data; uiKey = uiKey if(uiKey = 0x0002) n=0;/检测 KEY2 *P_Watchdog_Clear = 0x0001;/清看门狗 *P_TimerA_Ctrl = 0x0000|0x0000|0x0030;/停车 *P_IOB_Data=0x0000; *P_Watchdog_Clear = 0x0001;/清看门狗 BSR_InitRecognizer(BSR_MIC);/初始化识别器 40 附录 3: 超声波避障程序清单: unsigned int Resoult_ult(unsigned int Counter) unsigned int uiTemp;/实现功能: 超 声 波 避 障 模 块 的 测 距 数 据 处 理 程 序 , unsigned long ulTemp;/将 TimerB 的计数值换算为距离 ulTemp = (unsigned long)Counter*34000; ulTemp = ulTemp/192000;/除以频率 ulTemp = ulTemp1;/除二 uiTemp = (unsigned int)ulTemp; return uiTemp; unsigned int measure_ult(void) /实现功能: 超声波避障模块的检测程序,完成一次检测 unsigned int Exit_flag = 1; unsigned int uiResoult; unsigned int uiSystem_Clock; unsigned int uiTemp; uiSystem_Clock = *P_SystemClock;/将当前的系统时钟设置暂时保存起来 *P_SystemClock = 0x0088;/将系统时钟设置为 49MHz,分频比为 1,强振模式 uiTemp = *P_IOB_Data; uiTemp = uiTemp|0x0014; *P_IOB_Data = uiTemp;/发 40KHz 波 Delay_ult(SEND_TIMER);/发射时间 uiTemp = *P_IOB_Data;/停止发射 uiTemp = uiTemp *P_IOB_Data = uiTemp; *P_TimerB_Data = 0x0000; *P_TimerB_Ctrl = 0x0001;/TimerB 以 192KHz 的频率计数 while(*P_TimerB_Data1000)/如计数值大于 1000,表示超时 Exit_flag = 0;/跳出 *P_TimerB_Ctrl = 0x0006;/ timerB 停止计数 uiResoult = 0; *P_Watchdog_Clear = 0x0001; /清狗 *P_INT_Ctrl = *P_INT_Ctrl_New/关掉外部中断 _asm(“IRQ OFF“); *P_SystemClock = uiSystem_Clock;/恢复系统时钟的设置 return uiResoult; /返回测量结果 void EXT1_IRQ_ult(void) /超声波避障模块程序的 EXT1 中断服务程序,在 EXT1 的 IRQ 中断 Counter_buf = *P_TimerB_Data;/储存 timerB 数值 *P_TimerB_Ctrl = 0x0006;/timerB 停止计数 *P_INT_Ctrl = *P_INT_Ctrl_New/关掉外部中断 *P_INT_Clear = 0xffff;/清除中断发生标志 EXT1_IRQ_flag = 1; /通知测距程序,外部中断已发生 void State_ult(void)/实现功能: 超声波避障测距程序 unsigned int Distance; Initial_ult(); Distance=measure_ult(); if(Distance!=0) elseObstacles_signs=0; *P_Watchdog_Clear = 0x0001; 前进程序清单: void Car_Go(unsigned int n) /实现功能:前进 unsigned int i=0; unsigned int k=0; unsigned int j=1; BSR_StopRecognizer();/停止识别器 for(k;k4;k+) State_ult(); if(Obstacles_signs=1)/先检测是否有障碍 PlaySnd(19,3); i=60000;k=10; j=0; /语音提示:前面有障碍 *P_Watchdog_Clear = 0x0001; while(j) PlaySnd(13,3);j=0; /语音提示:前进 *P_Watchdog_Clear = 0x0001; for(;in;i+) _asm(“IRQoff“);CarSystemInit();State_ult();*P_IOB_Data=0x0104;*P_IOA_Data=0x0000; if(Obstacles_signs=1)Car_Stop(25); PlaySnd(19,3);*P_IOA_Data=0x0f00;i=60000; Delay_fun(600); *P_IOB_Data=0x0004;/停止 BSR_InitRecognizer(BSR_MIC); /初始化识别器 42 附录 4: 语音训练和语音播放程序清单: unsigned int TrainWord(unsigned int WordID,unsigned int SndIndex) /训练一条命令 unsigned int uiRes_Train; PlaySnd(SndIndex, 3); while(1) uiRes_Train = BSR_Train(WordID,BSR_TRAIN_TWICE); if(uiRes_Train = 0) break; switch(uiRes_Train) case -1: PlaySnd(11, 3); return -1;/没有检测出声音 case -2: PlaySnd(18, 3); break;/需要重新训练一遍 case -3: PlaySnd(14, 3); return -1;/环境太吵 case -4: return -1;/数据库满 case -5: PlaySnd(5, 3);ret

    注意事项

    本文(基于单片机控制的智能小车设计与制作.pdf)为本站会员(韩长文)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开