APP下载

基于FreeRTOS的物联网温度监测系统

2022-11-10郭富恒贺媛媛

智能物联技术 2022年2期
关键词:电路设计模组测温

郭富恒,贺媛媛

(1.山东理工大学 计算机科学与技术学院,山东 淄博 255022;2.山东理工大学 电气与电子工程学院,山东 淄博 255022)

0 引言

温度是人们日常生活中的一个基本物理量,也是工业生产控制领域非常重要的变量之一。随着社会和科技的发展,测量温度的方式方法日益新颖,包含了接触式测温及非接触式测温等,温度传感器获取的数据越来越精准。利用传统的铂电阻温度探头作为获取温度的传感器,不仅设计成本低、性能可靠,还能够根据工程需求选择不同的精确度。

本文基于MQTT物联网协议设计了一种测温系统,搭载了FreeRTOS嵌入式操作系统,保证系统运行更加稳定;控制器选用ST公司的STM32F103C8T6,包含三个串口,两路IIC及两路SPI总线,采用M3内核,支持搭载嵌入式操作系统使用;通信模组选用合宙的Air724UG,其数据传输速率最大为480Mbps。该系统解决了常规测温系统数据实时性差、精准度低的问题,使用户能够远程、便捷获取当前测温点温度值。

1 电路设计

1.1 降压电路设计

由于输入电源为3S锂电,电压峰值约为12.6V,STM32F103C8T6为3.3V供电,Air724UG为4V供电,考虑到后期开发升级,还需要5V的电压。因此共设计了12V降压5V电路、5V降压3.3V电路和5V降压4.1V电路。

1.1.1 12V降压5V电路

降压芯片选用TPS54360,具有集成型高侧MOSFET的60V、3.5A降压稳压器。允许输入范围4.5V~60V,最高可支持65V输入;具有3.5A持续电流、4.5A最低峰值电感器电流限制。

RP可调电阻根据实际电压值进行调节;其中FB引脚为反馈端,也是跨导误差放大器的反相输入端。电路设计如图1所示。

图1 12V降压5V电路Figure1 12V step-down 5V circuit

1.1.2 5V降压3.3V电路

采用AMS1117-3.3V芯片,电路设计简单。Vin引脚输入5V电压,Vout引脚输出3.3V电压,同时在输入输出端放置滤波电容。电路设计如图2所示。

图2 5V降压3.3V电路Figure2 5V step-down 3.3V circuit

1.1.3 5V降压4.1V电路

由于Air724UG4G通信模组的第59和60号VBAT引脚需要4V电压的输入,故还需设计5V降压4.1V的电路来提供4V电源。本文采用合宙官方的降压方案,采用MIC29302芯片,共有6引脚,其中1和2引脚EN和IN为5V电压输入,3和6号引脚GND和TAB直接接地拉低,4号OUT引脚为4.1V稳压输出端,5号FB引脚为反馈引脚。电路设计如图3所示,其中输出电压计算公式为:

图3 5V降压4.1V电路Figure3 5V step-down 4.1V circuit

其中R38=200K,R39=33K,R37=100K,所以输出电压为:

1.2 测温电路设计

采用PT100铂电阻温度传感器获取温度值。其测温探头采用压簧式感温元件,抗震性能好;与其他热电阻相比,不需要进行温度补偿,能够节省成本。PT100分为A和B两个等级,测量范围在-200℃~850℃,其中A级精度为(0.15±0.002)℃,B级精度为(0.30±0.005)℃;采用进口Mobox电阻元件,性能可靠稳定、机械强度高,耐压性能好。PT100分为二线、三线、四线种类,每个种类引出的线数不同,应用场景也不同。由于此次对温度要求不高,故采用二线制。

为配合PT100铂电阻,加入MAX31865来读取和转换PT100测量的温度值。其内部集成了更低系统功耗且兼容二线、三线、四线的传感器,同时具有SPI(Serial Peripheral Interface)兼容接口;15位ADC分辨率,温度分辨率为0.03125℃,在整个工作条件下能够保持0.5℃的总精度;内部还集成了RTD开路、RTD短路及RTD元件短路的故障检测。

