标准版
#第四届立创大赛#基于C52舵机转向机器人

创建时间:5年前

项目主题:自拟主题

1881 1

描述

<p>注:*为必填项。</p> <p>【请在报名阶段填写 ↓】 *  简要介绍作品: <img src="//image.lceda.cn/pullimage/8zsUTnLfI1R8ReFw05bmvTQAiROOPu2C4jmpuF6k.jpeg" alt="IMG_1263.jpg"> <img src="//image.lceda.cn/pullimage/hpOo3JOvsg69XmHSwkQwyIsEUWYF1LkPb9EzUMum.jpeg" alt="IMG_1262.jpg"> 随着社会的发展,人工智能技术和传感器技术的飞速发展,为传统汽车制造业注入了新的活力。无人驾驶汽车指通过车载传感系统得到本车位置,同时感知道路、车辆等周围环境,自动规划行驶路线,自动控制车辆的驱动速度、转向和制动,能主动对障碍物进行避障,最终控制车辆到达目的地的智能汽车。很多互联网科技公司和汽车制造企业都已经意识到未来人工智能技术与汽车驾驶技术结合是在汽车制造方面新的发展方向,因此智能无人驾驶技术的研究提上了日程。 为了紧随社会发展潮流,本参赛团队以无人驾驶汽车为设计灵感,决定设计制造一款基于C52的舵机转向智能机器人。为了提高测量距离的准确性,在超声波传感器中加装温度传感器,增强对距离的调控能力,同时为了增强智能车的避障距离,在采用板载避障处理芯片;软件方面,采用Keil uVision4开发平台,C语言自编程方式。经实验验证智能小车能够实现红外自动寻迹、远距离红外避障、超声波测距、红外遥控等功能。基于C52的舵机转向智能机器人,可以看作是简易无人驾驶汽车的缩小版,对我们研究无人驾驶技术,提高社会认知能力具有积极的意义。</p> <p>【请在竞赛阶段填写 ↓】 <em>  一、作品详情; 该智能机器人设计外形为智能小车,智能车以STC89C52RC单片机为核心,硬件方面搭配LCD1602液晶显示器、红外避障传感器、超声波传感器、直流电机、LG9110电机驱动芯片、蓝牙模块等外设,为了提高测量距离的准确性,在超声波传感器中加装温度传感器,增强对距离的调控能力,同时为了增强智能车的避障距离,在采用板载避障处理芯片;软件方面,采用Keil uVision4开发平台,C语言自编程方式。经实验验证智能小车能够实现红外自动寻迹、远距离红外避障、超声波测距、红外遥控等功能 </em>  二、描述作品所面临的挑战及所解决的问题;</p> <ol> <li>智能小车避障距离的远近直接决定了小车行驶的安全性,在实际应用中具有很重要意义。因此,在小车前方有两路红外反射探头实现智能防撞功能,由于红外反射探头测量范围及距离有限,所以设置超声波测距功能,两者相互配合,板载避障处理芯片,使得识别范围更大、避障距离更远。</li> <li>在超声波测距避障模块中,由于超声波是一种声波,其传播速度与温度有关,不同的环境温度,声波传播速度都会有影响。为了减弱温度对声波速度的影响,我们在超声波模块中加装温度传感器。当检测到回波信号后模块还要进行温度值的测量,然后根据当前温度对结果进行校正,提高了测量结果的准确性。</li> </ol> <p>*  三、描述作品硬件、软件部分涉及到的关键点;</p> <ol> <li>控制器选择:采用STC89C52RC单片机,STC89C52RC是一种低功耗、高性能CMOS8位微控制器,具8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52RC为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52RC具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52RC可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。综上所述,在本系统中使用STC89C52RC单片机作为控制器。</li> <li>电机驱动芯片的选择:L293D是ST公司生产的一种高电压、小电流电机驱动芯片。该芯片采用16角封装。主要特点:工作电压高,最高工作电压可达36V;输出电流大,瞬间峰值可达2A,持续工作电流为1A,内含有两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电机和继电器线圈等感性负载;该芯片可以驱动两台直流电机,并可以实现电机正转和反转,实现此功能只需改变输入端逻辑电平。</li> <li>超声波传感器的选择:超声波传感器采用HC-SR04,由于超声波测距传感器有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,目前的超声波模块精度能到1cm。如测距仪和物位测量仪等都可以通过HC-SR04超声波模块实现,该模块指向性强,能量消耗缓慢,在介质中传播的距离较远。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。</li> <li>红外传感器的选择:红外测距传感器采用GP2Y0A21YK0F。GP2Y0A21YK0F是一种距离测量传感器单元,由PSD(位置灵敏探测器)、IRED(红外发光二极管)和信号处理电路集成组成。由于采用了三角测量法,物体的反射率、环境温度和工作持续时间的变化不易对距离检测产生影响。该装置输出对应于检测距离的电压。因此,该传感器也可以用作接近传感器。</li> </ol> <p>*  四、作品材料清单 <img src="//image.lceda.cn/pullimage/c7gkcnDZQ7Osxoa1bPtuYrfq6Ojhdkucs5zT79u2.png" alt="image.png"> <img src="//image.lceda.cn/pullimage/I7gPCM2NPr1EsLsFZ7mNtQgLnwvyXBrAarfCUOYg.png" alt="image.png"> <img src="//image.lceda.cn/pullimage/I5zgiDxvap9nEqA6zey419ADYvyjiirwLrQLldAP.png" alt="image.png"></p> <p>*  五、作品图片上传;(PCB上须有大赛logo标识并拍照上传,若无视为放弃参赛) <img src="//image.lceda.cn/pullimage/ioEk9arMVuHzJidgPPLDo6DQiMAb5V1FArTh7G4Z.png" alt="image.png"> 图1-C52舵机转向智能机器人总电路图 <img src="//image.lceda.cn/pullimage/QaCeLHeDTGGvL5kOyO2rheLdKlTVZdbe1GZ6EkPP.png" alt="image.png"> 图2-寻光、循迹电路分析图 <img src="//image.lceda.cn/pullimage/EQaXosMMS95ef0mVkkVT6uoHoyo4NbSYJpKvSLr5.png" alt="image.png"> 图3-总电路PCB板 红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,低成本,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。 红外遥控由发送和接收两个部分组成。发送部分由主芯片将待发的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号,红外信号接收端普遍采用价格便宜,性能可靠的一体化红外接收头(如HS0038,它接收红外频率为38KHz,周期为26us)接收红外信号,它同时对信号进行放大、检波、整形,得到TTL电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象。 <img src="//image.lceda.cn/pullimage/H4iQ10MRHr7tWwOX6hVggo7Y5cuLRugSmwcCDs4F.png" alt="image.png"> 图4-系统硬件总体框图 <img src="//image.lceda.cn/pullimage/hIZ4soYNgfIf8pZwwAP4DR8IUqoP5WNPMS8FCQPj.png" alt="image.png"> 图5-一体化红外接收头原理图</p> <p>二进制信号的调制,由遥控器的主芯片来完成,它把编码后的二进制信号调制成频率为38KHz的间断脉冲串,相当于用二进制信号的编码乘以频率为38KHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图2-3所示,发送的数据是101,A是二进制信号的编码波形,B是频率为38KHz(周期为26us)的连续脉冲串,C是经调制后的间断脉冲串(相当于C=A×B),用于红外发射二极管发送的波形。 <img src="//image.lceda.cn/pullimage/KNp1MbGcjjuJX9lWXDiUC88nIodgSTo5k91KWeMu.png" alt="image.png"> 图6-二进制信号的调制 <img src="//image.lceda.cn/pullimage/it2DzMFi60ZEsdvvr8DtH0MLkSaopDeD13R8iqgK.png" alt="image.png"> 图7-HS0038解调出的波形 二进制信号的解码由接收单片机来完成,它把红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。 <img src="//image.lceda.cn/pullimage/gAF81jJbHzTGfXeKhlPu6QvbtcMV7oTCVTATn3gf.png" alt="image.png"> 图8-红外信号的编码格式 一体化红外接收头IR的圆形面为红外接收面,它与SE303红外发射管的有效收发直射距离为35m。3脚接电源,2脚接地,一脚接单片机的P3.3(外部中断0),当有红外信号输入时,1脚解调之后将数据信息传送给单片机引起单片机中断,从而对红外信号进行解码。 智能车采用了直流电机来控制小车的行为,直流电机有两个控制端,通过改变输入电平的不同来改变电机的运转。下图为电机驱动模块的硬件电路图。 <img src="//image.lceda.cn/pullimage/skVe0VJAlYavP3vxU8FeXQPCSI8NYpTHfpjqDnNV.png" alt="image.png"> 图9-电机驱动模块 在图中,单片机通过控制P0.0~P0.3引脚电平的高低来控制直流电机M1、M2的正反转。当P0.0~P0.3输入为1010时,两电机均处于正转状态,此时小车表现为整体前进;当P0.0~P0.3输入为0101时,两电机均处于反转模式,小车整体表现为后退。当P0.0~P0.3输入为1001以及0110时,一电机正转,另一电机反转,从而实现了左右转向功能。因为单片机自身管脚输出的高电平的电压是很微弱的,这种电压直接控制电机会使得电机马力不足,不能够带动整个小车运行,所以在这种情况之下,我们采用LG9110驱动芯片来带动智能车运行。 采用红外发射和接收探头来探测路况信息。红外发射管发射红外信号,经路面反射传回给红外接收管进行判断处理。由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”情况和前方是否存在障碍物。我们采用了红外检测法。图2-9为路况检测模块的硬件设计原理图。 上电之后红外发射管V1、V6、V3导通,向地面以及前方实时发射红外信号,当遇到白色墙或路面时,红外信号经白色路面有较强反射,这时红外接收探头V2、V5、V4刚好接收到红外信号,使得这些探头导通,将低电平送给P3.5、P3.6、P3.7让单片机进行判断处理。路面检测模块分为小车寻黑线的检测和前方是否有障碍物的检测两部分。 <img src="//image.lceda.cn/pullimage/iTMYLbPnv0g9zwnHtU3unrvLOfBpb14vVS1izQhC.png" alt="image.png"> 图10-路况检测模块硬件连接图 当前面有障碍物时,单片机分析之后送给P0.6一个高电平信号,使得三极管V1导通,从而引起SB1蜂鸣器导通,发出报警信号。 当前方无障碍物时,另一个红外接收探头则接收不到由发射头发射出来的红外信号,当前方遇到障碍物时,发射头发出去的红外信号被前方障碍物反射回来,此时刚好被接受探头接收,探头接收到信号时,将会使其中一个管脚变为低电平,再传送给单片机;同理小车在判断前方是否有悬崖时也一样,当前方没有出现悬崖时,小车朝下的探头发出去的红外信号就会经路面反射,而且只要小车在路面上行驶,那么红外信号就会一直被反射进而被接收,也就会使得单片机与红外接收探头其中一脚相连的管脚一直至0,当前面遇到悬崖时,红外信号发射出去之后,由于红外接收头的接收距离有限,就会检测不到有传回的红外信号,此时就会给单片机一个高电平,单片机识别之后便会做出相应的修正动作,并给蜂鸣器一个信号,使得蜂鸣器出现报警提示。 超声波测距是通过不断检测超声波发射后遇到障碍物时反射的回波,从而测出发射与接收回波的时间差t,然后求出距离。 <img src="//image.lceda.cn/pullimage/kf4ltmurgtAsZQWS2DeZfC71Q1ATLJcaPh8oUnky.png" alt="image.png"> 图11-超声波测距原理框图 在智能小车中采用US-100超声波测距模块,如图所示,US-100超声波测距模块可实现0-4.5m的非接触测距功能,拥有2.4-5.5v宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,等多种通信方式,内带看门狗,工作稳定可靠。US-100从左到右依次为VCC电源、接外部电路的Trig端、接外部电路的Echo端、两个GND。 <img src="//image.lceda.cn/pullimage/xncM74Nf0XfLl3o1fDbgnZ5ID8DTY0Yo4AJPt719.png" alt="image.png"> 图12-US-100测距时序图 图表明:只需要在Trig管脚输入一个10us以上高电平,系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信号后模块还要进行温度值的测量,然后根据当前温度对结果进行校正,将校正后的结果通过Echo管脚输出。 在此模式下,模块将距离值转化为340m/s时的时间值的2倍。通过Echo端输出一个高电平,可根据此高电平的持续时间来计算距离值。距离值为(高电平时间*340m/s)/2。 在系统软件设计时,我们将所有的模块程序嵌入到遥控器中,这种嵌入式主要是为了便于控制,且不占CPU,因为遥控模块、寻迹模块、以及避障模块等都同时用到了实时检测扫描,这样不仅占用CPU,而且多个程序一块运行还会产生冲突。 <img src="//image.lceda.cn/pullimage/3VkbS16U94iDvjWfFI4ws8sw23o8Bm5uVw8Xt1zL.png" alt="image.png"> 图13-程序模块连接 遥控器发送红外信号时,开启单片机外部中断0,主程序进入中断函数,进行解码。解码处理完成之后,将遥控信息反馈给主程序,主程序对比遥控器输入值之后进入相应模块执行相关操作,各模块最终会处理是由电机驱动来完成的,所以在图3-1中最终箭头是指向电机控制模块的。 整个控制程序都嵌入到了遥控模块这一单元里边,所以红外遥控的解码是贯穿整个设计的主线,起到了整个系统入口的作用。当遥控器上按下按键时,1脚收到遥控器发送的红外脉冲信号并解码出脉宽波形,同时使单片机产生中断,并开启定时器、脉冲个数计数。记录出每来一个脉冲的时间和脉冲总个数,等到一帧的数据发送完成之后,单片机结束计数,并关闭定时器。之后进入判断阶段,首先判断这一帧数据中的脉冲个数,如果脉冲个数大于31个则将数据丢弃,如果刚好则判断接收的脉冲是0还是1,接收完之后将这些数据保存起来,再来比对数据的对错,首先比对前导码是否正确,也就是看一下当前遥控器是不是与小车匹配的遥控器,如果都正确之后再来将码值存起来。主程序用一个swich函数来对相应码值进行对应函数的调用就可以了,比如按下了上键,则调用前进函数来完成小车前进动作。 <img src="//image.lceda.cn/pullimage/dvsf9HiT03ecGGirSs2Rt7F9RlJbKCTVDPI5Nqh5.png" alt="image.png"> 图14-解码程序框图 电机驱动 电机驱动在小车运行中占据主导,也是小车接收到命令之后的最终输出,任何一个模块所执行命令的外在表现。电机驱动包括驱动电机前进、后退、左转、右转以及暂停功能,这些功能不仅仅只是遥控器按下上下左右之后才执行,而是每一个模块都会有执行电机驱动模块的操作,所以在设计程序时,最优设计应该是将这些前进、后退、左右转向单独编译成一个函数块,每一个子模块的运行就只需调用这些函数就可完成。这样做就节省了很大的程序空间。举个例子,在编写前进函数时,为了满足小车前进功能,只需将P0.0—P0.3赋值1010就可完成,其他左转右转只是改变相应P0.0—P0.3的码值则可实现。当然为了使得更准确,可以添加一下延时函数在内部,以避免操作太快给电机带了的损坏。 小车寻迹 在主程序中只要检测到遥控器上按下了寻迹功能键之后,主程序直接调用寻迹函数,来实现寻迹功能。要实现寻迹就必须清楚寻迹原理,在前面的技术介绍中,已经介绍了他的原理,这里不做过多说明。寻迹函数的编写是一个实时扫描单片机管脚P3.5/P3.6,P3.5管脚代表左方探头传回的信息,P3.6代表右边探头传回的信号。当左方探头跑出黑线时,会给P3.5至0,单片机检测到P3.5为0时,便调用右转向函数,来完成右侧转功能,当右方探头跑出黑线时,同样会使P3.6至0,这时再调用左转向函数来调节小车的位置。图3-3为小车寻迹模块的程序流程图。 小车防撞报警 当开启防撞功能时,小车主程序调用防撞报警函数,在防撞报警函数打开时进入实时检测P3.7脚,当前方遇到悬崖或障碍物时,小车内部防撞函数调用电机驱动函数来调节小车行经来避免掉入悬崖或撞击障碍物,并触发报警信号引起报警。 <img src="//image.lceda.cn/pullimage/5EXUDpnUbKUPqVjMiAjzGeEQtFBoYq5GgjkouMEy.png" alt="image.png"> 图15-寻迹程序流程图 <img src="//image.lceda.cn/pullimage/yKWBxuloyqlGgPIHoGkIV6QLrVDBS506UiHkimaK.png" alt="image.png"> 图16-防撞报警程序流程图 为了理解和编程方便在程序设计时我们采用模块化设计,由主程序、发射子程序、接收子程序、显示子程序组成。当按下按键时,主程序开始调用发射子程序、接收子程序、定时子程序,并把测量结果显示给LCD1602液晶显示屏,图为测距显示流程图。 <img src="//image.lceda.cn/pullimage/wgPN7afhsCVtxt0G9tjfXqhzSW3Sf8hQlyAqd67x.png" alt="image.png"> 图17-测距显示流程图 *5.作品展示 请参见附件</p>

文档

BOM

暂无

附件

附件名 下载
四个核桃五个仁.mp4
第四届立创电子设计大赛-四个核桃五个仁-基于C52舵机转向机器人.doc

评论(4)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
立创电赛 回复
<p>你的作品非常用心。如果能加上联网的功能会不会更好?比如车载一种传感器,能够远程控制小车深入危险区域探测数据。</p>
立创电赛 回复
<p>温馨提示:距项目提交截止还有11天,记得完善作品上传哟!</p>
jixin001 回复
<p>同学们加油。你们的设计非常有用,尤其是对于训练新的工程师来说。</p>
立创电赛 回复
<p>恭喜您的项目获得第四届立创电子设计大赛参与奖,点击查看获奖名单:<a href="https://diy.szlcsc.com/posts/7b78bd99e53745588a4f2d81cc11af92" target="_blank">https://diy.szlcsc.com/posts/7b78bd99e53745588a4f2d81cc11af92</a></p>
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow