1、CAN总线扩展多路超声波传感器 引 言 移动机器人的安全避障问题一直是该项研究的基本问题,目前解决此问题的基本方法是采用多路超声波传感器通过适当的安装角度达到获取多路测量信息的目的。对于多路超声波传感器的扩展,一般是在机器人系统控制核心之上进行。这样做的缺点在于,超声波传感器的扩展占用了大量的系统硬件资源,另外大量的测量信息的处理也浪费了系统软件资源。针对这一问题,笔者采用 CAN 总线扩展多路超声波传感器的作法。这种作法有几个优点:首先, CAN 总线具有良好的传输防错设计,保证了数据通信的可靠性;其次,多路超 声波传感器的设计可由CAN 总线智能节点实现,大大节省了系统硬件资源和软件资源;
2、第三,由于 CAN总线对于网络内的节点数在理论上不受限制,所以随着对移动机器人研究的不断深入,对于整个机器人系统的总体设计可以灵活地在 CAN 总线上进一步开发。本文介绍的 CAN总线智能节点的设计以 Philips公司的 P87C591作为超声波传感器的控制核心。由于 P87C591 具有片上自带的 CAN 控制器并且为 CAN 的应用提供了许多专用的硬件功能,因此又将它作为了系统的 CAN 总线控制器,大大节省了主控系统的资源。 CAN 总线的收发器采用 TJAl040。系统总体结构框图如图 1所示。 机器人系统控制核心由 ARM 实现。其主要功能是处理需要复杂计算的信息,将经过处理的信息
3、再送回 CAN 总线,并对整个网络进行管理。超声波智能节点控制系统的主要功能就是判断障碍物位置,将对移动机器人前进方向有阻碍的障碍物信息通过 CAN 总线传回主控系统,由主控系统 作出相应处理并进行避障动作。本文将着重介绍超声波智能节点控制系统。 1 超声波智能节点控制系统的硬件设计 超声波智能节点控制系统的硬件电路如图 2所示。 P87C591 是 51系列单片机,对于大部分熟悉 51 单片机的使用者来说它的使用方法十分简单。下面分别介绍各个组成部分。 1 1 控制部分 超声波传 感器的控制部分采用 Philips 半导体公司生产的 P87C591。它是一个单片 8 位高性能微控制器,具有片
4、内 CAN 控制器,是从 80C51 微控制器家族派生出来的。它采用了强大的 80C51 指令集,并成功地包括了 Philips 半导体公司SJAl000 CAN 控制器的 PeliCAN 功能;全静态内核提供了扩展的节电方式;振荡器可停止和恢复而不会丢失数据;改进的 1: 1内部时钟预分频器在 12 MHz 外部时钟速率时,实现 500 ns 指令周期;内部具有的 16 KB 内部程序存储器完全满足本系统要求。 作为系统控制核心, P87C591担负两个主要任务。其一是作为超声波传感器的控制核心,在其普通 I O口上扩展了超声波传感器的接收和发射部分电路,利用单片机软件功能产生 40 kHz
5、 信号并通过驱动放大发射出去,再利用接收部分电路进行接收。另外可以对其余口线继续进行超声波传感器的扩展,实现多个超声波传感器系统的设计。其二是利用 P87C591 的片内 CAN 控制器实现与 CAN 总线的连接。这样的设计改变了过去在机器人控制核心上进行超声波测距系统的设计,不但将超声波检测与处理的工作转移到了单片机上,大大节省了机器人控制核心的系统资源,还将 CAN 总线智能节 点的大部分控制工作也转移到了单片机上,节省了硬件资源,同时 CAN 总线的采用大大提升了系统的抗干扰能力,使机器人控制系统更加稳定地工作。 1 2 超声波传感器发射部分 超声波传感器发射部分硬件电路如图 3所示。
6、LM386 是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少 和总谐波失真小等优点,广泛应用于录音机和收音机之中。它是一个三级放大电路。 本部分硬件电路相对简单,主要就是利用 LM386 的驱动放大功能将单片机产生的40 kHz 方波放大输出。因为在智能超声波节点控制系统中单片机的工作相对较少,为节省硬件,不妨将 40 kHz 方波的产生这部分工作交由单片机的定时器来完成,这样只需十分简单的硬件电路即可完成。 UST1 为超声波发射头。 1 3 超声波传感器接收部分 超声波传感器接收部分的硬件电路如图 4 所示。 电路采用集成电路 CX20106A。这是一款红外线
7、检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率 38 kHz 与测距超声波频率 40 kHz 较为接近,可以利用它作为超声波检测电路。实验证明,其具有很高的灵敏度和较强的抗干扰能力。适当改变 C1 的大小,可改变接收电路的灵敏度和抗干扰能力。 R1 和 C1 控制 CX20106A 内部的放大增益, R2 控制带通 滤波器的中心频率。一般取 R2=4 7 , C1=1F 。其余元件按图 4 取值。 US_R1 为超声波接收头,当收到超声波时产生一个下降沿,接到单片机的外部中断 INTO 上。 当超声波接收头接收到 40 kHz 方波信号时,将会将此信号通过 CX2
8、0106A 驱动放大送入单片机的外部中断 0 口。单片机在得到外部中断 O 的中断请求后,会转入外部中断 O 的中断服务程序进行处理,在移动机器人的避障工作中,可以在中断服务程序设定需要单片机处理的最短距离,比如 O 5 m。对于距离大于 0 5 m的障碍物,可以不做处理直接跳出中断服务程序;对于距离小于或等于 0 5 m的障碍物信息,则在中断服务程序中进行处理并通过 CAN 总线上报机器人系统控制核心,由机器人系统控制核心发出命令指导机器人的避障动作。对于多超声波传感器系统,每一个超声波传感器在判断到对机器人行动有障碍物时可分别在其中断服务程序中对障碍物信息进行简单处理,上报给机器人系统控制
9、核心的信息可以相对简单,只需机器人系统控制核心控制机器人的实际动作,比如左转30 ,而不必机器人系统控制核心再次进行计算,这样会节省大量系统资源去作其他更为复杂的工作。 1 4 CAN 总线设计部分 CAN 总线设计部分的硬件电路如图 5所示。 TJAl040 是 Philips半导体公司生产的完全可替代 PCA82C250 的高速 CAN 总线收发器。该器件提供了 CAN 协议控制器和物理总线之间的接口,以及对 CAN 总线的差动发送和接收功能。 TJAl040 具有优秀的 EMC 性能,而且在不上电状态下有理想的无源性能;它还提供低功耗管理,支持远程唤醒。值得一提的是 TJAl040的自动
10、防故障功能,在引脚 TXD 上提供了一个向 VCC 的上拉,使引脚 TXD 在不使用时保持隐性电平。引脚 STB 提供了一个向 VCC的上拉,当不使用引脚 STB 时,收发器进入待机模式。如果 VCC 掉电,引脚 TXD、 STB 和 RXD 就会变成悬浮状态,防止通过这些引脚产生反向电流。 这部分电路硬件相对简单,但对于 CAN 总线的抗干扰能力需特别注意。本设计主要突出以下几点: 图中 6N137 是光电耦合器, P87C591 的。 RXDC 脚 (即 P1 O口 )作为 CAN 接收器的输入脚, TXDC 口 (即 P1 1 口 )作为 CAN 发送器的输出脚,都通过 6N137 连接
11、至CAN 发送器 TJAl040。采用光电耦合器 6N137 的目的是增强 CAN 总线节点的抗干扰能力,这样的设计可 以很好地实现总线上各 CAN 节点间的电气隔离。但要注意的是,光耦部分电路所采用的两个电源 VCC 和 V必须完全隔离,否则光耦就失去了意义。可采用专用的电源隔离模块来实现。 TJAl040 作为 CAN 总线收发器,与 CAN 总线的接口部分也采取了抗干扰措施。TJAl040 的 CAN_H 和 CAN_L 引脚各自通过 一个 5 电阻与 CAN 总线连接,电阻可以起到一定的限流作用,保护 TJAl040 不受过流的冲击。 CAN_H 和 CAN_L 与地之间并联了 2个
12、30 pF 的电容,可以过滤掉总线上的高频干扰和一定的电磁辐射。 2 根 CAN 总线接人端与地之间分别反接了一个保护二极管。当 CAN 总线有较高的负电压时,通过二极管的续流可起到一定的过压保护作用。 总线两端接的 120 电阻起匹配总线阻抗的作用,忽略掉它会使数据通信的抗干扰性能及可靠性大大降低甚至无法通信。 1 5 其 他 除以上提到的几个主要部分之外,还有单片机的复位电路、外 部时钟电路和电源等几个部分,本文只提供了一种最简单方案。在实际应用中,对于较为复杂的现场环境可以相应添加看门狗复位电路和独立电源设计等复杂电路。值得注意的是,对于复位电路和电源电路应该给予足够的重视。 2 超声波
13、智能节点控制系统的软件编写 软件的编写工作主要有两个部分:超声波测距部分和 CAN 总线的通信部分。 2 1 超声波测距部分的软件设计 超声波发射部分的软件设计相对简单。在软件编写工作中,需要将超声波持续发射一段时间以便被接收器准确接收。以下程序可作参考: 当超声波接收器接收到回波时,硬件电路产生低电平触发 P87C591 的外部中断 O口。软件编写的主要思想是,在中断服务程序中由寄存器预先设定一个数值,这个数值是机器人避障的最短距离。从超声波发射头发射方波开始,到超声波接收头接收到回波为止,把这段时间换算成为距离,与上述最短距离相比较。如大于最短距离,则不作处理,跳出中断服务程序;如等于或小
14、于最短 距离,则执行相应动作。图 6是这部分程序的流程。 2 2 CAN 总线通信部分的软件编写 这部分软件编写主要由以下几部分组成:初始化、接收处理、发送处理、中断处理及错误处理函数。由于系统中任意节点在任意时刻均可主动与其他节点通信,故各个节点通信程序大致相同。具体程序的编写可参考 P87C591 的用户手册。 结 语 本文论述了以 CAN 总线扩展多路超声波传感器的基本思想,介绍了一种以Philips 公司 P87C591 作为超声波传感器控制核心及 CAN 总线控制器和以TJAl040 作为 CAN 总线收发器的 CAN 总线智能超声波测 距系统。与以往移动机器人超声波传感器测距系统相比,这个设计增加了 CAN 总线部分的设计,将多路超声波传感器的扩展转移到智能节点部分上完成,简化了移动机器人系统控制核心的工作;采取了比较简单的硬件设计,主要是将超声波传感器的控制核心和 CAN总线控制器集中到一起,采用 P87C591 一个器件完成两种芯片的工作,大大节省硬件。另外, CAN 总线的扩展也会令后续的移动机器人系统的进一步开发变得更为灵活。实践证明这个设计可行,只是对于实际工作中不同应用场合的有些电路(比如复位电路、电源电路等外围电路 )在设计细节上还有待进一 步细化。另外,软件编写方面还应特别注意多超声波传感器的抗干扰问题。