APP下载

基于STM32的设备温度监控系统的设计与实现

2020-05-12李玉秋章晓忠吴玲玲

商丘师范学院学报 2020年6期
关键词:管脚温度传感器校验

李玉秋,章晓忠,吴玲玲

(亳州职业技术学院,安徽 亳州236800)

温度和人们生活生产息息相关,在大型仓储、温室大棚、电子设备等领域温度监控有着重要的意义[1].例如电子设备有一定的工作温度范围,温度过高会影响正常使用该设备,甚至损坏设备.本文利用嵌入式技术和传感器技术等,设计了基于STM32F103的设备温度监测与控制系统,控制芯片收集测量结果,处理后发出相应控制指令,完成对设备的温度实时监测和有效的降温处理.

1 系统设计

图1 系统运行框图

系统由多点温度传感器采集设备的热源温度,送主控芯片处理,主控芯片由温度数据和风扇转速然后计算出新的转速控制风扇的运转速度,对设备进行降温处理.运行结构由主控芯片、散热模块(散热器、风扇)、温度传感器等组成,整个系统形成一个闭环结构,最终实现给设备的热源进行降温处理,并维持一个动态平衡.运行框图如1所示.

2 系统硬件设计

本设计硬件电路主要由主控芯片STM32F103模块,温度传感器DS18B20模块、散热风扇控制模块、电源模块等组成.工作原理为采用三组温度传感器去监视设备热源三个点的温度,控制芯片综合三个温度点的信息,来判断设备目前的状态,根据采样温度的范围调整风扇的转速,任何一组数据失效(比如温度异常或者传感器失效),系统都会进行告警关机处理,避免损害设备.

2.1 控制芯片

主控芯片采用STM32F103C8T6,ARM Cortex-M 内核的32位微控制器,多种低功耗工作模式,丰富的I/O端口,工作电压2~3.6 V,最高工作频率76 MHz.完成温度的数据处理,降温控制及报警指示等功能[2].系统部分硬件电路如图2所示.

图2 系统硬件电路图

2.2 温度采集模块

常用的温度传感器有热敏电阻和温度传感器集成模块,热敏电阻成本低,但是在使用时需要标定.对比选用集成数字温度传感器DS18B20,该器件自带A/D转换器,8位CRC生成器校验传输数据的正确与否,不需要外围器件节省硬件开销,单线接口方式使测量温度的结果直接转换成数字信号从DQ送单片机处理[3].DS18B20内部光刻ROM中64位序列号可以看做每个温度传感器地址码,可以并联组网,实现“一线总线”传输.

本设计采集三个不同点的温度数值送STM32处理,依次比较三个温度值,找到其中最大值a,再次比较三个温度值,找到其中最小值c,然后最大值a减去最小值c,得到之间差值(a-c).

如果差值大于某个限定值或者三组温度点的最小值小于限制值,板子上故障灯会闪烁.由于是同一热源,测试的是三个位置不同的温度点,所以三组温度不可能相差很大;若其中一个或多个温度相差较大,则有故障产生,可能散热器或温度传感器异常.

温度传感器每3 s读取一次,累计读,三个温度传感器都是一样处理,以防止第一次初始化的时候数值不正确导致误动作.如果读出的数据异常,这个值会引起故障灯的闪烁,表明温度传感器的异常;若是这个温度在设定的范围内,依据温度的大小,调整冷却风扇的转速.同时取出来的温度值都会和给定的温度报警值比较,只要其中一个值大于温度报警值,控制芯片做出相应的处理[4].

2.3 电路电源

系统供电由电源适配器把220 VAC转24 VDC的电源经过LM2576稳压滤波后输出.风扇和温度传感器的电源分别是12 V和5 V电压,控制芯片用3.3 V电压供电.LM2576是开关型集成稳压电源,具有较强的电流驱动能力和可靠的工作性能,是线性三端稳压电源的替代品.

2.4 散热风扇

散热风扇采用4PIN封装,四个引脚分别是GND、电源12 V,转速侦测、风扇控制.STM32 用定时器功能输出pwm直接连电扇的控制脚,对其进行转速控制[5].

