当前位置: 首页 > 范文大全 > 公文范文 >

基于SJA1000实现温度检测信息的CAN总线传输

时间:2022-03-23 09:23:30  浏览次数:

摘要:本文设计了一个基于数字式温度传感器DS18B20和独立CAN控制芯片SJA1000的用于温度检测和can总线传输的模块,该模块可以精确地测量出环境温度,并将采集的数据通过can总线传输,通信可靠,可实现安防及报警的功能。本文详细介绍其硬件设计电路及相关软件设计。

关键词:SJA1000;DS18B20;温度检测;CAN总线传输

引言

CAN是Controller Area Network的缩写,即控制器局域网,是国际标准化的串行通信协议。CAN总线的特点是数据传输速率快、可靠性好及抗干扰能力强;本模块采用STC89C51单片机作为微控制器,结合单线温度传感器DS18B20进行温度信息的采集,数据的总线传输通过独立CAN控制芯片SJA1000来完成。

1、温度检测及SJA1000的硬件电路设计

本模块可作为典型的传感器有线网络节点,可广泛应用于工业级现场,所以模块的电路设计必须考虑到阻容分布参数及噪声的影响,以确保通信准确可靠。

1.1 单片机的选取

本模块选用宏晶公司的高速低功耗单片机STC89C51作为微控制器,其工作电压为2.5~5.5V。该单片机的耗电电流在2.7~7mA之间,因不同的工作模式而不同,用外部中断请求将CPU唤醒只需要10us,因此该单片机能在低功耗模式下具有快速实时响应的特点。此外,STC89C51是增强型8051单片机,比传统51内核单片机速度快8到12倍,并集成了8通道10位精度的A/D模块,串口/SPI接口,片内看门狗定时器等。由于与SJA1000通信需要通过AD7~AD0地址/数据总线来传输数据,STC89C51端口正好满足该接口的要求。

1.2 传感器的选取

本模块是用于采集环境温度并进行CAN总线传输,实际应用中可根据工程需要接入其它的传感器(如人体红外传感器、烟雾报警传感器等)进行对应的参数检测。

温度传感器选用Dallas公司的可编程单线数字式温度传感器DS18B20实现环境温度采集。该传感器体积小,外形如普通三极管,其内部集成有测温传感器及逻辑控制电路。DS18B20的外围电路简单,成本低,测温精度较高,可以设定9~12位的分辨率,精度为±0.5℃,可以满足一般应用的要求。它还有很多优点,例如:直接输出数字信号,无需后续的信号处理及A/D转换部分;单总线是指一根信号线上可以挂连多个DS18B20,可用于多点测量。

1.3 独立CAN控制芯片SJA1000

SJA1000是PHILIPS公司早期CAN控制器PCA82C200的替代品,功能更强,具有如下特点:①与PCA82C200引脚兼容、电气兼容,并完全支持BasicCAN工作模式;②扩展的接受缓冲器,64字节,先进先出的FIFO结构;③和CAN2.0B兼容,同时支持11位和29位识别码;④位速率可达1Mbit/s;⑤支持PeliCAN模式及其扩展功能;⑥通过对输出控制寄存器OCR(output control register)进行编程配置可设置不同的输出驱动类型;⑦增强的温度适应(-40℃~+125℃)。

1.4 CAN总线收发器PCA82C250

PCA82C250是CAN协议控制器和物理总线和物理总线之间的接口,该器件对CAN物理总线提供差动发送能力并对CAN控制器提供差动接收能力,可实现将CAN节点与CAN物理总线电气隔离的功能。PCA82C250是应用最广泛的CAN收发器。PCA82C250的特点是:①高速度,波特率可达1Mbps;②支持低电流待机模式,未供电的节点不会干扰总线;③内部斜率控制电路以降低射频干扰;④差动接收器具有宽共模范围,有很强的抗电磁干扰(EMI)能力。

1.5 工作框图及硬件连接原理图

上述各器件组成的单个模块结构图及信号走向图如图1所示。

假定一个应用环境为某车队车库,各个车库温度检测信息通过CAN总线网络传输到调度室中。整体工作框图如图2所示。

具体的单个模块电路原理图如图3所示。各个芯片的VCC、GND分别接电源、接地;单片机与SJA1000的AD7 ~AD0、WR、RD、ALE对应连接即可;现在介绍几个关键连接点:①STC89C51的P1.0口是温度传感器DS18B20的数据采集口,必须用5V电源接一个4.7K的上拉电阻;②SJA1000的接受信息中断口INT为开漏输出,连入STC89C51的INT0口时也需接一个上拉电阻,大小为10K;③STC89C51为高电平复位,SJA1000为低电平复位,二者必须有独立的复位电路;④物理总线的主节点和尾节点的CAN_H和CAN_L之间各需匹配上120欧姆的终端电阻。

2、软件部分的设计

程序设计主要包括测温程序和CAN总线通信程序。

测温程序的设计流程是DS18B20复位、ROM操作、存储器操作、启动温度转换并读取数据。所测得的温度数据是以16位带符号位扩展的二进制补码形式给出。程序设计关键是读取温度数据时的延时数值一定要准确,在规定的时序范围内才能准确读出每一位的值。

CAN总线通信程序的总体设计流程是:头文件中先定义好SJA1000的寄存器所在的物理地址,然后使SJA1000进入复位模式初始化各个寄存器,将温度数据形成报文装入发送缓冲区,调用发送子程序,等待接收中断并读取接收缓冲区数据,如果是主节点回复的确认帧则该节点,单片机进入低功耗模式,直到由主节点再发来命令报文唤醒。

程序流程图如下:

图4主程序的流程图

结语

本模块的功能是采集温度信息,并通过基于SJA1000的CAN总线网络将信息传输至其它节点。当各个从节点的温度数据异常时,主节点会实时准确地显示出该信息,进而进行管理或报警。本模块还可以进行传感器扩展和CAN网络扩展,根据实际需要只要在单片机端口接入其它传感器就可以用来采集相应的参数,同时如将终端节点的SJA1000通信程序改配置为CAN网关转发程序即可扩大CAN网络容量。CAN总线是非常有前途的工业级现场总线,本模块可以广泛应用于工业数据采集、车库安防等领域。

参考文献

[1] 饶运涛,邹继军,郑勇芸.现场总线应用技术丛书.北京:北京航空航天大学出版社,2003.

[2] 陈书旺,张秀清,董建彬.传感器应用及电路设计.北京:化学工业出版社,2008.

[3] Dallas Semiconductor.DS18B20 Programmable Resolution 1-Wire Digital thermometer.

推荐访问: 总线 传输 温度 检测 信息
[基于SJA1000实现温度检测信息的CAN总线传输]相关文章