钟志贤,韩 杰
(1.河北工程大学,河北邯郸 056038;2.邯郸市建筑设计研究院,河北邯郸 056002)
随着机器人技术的发展,自主移动竞赛机器人要求通过各种传感器系统在已知或未知的环境中自主移动来完成相应的任务。避障测距系统作为一个重要的决策分支得到广泛的研究。考虑到超声波测距的优点,文中采用模块化的设计方法,设计一个基于C8051F310单片机和CX2016A红外解码芯片的超声波测距传感器模块,通过RS422总线与主控制器组网,结合自定义通信协议,为机器人回避障碍物和导航提供距离信息和环境温度信息。
移动机器人控制系统中测距控制系统的硬件组成结构示意图如图1所示。
图1 测距控制系统硬件结构示意图
1.1模块控制器的选择
模块控制器采用C8051F310,它具有高速流水线结构,兼容的CIP-51内核(可达25MIPS)与标准的 8051 结构相比指令执行速度有很大的提高。有4个16位通用定时计数器,1280字节片内RAM,扩展的中断系统向CIP-51提供14个中断源(标准8051只有7个中断源),允许大量的模拟和数字外设中断[1]。一个中断驱动系统需要较少的 MCU干预,因而具有更高的执行效率。
1.2测距方法的选择
超声波测距的主要方法有渡越时间法、相位检测法、声波幅值检测法[2]。现在超声波测距一般使用渡越时间法,选择渡越时间法是因为其方法简单可靠,精度能满足大多数应用。其原理为:控制器通过测量超声波发送和接收到回波的时间差t,计算得到发射源与目标障碍物之间的距离:
d=vt/2
式中v为超声波在空气中的传播速度,m/s.
式中T为环境温度,℃.
1.3总线的选择
自主移动竞赛机器人控制系统由不同模块通过不同的总线连接在一起。考虑到测距模块之间不需要通信,而RS422总线支持点对多的双向通信,且是以差动方式发送和接收,不需要数字地线,可以全双工工作收发互不影响,同速率条件下传输距离远、抗干扰性强等优点,所以选择RS422总线作为测距系统的系统总线。
2.1测距模块最小系统
图2为测距模块最小系统。
图2 测距模块最小系统
2.2发射电路
超声波发射电路如图3所示,超声波发射电路主要负责产生超声波声波信号。该模块采用的超声波换能器的频率是40 kHz,所以主控制器P1.2引脚(网络标号SEND)要提供40 kHz的信号给超声波换能器。为了使超声波有足够的能量能传播得更远,还需要设计电路把信号放大。升压单元主要由一个脉冲变压器和一对复合管组成,复合管具有很高的电流放大系数,脉冲变压器主要有两个功能:一是将5 V电压升至12 V;二是使其输出阻抗与换能器的阻抗相匹配。优点是消除了谐振,缺点是电路需要两种电压。
图3 超声波发射电路
2.3接收电路
超声波接收电路如图4所示,超声波接收电路一直都是超声波测距的关键点,它主要负责从接收探头接收到的各种噪声中,提取微弱的40 kHz信号,并且经过前置放大、带通滤波、中间放大、比较整形转换成单片机可以识别的TTL电平信号,完成接收任务。
CX20106是专用的40 kHz红外信号接收芯片,具有很高的信号检测灵敏度且能有效减少电路之间的互相干扰,减少电噪声[3]。其输出的信号是能被单片机直接识别的TTL信号,调节图4中R13电位器可以改变接收灵敏度,C13是一个积分电容,标准值为330 pF,如果该电容值取得过大,会使探测距离变短。第7脚(网络标号RECEIVE)在没有接收到回波时,为高电平,当接收到回波时跳变为低电平通知给单片机,单片机进入外部中断服务子程序进行计算处理。
图4 超声波接收电路
2.4通信接口和温度测量
测距模块通信接口电路如图5(a)所示,电平转换芯片U3选用MAX3491,JP2为总线接口端子。在远距离传输时需要在传输电缆的两端接120Ω的匹配电阻。但是由于模块传输距离近且匹配电阻会消耗较大功率,考虑到系统由电池供电,所以不用终端匹配电阻。
温度测量电路如图5(b)所示,由于超声波在空气中传播的速度和温度有关,为了提高测距精度,必须加入温度补偿。系统采用数字温度传感器DS18B20来采集环境温度。DS18B20测量范围是-55~+125 ℃,在-10~+85 ℃间,测量精度达±0.5 ℃[4]。其抗干扰性强,功耗低,接口简单,适用于各种温度测控系统。
(a)通信接口 (b)测温电路
测距模块系统软件设计采用模块化设计方法,主要包括主程序、超声波发射子程序、外部中断服务子程序、温度测量子程序、串口通信子程序。
3.1算法设计
由于系统采用一主多从式的组网方式,上位机主控制器可以通过轮询的方式,收集各个模块的距离信息,各个模块单独工作,互不影响。
每个模块都由串口中断函数接收上位机下发的数据,若和自己的地址匹配,则解析命令,和上位机交换数据。外部中断服务子程序,当接收电路检测到回波时,即有外部中断信号发生时,程序跳到外部中断服务子程序,首先关闭定时计数器0,禁止外部中断,接着提取计数值得到渡越时间,调用温度测量子程序测温,计算声速,或者根据温度查表得到声速,然后根据声速和时间差计算出距离,跳出完成1次测量。并通过串口向上位机发送数据。部分程序流程图如图6所示。
(a)主程序流程图 (b)计时程序流程图 (c) 外部中断服务子程序流程图
3.2自定义通信协议
由于机器人控制系统庞大以及复杂,我们使用了多处理器,测距系统包括两种不同系列的处理器(c8051f系列和ARM7,PC213X),因此处理器之间的通信必须深入研究及其设计,才能使整个控制系统成功运作。
系统串口通信协议,即接收和发送帧格式如表1所示。规定主机地址为0x00,读取距离的命令为0x0a,读取温度的命令为0x0b.如果主机向1号模块(地址为0x01)要距离数据则:
主机发送:0x55 0xaa 0x01 0x00 0x0a 0x0a
从机返回:0x55 0xaa 0x00 0x02 0x0a 0x11 0x22 0x3e
返回帧中:0x11、0x22,为有效数据,转换成十进制时高位在前,低位在后。
表1 接收和发送的帧格式
3.3程序效率
由于测量温度耗费时间长,但是温度短时间变化不大,甚至没有变化,所以每次计算距离时没有必要重新计算声速,只需把上一次测量的温度缓存起来,和最近一次测量的温度比较,如果有变化,再启用温度补偿声速,或者把不同温度下对应的声速,人工计算好做成表,单片机计算距离时根据温度,直接查表得到声速。这样缩短测距时间,提高程序效率。还需要简化公式、减少计算步骤、优化程序代码等,如:乘、除法用移位代替。
系统具有工作稳定、结构简单、成本低等优点。引入温度补偿,使得结果更加准确。通过合理的选用C805F310和CX20106芯片组成方案,抗干扰性能有了较大的改善,完成一次测量的时间大大缩小,能及时向上位机主控制器提供测距服务。
参考文献:
[1]胡发焕,邱小童,朱花.C8051F单片机在自动机器人上的应用.信息化纵横,2009(5):24-25.
[2]李戈,孟祥杰,王晓华,等.国内超声波测距研究应用现状.测绘科学,2011,36(4):60-61.
[3]秦伟,颜文俊.基于CX20106A的超声波倒车雷达设计.压电与声光,2011,33(1):162-163.
[4]朱向庆,陈志雄.带温度补偿的360°超声波测距测速系统设计.压电与声光,2011,33(2):317-318.