3 系统软件设计

软件部分采用C语言编译,软件编译环境keil5,(备注:keil软件工具版本过低的话是无法编译上面型号的芯片),烧写工具JLink,采用的是SWD方式烧写.

3.1 温度采集及处理模块

控制芯片通过一线制接口读取三个不同点的DS18B20温度数据,每次读9位数据,8位数据+1位校验位.控制芯片对8位温度数据进行CRC校验,得到的CRC校验和从DS18B20寄存器读出来的CRC校验进行比较;如果不一致,代表此次温度读取出错,累计错误次数为tempCRCerrorCount,连续读错6次,即可视为传感器损坏.为防止温度异常损坏设备,控制芯片启动报警关机流程,错误信息写入EEPROM生成日志信息,方便后期维护.如果在连续6次读取过程中,有一次CRC校验数据为正确,即可认为传感器正常,清零tempCRCerrorCount计数.温度过温值和风扇个数以及风扇初始值可动态设置,设置生效后,数值存入EEPROM中,程序在初始化时候读取相应参数进行逻辑判断.部分模块程序如下:

if(readTempCount%4==3){

enviro_ReadTempValue();

tempDataCRCResult

enviro_CRCVerifyMultiBytes(ds18b20TempData,9);

//dbmsg_ftrace(DBM_ALWAYS,

“tempDataCRCResult=%u ”,tempDataCRCResult);

if(tempDataCRCResult > 0)

{

tempCRCerrorCount++;

}

if(tempCRCerrorCount>=6){

isOverTemp=TRUE;

tempCRCerrorCount=0;

}

if(tempDataCRCResult == 0)

{

enviro_TempHandle((uint08)tempDataValue);

tempCRCerrorCount=0;

//dbmsg_ftrace(DBM_ALWAYS,

“TempData=%u ”,(uint08)tempDataValue);

}

}

3.2 风扇检测处理模块

实际工作中,风扇的存在也至关重要,其中一个风扇故障不工作,都会造成散热器构不成风道,使整个设备不具备散热的能力,所以STM32必须时刻监视风扇的运行状况.一旦检测其中一个风扇停转,主机进报警管脚流程,错误信息写入EEPROM生成日志信息,方便后期维护.控制芯片通过采集的温度数据,依据温度对风扇进行分级处理,风扇转速随着温度变化(Δt)进行风扇调节(默认风扇转速(Δt)和温度变化(Δt)是线性关系).公式如下:

Speed(调速后风扇转速)= speed(初始转速50)+(Δt)*系数,其中系数由实际的转速和温度线性关系生成.把风扇转速等级划分为100份,风扇最低转速为50,最高转速为100.依据上述操作即可实现风扇跟随温度变化而改变转速.风扇有转速反馈脚,可通过实时检测管脚,确认风扇运行状态,如果风扇检测管脚为0,表示风扇此时不在运行状态,为避免损坏设备,主机进报警管脚流程,错误信息写入EEPROM生成日志信息,方便后期维护.系统流程图如图3所示.

图3 系统流程图

4 结 语

通过设备温度监测与散热系统,完成了对设备的温度实时监测和降温处理.测试过程中风扇转速过快会造成噪音问题,风扇转速过慢难以实现风扇降温的目的,通过软件设计一个动态平衡的局面,既能稳定降温,又达到减小噪音的效果,具有较好的实用性.

猜你喜欢

管脚温度传感器校验
气象用温度传感器检定结果的测量不确定度评定与应用
使用Excel朗读功能校验工作表中的数据
面向DSP+FPGA通用处理架构检测的硬件系统设计
温度传感器DS18B20在温度计设计中的应用
一种高性能CMOS温度传感器
一种异步FIFO的Read/Write Data Flow Through功能测试方法∗
XTR105电流变送器在温度传感器中的应用
炉温均匀性校验在铸锻企业的应用
电子式互感器校验方式研究
基于图像处理的异型电子元器件管脚偏移误差检测方法研究