测温电路设计如图4所示,其中JP2端子为二线制PT100铂电阻连接端子,MAX31865的第11、12、13、14号引脚SDI、SCLK、CS、SDO分别与单片机相连接(按照程序),第19、20号DVDD、VDD引脚为3.3V输入端,需要在输入端加入100nF的滤波电容。

图4 PT100测温电路Figure4 PT100 temperature measuring circuit

2 系统配置

2.1 串口配置

Air724UG通信模组与单片机通过串口进行通信,考虑到后期可能进行开发升级,配置C8T6串口时,将串口1与TTL相连,串口2与Air724UG相连。

2.2 嵌入式系统配置

由于单片机在与4G模组通信时会通过串口传输大量的数据量,且程序裸跑极易造成程序跑飞,故加入嵌入式系统(FreeRTOS、RT-thread等)来监控程序的运行状态,在确保程序稳定的情况下也能保证串口数据传输的准确性。为兼容控制器STM32F103C8T6,本系统选用内核为M3的FreeRTOS嵌入式操作系统。

3 程序设计

3.1 通信模组连接

Air724UG与单片机通过串口进行通信,并通过相关AT指令进行操作。编写air_send_cmd()函数通过串口进行AT指令的发送,通过air_check_cmd()函数进行串口接收的应答判断。其他函数,如air_poweron()函数为Air724UG的软启动 函 数,air_aliot_init()函数为Air724UG配置MQTT协议及连接阿里云函数。

其中Air724UG软启动函数代码如下:

当变量res为0时,系统进入循环,通过串口向模块发送相应AT指令,当判断接收到理想的应答时res置1,系统退出循环;当没有判断接收到理想的应答时res=0,继续发送AT指令直至判断接收到理想的应答。

3.2 温度数据处理

由于PT100输出的是电阻信号,需要MAX31865进行数据转换,将电阻信号转换为数字量的电阻值,但转换后的值还需要程序端进行计算,得到数字量的温度值。

利用公式:R(T)=R0{1+aT+bT2+c(T-100)T3}进行计算。其中T表示温度值,R(T)表示T温度对应的阻值,R0表示0℃对应的阻值;

规 定a=3.90830*10-3,b=-5.77500*10-7;当-200℃≤T≤0℃时,c=-4.18301*10-12;当0℃≤T≤850℃时,c=0。当温度T≤0℃时,温度曲线为非线性曲线,当温度T≥0℃时,温度曲线为线性曲线。

具体代码如下:

其中RREF_In与PT100的型号有关,二线、三线制的PT100铂电阻的参数RREF_In=430;通过MAX31865_Read_In()函数读取MAX31865特定地址下的数值,其温度值存储在0×01及0×02,利用位操作即可获得当前PT100的电阻值,再通过数学计算得到当前电阻值对应的温度值,最终返回temp温度值。

3.3 SD卡数据存储

考虑到4G通信在受干扰时可能造成数据的丢失,于是在硬件上加入SD卡来实时存储数据,在通信数据丢失的情况下也可通过查询本地数据进行数据恢复。在程序设计时就需要对SD卡进行操作。

温度值写入SD卡部分代码如下:

每扇区的字节数必须为512,因为如果不是512,则初始化不能通过。当返回值为0时,代表去除容量出错。返回值为非0时,代表SD卡的容量(扇区数/512字节)。当SD卡为SDHC卡时,再通过CSD数组判断SD卡版本,进而进行扇区计算。

4 结语

系统搭建完成,通电后会自动进行温度的获取、处理、服务器连接等一系列操作。经过一段时间的运行测试,系统稳定运行,且不会出现崩溃的情况。当系统成功连接服务器后,数据会通过通信模组发送至服务器端,用户即可在移动端看到当前测温点的温度数据,如图5所示。在服务器断开连接后,程序会实现自动重连功能。

图5 移动端数据展示Figure 5 Mobile terminal data display

猜你喜欢

电路设计模组测温
智能防疫测温机器人朔州“上岗”
移远通信:以利润换市场
肯尼亚:测温枪需及时校准
基于Multisim的单管共射放大电路设计与仿真分析
一种车用醉驾检测电路设计
基于融合架构的多路服务器系统架构设计
Altium Designer在电路设计中的应用
负反馈放大电路设计
浅谈石墨烯材料在LED路灯模组中的应用及该模组的设计
高速CCD像机的测温系统标定方法