基于DSP的多超声测距数据采集处理系统

技术分类: 测试与测量  微处理器与DSP  | 2008-05-05
来源:电子技术应用

  3软件设计

  系统软件主要由两部分构成,即超声数据采集与处理模块、CAN总线通讯模块。

  3.1多路超声传感器数据采集模块

  超声传感器被分为两组,两组循环交替工作。软件设计上采用两个定时器依次工作,分别对两组传感器进行计时。选择定时器的周期比超声传感器探测最大距离所需的渡越时间稍长。在每个定时器周期开始时,触发一组超声传感器同时开始工作。在定时器周期内,每个回波返回,都会触发一次外部中断(XINTl或XINT2中断),在外部中断处理程序内,将超声波返回时间进行纪录,并将相应的超声传感器关闭。外部中断处理程序非常简短,本系统只用了不到20条指令,并且TMS320LF2407A指令执行速度很快,因而即使因进入外部中断处理程序而延误了对后来回波的处理,但这种延误的时间根据计算不大于0.5μs,由此引入的距离误差根据(1)式计算小于83.5×10-6m。可见误差非常小,可以忽略不计。当定时器中断时,对于距离大于最大超声探测范围的,没有相应的时间记录,给它们加上超出测距范围的标志。其它的时间数据都有记录,根据(1)式计算距离,然后启动下一个定时器工作,并触发下一组超声传感器。本文的超声传感器的最大探测距离为3.5m,因而超声波探测的最长时间为20.58ms。所以每个定时器的周期选为20.6ms。图2只画出了一组超声传感器的处理框图,另一组与此相同,不再赘述。

一组超声传感器的处理框图

  由于受环境温度、湿度的影响,超声传感器的测量值与实际值总有一些误差,表1列出了本超声测距系统测量值与对应的实际值。采用最小二乘法[8]对表1的数据进行拟合,结果为:

y=O.9986x+0.2111

  式中,x为测量值,y为实际值。

本超声测距系统测量值与对应的实际值

  3.2基于CAN总线的数据通信

  超声数据采集板发送测距数据以中断的方式完成。TMS320LF2407A有专门的mailbox中断,用于响应发送/接收中断。每个超声传感器的测距值在DSP内用两个字节存储,而CAN总线传输标准要求每个数据帧最多只能传输8个字节的数据。本系统共有16个超声传感器,共有32个字节存储所有测距值。CAN总线传输所有测距值需要4个数据帧才能传送完。本系统的通讯过程为:中央控制器发送远程请求,超声数据采集板进入接收中断,在中断服务程序内,采用查询方式发送4帧数据,每帧数据包含4个超声传感器的测距值。本系统采用的波特率是500kbps。TMS320LF2407A用mailbox0接收中央控制器的远程请求帧,用mailbox2发送测距数据值。图3是超声数据采集板的发送数据中断服务程序框图。其中,TA2是对应mailbox2发送数据帧完成的标志位,RMP0是对应mailbox0接收数据帧的标志位。关于TMS320LF2407A的CAN模块的具体说明,参见文献[4],在此不作具体介绍。

超声数据采集板的发送数据中断服务程序框图

  中央控制器接收子程序由VC++编写。当机器人需要新的测距值时,即调用此子程序。程序框图见图4。接收程序收到一帧数据后,判断数据是否有错,若有错,则向采集板发送命令,要求重发此帧数据;若正确,发送确认命令,要求采集板发送下一组数据,直到所有的超声测距数据都接收完。

程序框图

  本文介绍的超声数据采集系统采用TMS320LF2407A为核心处理器,可以达到很高的采集速率和精度。通过CAN总线通讯,可以将测距值以很高的波特率可靠地发送给机器人中央控制器。此系统已经在自行设计的智能移动机器人CASIA-I上得到了实际应用。实验验证了硬件系统的可靠性和算法的有效性。

1】【2
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销