CAN总线协议遵循ISO的标准模型,分为数据链路层和物理层。这两层通常由CAN控制器和收发器了实现的。CAN总线器件可大体分为两种类型,其一种是带片上CAN控制器,如87C196CA/CB、MC6837等;另一种的CAN控制器独立需要和微处理器一起使用,如Philips SJA1000、Intel公司82526及MCP251。前者多用在许多特定情况下,使用集成器件方便用户制作印制板,使得电路设计简化、紧凑,效率提高;后者使用上比较灵活,它可以与多种类型的单片机、微型计算机的各类总线进行接口组合。在本系统中,结合前面选择的微控制器综合考虑,选Philips半导体公司的SJAl000作为独立CAN控制器。SJA1000的主要特性:扩展接收缓冲器(128字节FIFO);支持CAN 2.0B协议;同时支持11位和29位标识符;位通讯速率为1Mbits/s;增强CAN模式(PeliCAN);采用24MHz时钟频率;支持多种微处理器接口;可编程CAN输出驱动配置;工作温度范围为-40℃~+125℃,足以适应各种恶劣环境。CAN总线驱动器选用Philips公司的PCA820250,它具有高速性(最高速度可达1Mbps),能满足自制动等实时性要求较高的控制需要;具有抗瞬间干扰保护总线的能力,具有降低射频干扰的斜率控制。此外,它可以与110个节点相连,能够防止电源与地之间发生短路,并且当某个节点掉电时不影响总线。
CAN总线通信模块主要有AT89C5l微控制器、独立CAN通信控制器SJAlO00和CAN总线驱动器PCA82C250组成。为了提高系统的抗干扰能力,设计在SJAl000和CAN总线驱动器PCA82C250之间增加了光电隔离器6N137。当微处理器AT89C51将测距结果数据通过P0口发送到CAN总线控制器SJAl000,由SJAl000将并行数据转换为串行数据从端口TX0发出,经过光电隔离器6N137后到达CAN总线驱动器PCA82C250,最后将数据发送到CAN总线上。相反,来自CAN总线的数据也可以经过相应电路到达微处理器。这样就可以实现超声波测距传感器与上位机的通信功能。
3.2 超声波传感器介绍
本系统采用单片机AT89C51来实现对SensComp 600系列超声波传感器和SensComp 6500超声波测距模块的控制。SensComp 600系列静电换能器的频率为50kHz;测量范围为6英寸到35英尺(0.15米~10.7米)。配合SensComp的6500驱动电路时传感器测量范围能从2.5厘米到15.2米。AT89C51通过P1.0引脚控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由低电平变为高电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离,如图3所示为超声波测距的硬件示意图。
图3 超声波测距电路的硬件示意图
3.3 温度补偿设计
由于温度每改变10℃,声速改变量为0.6m/s,因此温度对测距的影响是相当大的。为了更精确的实现检测功能,本设计使用了美国DALLAS半导体公司的单线温度传感器DS18B20。该传感器能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,测温范围-55℃~+125℃,精度达±0.5℃,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,整个产品体积小、价格低、使用灵活,在测温精度、转换时间、传输距离、分辨率等方面都能够满足系统的要求。如图4为温度传感器与单片机的连接原理图。
图4 温度校正部分原理图
4 系统软件设计