位差超声波传感器在智能玩具机器人中的应用
2 软件设计
2.1 测距子程序设计
根据位差超声波传感器的时序原理图,对C51单片机内部定时/计数器编程,实现对前方物体距离的测量并将测量结果在LCD模块上显示。测距子程序的基本设计算法,用流程图表示如图4所示。本文引用地址:https://www.eepw.com.cn/article/161086.htm
程序设计思路主要分为2步:
1)根据位差超声波传感器的控制时序图(图3),启动位差超声波距离传感器,即通过单片机编程,给超声波传感器的信号引脚提供一个持续时间为5μs的高电平,然后拉低信号引脚750μs,这样位差超声波传感器就被启动,发出超声爆裂,与此同时,启动单片机的定时器开始计数,当超声波遇到物体时会立即反射回来,位差超声波传感器的接收器接到回波时,会自动拉低其信号引脚的电平,单片机查询到此引脚的电平下降沿到来时停止定时器计数,此时定时器计数值就间接反应了超声波从反射到返回所经历的时间。
2)读出定时器的计数值除以2,便得到超声波在遇到被测物体返回的时间,根据:距离=速度×时间,就可以计算出前方物体的距离,因超声波在常温下的空气介质中传播的速度大约为344 m/s,即29.034μs超声波能传播1 cm,具体编程时在程序中用语句x=count/29.034来计算距离值,获得被测距离值后,调用LCD显示函数将距离值在LCD模块上显示出来。
2.2 超声波导航程序设计
利用位差超声波距离传感器测得的“距离”信息,可以引导智能玩具机器人实现避障行走。当智能玩具机器人距离前面障碍物小于20 cm时,它会向左拐改变行进方向,避免与物体碰撞,下面简要分析以超声波导航程序的基本设计思路,程序设计算法用流程图表示如图5所示。
程序通过反复调用超声波测距子程序,获取智能玩具机器人前方被测物体的距离值;判断距离是否在设定阈值以内,若大于程序设定的距离阈值,调用函数Forward(),驱动智能玩具机器人前进;若小于程序设定的距离阈值,调用Backward(),驱动智能玩具机器人后退一段距离;接着又调用Left_Turn(),驱动智能玩具机器人左拐后程序再返回重复以上过程。
3 系统调试
3.1 硬件系统的调试
硬件系统的制作与调试相对简单,其具体过程简述如下:首先根据硬件设计原理图,采用Protel DXP2004软件合理布局和布线,设计出智能玩具机器人的控制器PCB,然后用制板设备制作出PCB样板;根据元器件清单,在PCB上安装焊接好元器件,连接好直流伺服电机,将测试软件下载到智能玩具控制器的单片机存储器,接通电源开机运行,用示波器测试观察控制器的单片机最小系统运行时关键点信号波形是否正常。
3.2 系统整体调试
根据上述程序设计思路,在Keil C编译环境中用C语言编写程序代码,编译程序,将生成的HEX文件烧写到控制板上的单片机程序存储器,开机运行,智能玩具机器人按程序设定运行模式前进,当前方有物体时,在LCD显示屏上实时准确地显示出小车和前方物体之间的距离值;当小车距前方物体小于程序设定的距离阈值时,小车掉转方向继续前进,经反复实验表明:位差超声波距离传感器在下列情况下不能精确地测量距离,如图6所示。
1)与物体距离大于3 m当被测物体距离智能玩具机器人3 m之外时,如图6(a)所示,因位差超声波传感器的发射功率不够,反射回来的信号太弱,导致LCD上显示出的距离值不能反映实际距离值。
2)被测物体不在正前方 当被测物体不在智能玩具机器人正前方,如图6(b)所示,而是有一定的偏角,因与物体的表面形成的反射角度太小,使传感器接收器接收不到反射回来的信号,导致LCD上显示出的距离值不能反映实际距离值。
3)前方被测物体横截面太小 当前方被测物体体积太小或是横截面太小,如图6(c)所示,因为没有足够强度的信号返回到传感器,导致LCD上显示出的距离值不能反映实际距离值。
4 结束语
超声波传感器在非接触性测量方面的应用非常广泛,可用于检测液体水位(特别是具有腐蚀性的液体,如硫酸、硝酸液体),汽车倒车防撞系统,金属(或非金属)探伤,机器人感知系统设计等,利用位差超声波传感器与51单片机构成智能玩具机器人的“距离感知系统”,具有电路接口简单,成本低廉,稳定性好等特点,但其测量精度受到位差超声波传感器的最大测量距离以及与被测物体反射角等的限制。
伺服电机相关文章:伺服电机工作原理
评论