小编总结了一个基于STM32和CAN总线的温度监控系统的设计。 通过上位机与下位机的通信,实现了温度数据的监测,通过初步实验,满足设计要求。
1 系统总体方案概述
系统总体框图如图1所示。本系统采用主站+从站的结构。 CAN主站主要实现温度数据的存储以及CAN总线协议与串口协议的桥接,CAN从站主要实现温度采集。 CAN从站采集到的温度通过CAN总线传输到CAN主站,主站将各从站的温度值传输到系统上位机。 上位机以实时曲线方式显示并存储各点数据,上位机可设置报警值。 当节点温度超过设定值时,上位机将发出报警声音。 在没有上位机的情况下,主站将数据以文本文件的形式存储在主站的SD卡中。
图1 系统总体框图
2 系统硬件设计
2.1 CAN主站硬件设计
主站电路如图2所示,主要包括电源模块、STM32模块、CAN收发模块、RS232串口模块和SD卡模块。
其中,STM32模块由外设时钟、复位、调试等部分组成,电源模块从外部输入+5V电压,经过-3.3V的线性压降后供STM32使用。 CAN收发模块采用NXP的高速收发器,是最好的替代品。 完全符合标准,具有高速、低功耗、低电磁辐射等优点。 采用RS232电平转换芯片,具有低功耗、高数据速率、增强ESD保护等特点。 利用专有的低压差发送输出级和内部双电荷泵,保证 +3.0V 至 +5.5V 电源的 RS-232 性能。 在工作中,电荷泵仅需要四个 100nF 的小电容器。 SD卡模块与SD卡采用四线SPI总线连接。
2.2 CAN从站硬件设计
从站电路如图3所示,主要包括电源模块、STM32模块、CAN收发模块、PT100模块和从站地址选择模块。
图2 CAN主站电路图 图3 CAN从站电路图
其中电源模块、STM32模块、CAN收发模块与CAN主站相同。 PT100模块使用传感器来测量电桥。 为了保证电桥输出电压信号的稳定,通过TL431将电桥的输入电压稳定在2.5V。 从电桥得到的差分信号经过两级运算放大器放大后输入到STM32的AD输入端口。 从站地址选择模块由8位拨码开关组成,连接到/O的PC6-PC13。
3 系统软件设计
系统软件由CAN主站软件、从站软件和上位机软件组成。 其中CAN主站和从站程序采用C语言编写,上位机程序采用C语言编写。
3.1 CAN主站软件设计
CAN主站的功能是发送远程帧向从站查询数据,通过AD转换结果计算出芯片内部温度传感器的温度值,接收从站发送的数据帧,发送温度数据传输至上位机或将数据存储至SD卡。 CAN主站程序如图4所示。
图3 CAN主站程序流程图 图5 写入SD卡程序流程图
写入SD卡部分的程序流程图如图5所示。SD卡部分主要使用移植的FATFS文件系统提供的访问FAT卷的应用程序接口()。 主要用到以下几个函数:
·- 注册/注销工作区
·- 打开/创建文件
·- 关闭文件
·- 移动/写入指针,扩展文件大小
·- 写入字符串
·- 写入格式字符串
3.2 CAN从站软件设计
CAN从站的主要功能是通过AD转换器检测PT100电桥的差分输出电压,然后计算出该节点的温度值,最后通过CAN总线发送给CAN主站。 其中,只有当CAN从站接收到与自己节点号相同的主站发送的远程帧时,从站的CAN控制器才会发出数据帧。 CAN从站程序流程图如图6所示。
图6 CAN从站程序流程图 图实时曲线部分流程图
3.3 上位机软件设计
上位机软件主要实现五个功能:实时曲线显示各从节点当前温度; 打印实时曲线; 将实时曲线保存为图片; 将实时曲线数据保存为TXT文件,当实时温度超过报警值时发出报警。
本系统的上位机串行通信控件采用,该控件具有丰富的与串行通信密切相关的属性和事件,支持多线程; 提供对串口的各种操作。 图形控件使用的是标准图形显示控件。 它可以静态设计()或动态生成。 系统设计中使用的版本是; 实时曲线部分流程图如图7所示。上位机程序完成后界面如图8所示。
图7 上位机界面
4。结论
介绍了基于STM32和CAN总线的温度监测系统的设计。 初步实验证明上述硬件和软件设计基本满足设计要求。 该系统适用于多节点、长距离的场合,具有实时性好、可靠性高的特点,具有一定的应用价值。