1 引言
移动机器人要实现在不确定环境下运行,必须具备自动导航和避障功能。在移动机器人的导航系统中,传感器起着举足轻重的作用。视觉、激光、红外、超声传感器等都在实际系统中得到了广泛的应用。其中,超声波传感器以其信息处理简单、速度快和价格低,被广泛用作移动机器人的测距传感器,以实现避障、定位、环境建模和导航等功能。本文介绍的CAN总线智能节点的设计以Microchip公司的PIC18F2580控制核心。由于PIC18F2580有片上自带的 CAN控制器并且为CAN的应用提供了许多专用的硬件功能,因此又将它作为了系统的CAN总线控制器,大大节省了主控系统的资源。CAN总线的收发器采用 TJAl040。系统总体结构框图如图1所示。
图1 系统总体结构框图
机器人系统控制核心由ARM或DSP实现。其主要功能是处理需要复杂计算的信息,将经过处理的信息再送回CAN总线,并对整个网络进行管理。超声波智能节点控制系统的主要功能就是判断障碍物位置,将对移动机器人前进方向有阻碍的障碍物信息通过CAN总线传回主控系统,由主控系统作出相应处理并进行避障动作。本文将着重介绍超声波智能节点控制系统。
2超声测距原理
超声测距的原理较简单,一般采用渡越时间法,即:
D=ct/2 (1)
其中D为移动机器人与被测障碍物之间的距离,c为声波在介质中的传输速率。声波在空气中传输速率为:
c= co(2)
其中,T为绝对温度,co =331.4m/s。在不要求测距精度很高的情况下,一般可以认为c为常数。渡越时间法主要是测量超声发射到超声返回的时间间隔t,即“渡越时间”,然后根据式(1)计算距离。
3 超声波智能节点控制系统的硬件设计
超声波智能节点控制系统的硬件电路如图2所示。
3.1 控制电路
超声波传感器的控制部分采用Microchip公司生产的PIC18F2580。它是一个单片8位高性能微控制器,采用了哈佛总线结构,运行速度高,功耗低,抗干扰能力强,具有片内CAN控制器。
作为系统控制核心,PIC18F2580担负两个主要任务。其一是作为超声波传感器的控制核心,在其普通I/O口上扩展了超声波传感器的接收和发射部分电路,利用单片机软件功能产生40 kHz信号并通过驱动放大发射出去,再利用接收部分电路进行接收。另外可以对其余口线继续进行超声波传感器的扩展,实现多个超声波传感器系统的设计。其二是利用PIC18F2580的片内CAN控制器实现与CAN总线的连接。这样的设计改变了过去在机器人控制核心上进行超声波测距系统的设计,不但将超声波检测与处理的工作转移到了单片机上,大大节省了机器人控制核心的系统资源,还将CAN总线智能节点的大部分控制工作也转移到了单片机上,节省了硬件资源,同时CAN总线的采用大大提升了系统的抗干扰能力,使机器人控制系统更加稳定地工作。
图2 测距节点控制电路图
3.2 超声波传感器发射电路设计
图3 超声波发射部分电路图
图3中,LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。它是一个三级放大电路。本部分硬件电路相对简单,主要就是利用LM386的驱动放大功能将单片机产生的40 kHz方波放大输出。因为在智能超声波节点控制系统中单片机的工作相对较少,为节省硬件,不妨将40 kHz方波的产生这部分工作交由单片机的CCP模块来完成。TX1为超声波发射头。
3.3 超声波传感器接收电路设计
电路采用集成电路CX20106A。这是一款红外线检波接收的集成电路,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38 kHz与测距超声波频率40 kHz较为接近,可以利用它作为超声波检测电路。实验证明,其具有很高的灵敏度和较强的抗干扰能力。适当改变C11的大小,可改变接收电路的灵敏度和抗干扰能力。R12和C11控制CX20106A内部的放大增益,R14控制带通滤波器的中心频率。一般取R12=4.7Ω,C11=1μF。其余元件按图4 取值。RX1为超声波接收头,当收到超声波时产生一个下降沿,接到单片机的外部中断INTO上。
图4 超声波接收部分电路图
当超声波接收头接收到40 kHz方波信号时,将会将此信号通过CX20106A驱动放大送入单片机的外部中断0口。单片机在得到外部中断0的中断请求后,会转入外部中断0的中断服务程序进行处理,在移动机器人的避障工作中,可以在中断服务程序设定需要单片机处理的最短距离,比如0.4m。对于距离大于0.4 m的障碍物,可以不做处理直接跳出中断服务程序;对于距离小于或等于0.4m的障碍物信息,则在中断服务程序中进行处理并通过CAN总线上报机器人系统控制核心,由机器人系统控制核心发出命令指导机器人的避障动作。对于多超声波传感器系统,每一个超声波传感器在判断到对机器人行动有障碍物时可分别在其中断服务程序中对障碍物信息进行简单处理,上报给机器人系统控制核心的信息可以相对简单,只需机器人系统控制核心控制机器人的实际动作,比如右转20°,而不必机器人系统控制核心再次进行计算,这样会节省大量系统资源去作其它更为复杂的工作。
3.4 CAN总线设计部分
TJAl040是Philips半导体公司生产的高速CAN总线收发器。该器件提供了CAN协议控制器和物理总线之间的接口,以及对CAN总线的差动发送和接收功能。TJAl040具有优秀的EMC性能,而且在不上电状态下有理想的无源性能;它还提供低功耗管理,支持远程唤醒。值得一提的是TJAl040 的自动防故障功能。STB引脚接地工作在正常模式下,引脚TXD提供了一个向VCC的上拉,使引脚TXD在不使用时保持隐性电平。如果VCC掉电,引脚 TXD、STB和RXD就会变成悬浮状态,防止通过这些引脚产生反向电流。
6N137是光电耦合器,采用光电耦合器6N137的目的是增强CAN总线节点的抗干扰能力,这样的设计可以很好地实现总线上各CAN节点间的电气隔离。但要注意的是,光耦部分电路所采用的两个电源VCC和VDD必须完全隔离,否则光耦就失去了意义。
TJAl040作为CAN总线收发器,与CAN总线的接口部分也采取了抗干扰措施。
TJAl040的CANH1和CANL1引脚各自通过一个5Ω电阻与CAN总线连接,电阻可以起到一定的限流作用,保护TJAl040不受过流的冲击。
CANH和CANL与地之间并联了两个30 pF的电容,可以过滤掉总线上的高频干扰和一定的电磁辐射。两根CAN总线接人端与地之间分别反接了一个保护二极管。当CAN总线有较高的负电压时,通过二极管的续流可起到一定的过压保护作用。总线两端接的120Ω电阻起匹配总线阻抗的作用,忽略掉它会使数据通信的抗干扰性能及可靠性大大降低甚至无法通信。
4 超声波智能节点控制系统的软件编写
软件的编写工作主要有两个部分:超声波测距部分和CAN总线的通信部分。
4.1 超声波测距部分的软件设计
当超声波接收器接收到回波时,硬件电路产生脉冲电平触发PIC18F2580的外部中断0口。软件编写的主要思想是,在中断服务程序中由寄存器预先设定一个数值,这个数值是机器人避障的最短距离。从超声波发射头发射方波开始,到超声波接收头接收到回波为止,把这段时间换算成为距离,与上述最短距离相比较。如大于最短距离,则不作处理,跳出中断服务程序;如等于或小于最短距离,则执行相应动作。图5是这部分程序的流程。
图5 超声波测距软件流程图
4.2 CAN总线通信部分的软件编写
这部分软件编写主要由以下几部分组成:初始化、接收处理、发送处理、中断处理及错误处理函数。由于系统中任意节点在任意时刻均可主动与其它节点通信,故各个节点通信程序大致相同。具体程序的编写可参考PIC18F2580的用户手册。
5 结束语
将多路超声波传感器的扩展转移到智能节点部分上完成,简化了移动机器人系统控制核心的工作;采取了比较简单的硬件设计,主要是将超声波传感器的控制核心和CAN总线控制器集中到一起,采用PIC18F2580一个器件完成两种芯片的工作,节省硬件。另外,CAN总线的扩展也会令后续的移动机器人系统的进一步开发变得更为灵活。