基于CAN总线的多点温度采集系统设计
2015-07-02何步职高惠芳李小龙
何步职 高惠芳 李小龙
摘 要:提出以STM32F103单片机、DS18B20温度传感器、上位机温度显示组成的温度采集系统,阐述了整个系统的硬件构成、软件设计等。最终结果表明,基于CAN总线的温度采集系统具有结构简易,稳定可靠的特点。
关键词:CAN总线;温度测量;STM32F103单片机;DS18B20温度传感器
中图分类号:TP274 文献标识码:A 文章编号:2095-1302(2015)06-00-02
0 引 言
数据采集系统是工农业生产的重中之重,温度信息更是与人们的日常生活息息相关。以485总线为通信方式的采集系统是市场的主流,但是却存在组网能力差、传输速率低、可靠性不高等的缺点。因此,需要研发可以满足远距离传输与控制要求并具有良好网络通讯能力的温度采集系统以满足时代发展需求。
控制器局域网络CAN(Controller Area Network)是一种能有效支持实时控制和分布式控制的串行通信网络,将CAN总线技术运用于温度采集系统中,不仅可以降低误码传送率,还可提高系统内部的通信实时性。因此,基于CAN总线设计的温度采集系统具有组网能力强、传输快、可靠性高等优点[1]。
1 系统总体结构
CAN总线技术作为一种成本合理、可靠的、先进的、功能完善的远程通讯方式正在被广泛运用,将CAN总线运用于温度采集系统非常具有现实意义。本文设计了一种基于CAN总线的多点温度采集系统,该系统以STM32F103作为中央处理器,用3个温度传感器DS18B20获取3个点的温度并传递到主机系统进行显示,CAN总线被作为主机与从机之间的通信介质。通过上位机预设高临界、低温度值使得在此范围之外的温度会导致系统报警;TJA1050完成单片机与CAN总线的通信。本系统设计原理如图1所示。
2 系统硬件电路设计
主机部分和从机部分是基于CAN总线的温度采集系统设计的两大模块。主机部分由MCU主控单片机、仿真下载、RESET复位、串口、CAN收发器、时钟电路、SB转串口等组成;从机部分主要由MCU主控单片机、时钟电路、仿真下载、RESET复位、DS18B20温度传感器等组成。整个系统的结构框图如图2所示。
图1 系统设计原理图
图2 系统的结构框图
本系统所采用的控制芯片是STM32F103C8T6,它的优点是功耗低、管脚数量少,成本低。32字节的存储器可以满足存储程序和数据的要求;有外部中断与内部中断两种中断方式;外部中断控制器可通过19路触发器产生外部中断请求,内部中断控制器完成43路中断;内部自带CAN控制器;STM32F103满足CAN2.0A/B协议[2],具备输入输出口,大部分管脚具有数模转换功能的特性,并且输出、输入、外围电路转换等功能均可通过GPIO口利用软件来实现。
DS18B20具备宽泛的电压范围使其不仅可以连接外部电源,还可与硬件连接作为寄生电源,具备-55°C~+125°C广泛的温度测量范围,然而它之所以具备如此强大的市场竞争力却是由于其在-10°C~+85°C之间的精度为0.5°C。单总线接口方式使其运用起来十分方便,仅需要一根线便可实现双向通讯,将多个传感器并用于一个系统中,组成一个可快速将温度转化为数字的网络。
CAN总线收发器TJA1050遵从ISO 11898(国际标准)标准,其优势是速率高并具有电磁兼容性[3]。最高达到1 Mb/s,这可以使信息传输速率大大提升,并且可以通过连接110个以上的节点特征将各个温度节点进行组网,满足收集不同区域多个温度节点信息的要求。
CH340G在本系统中被用作一个USB转串口的工具,它具有全速USB接口,并且兼容USB2.0,CH340的驱动程序能够仿真标准串口,因此与绝大部分应用程序完全兼容[4]。本系统中用于主机系统STM32单片机与PC机之间的连接,使用目的是保证主机系统正常与PC机连接。硬件全双工串口,支持波特率100 b/s~3 Mb/s的特点可以与CAN协议完美结合。
3 系统软件设计
系统软件主要由主机软件、从机软件2部分构成。以下将分别介绍这两部分的程序流程图与主要功能。
3.1 主机软件设计
主机程序的功能是:主机模块读取CAN总线上传的温度信息并传送到PC机中,在读取到温度信息时刷新温度显示,并在检测到报警值修改后发送报警值修改命令。主机软件设计流程如图3所示。
图3 主机软件设计流程
3.2 从机软件设计
从机系统的功能是:采集DS18B20温度传感器的温度信息,并将所读取到的温度通过CAN总线传输到主机系统中,并且在收到报警设定命令时重新设定温度报警值。从机软件设计流程图如图4所示。
图4 从机软件设计流程图
4 系统测试
3路温度实时显示与26°C超温报警是本系统的两个主要技术指标。图5是温度显示的测试界面。接收与发送均采用ASCII形式,并且串口通信波特率为9 600。
从图5可知在测试环境温度25°C下,3个温度传感器分别显示的温度为24.50°C、25.87°C、25.68°C,由于3个温度传感器存在细微差异,因此所测温度略有不同。对传感器2、传感器3进行升温,在温度超过26°C后马上出现报警提示。测试结果表明:本系统所设计的温度传感器误差较小,并且报警功能较为灵敏。
图5 温度显示测试界面
5 结 语
采用内置CAN总线的STM32单片机与高精度显示温度传感器DS18B20结合而设计的基于CAN总线的温度采集系统具有体积小、功耗低、集成度高、准确性较高等优点。实际调试结果表明该温度传感器不仅可以对3路温度实时显示,并且具备超温报警功能,在工农业生产等方面均有较大价值。
参考文献
[1] 王毅峰,温希东.基于 CAN 总线的智能控制器的设计[J].仪表技术与传感器,2006(4):32-34.
[2] 陈志旺,等.STM32 嵌入式微控制器快速上手 [M].北京:电子工业出版社,2012.
[3] 覃磊,张杰.基于ZigBee技术的煤矿瓦斯监测系统[J].计量与测试技术,2007,34(1):18-20.
[4] 聂海峰,李靖,孙茂华.基于USB接口微波湿度计地面检测系统的实现[J].微计算机信息,2006,22(17):1-3.