基于STM32 的冷暖两联供控制系统设计
2023-11-10杨智显胡安杰刘东
杨智显,胡安杰,刘东
(西南科技大学土木工程与建筑学院,四川绵阳 621010)
随着社会发展和生活水平的提高,人们对人体舒适度的要求也越来越高。而体感温度又是人体舒适度中的重要一环[1],但在具体应用时,计算方法却不尽相同,没有统一的指标[2]。为此,提出了一种房间内平均温度作为体感温度的控制方法,实现对两联供系统的控制。采用热敏电阻器NTC(10 kΩ)测温[3],再通过处理器自带的AD 转换将采集到的模拟量转换为单片机能够处理的数字量[4-6]。整个系统以STM32F103C8T6 单片机为核心来完成数据的采集、处理、传输和监控[7],采用RS485 完成主控器与温控器之间的通信[8],完成了对风机盘管、地暖的温度控制,风机盘管的风速控制,地暖的进水控制以及露点温度检测和三通合流阀混水温度的调控等功能。
1 系统方案设计
基于STM32 的冷暖两联供控制系统总体设计如图1 所示,温控器和主控器的相同设计部分包括完成控制与信号处理的STM32 单片机模块、为系统供电的电源模块、进行温度测量的温度探头模块、完成相应空调末端启停控制的继电器模块以及两者之间进行数据交互的RS485 通信模块。两块控制器的不同设计模块分别是温控器包含对温度、功能模式进行设置的按键模块以及进行温湿度检测的温湿度检测模块。主控器包含对地暖管水温调控的三通阀模块。系统的主要工作流程:系统在供电状态下,使用者根据需求通过独立按键对单片机发送指令,温控器根据按键所对应的工作模式,判断当前实际温度是否在设定温度内,假设不在设定温度范围内,则STM32 发送指令控制实现对风机盘管和地暖这两个空调末端的继电器工作,实现温度调控、功能显示、房间内温湿度的检测以及通过对继电器的控制实现对风机盘管的风速调控。主控器的功能:一是根据温控器的启停状态去控制主机启停,二是根据露点温度必须低于水温1~2 ℃的条件,控制三通合流阀的开度大小实现对水温的控制。最后采用RS485 完成两者间的数据交互、功能联动。
图1 系统总体设计框图
2 硬件电路设计
2.1 单片机控制电路设计
主控芯片采用STM32F103C8T6 单片机,STM32系列单片机具有高性能、高速率、低成本、低功耗、高集成度、工具易用、可实现产品量产化等优点而得到广泛使用[9],且具有ADC、串口通信、PWM 输出和按键检测功能,支持外围设备DMA、温度传感器等[10],能够满足设计需求。
2.2 电源模块电路设计
电源模块的功能是为整个控制系统进行供电。供电部分的输入使用的市电220 V,因此为满足继电器的12 V 供电与三通阀的24 V 供电,采用了HLK-10M12 和HLK-20M24 将电压稳定在12 V 和24 V。其余模块以及控制芯片STM32 所需的5 V 和3.3 V 电压采用了MP1584[11]和AMS1117-3.3V 稳压器,可将市电降压后的12 V 与24 V 电压稳定在5 V 及3.3 V,且保证了电流输出。MP1584 的输出电压关系如式(1)所示。
其中,Vout为5 V 的输出电压,VFB为0.8 V,R16、R20为分压电阻,阻值分别为210、40.2 kΩ。
因此,根据整个电路的供电需求,电源模块电路设计如图2 所示。
图2 电源模块设计原理图
2.3 温度探头模块电路设计
温度探头主要功能是用于测量水管中的水温以及确定体感温度,采用的是NTC 热敏温度传感器探头。测温原理如下,NTC 热敏电阻[3](P1 座子外接)和精密电阻R29组成一个串联分压电路,通过分压公式(2)可以计算得出温度探头当前ADC通道电压值。
其中,VADC为ADC 通道的电压值,Vcc为温度探头的供电电压,取值为3.3 V,R29为分压电阻,阻值为4.7 kΩ,R探头为温度探头对应的阻值。
再使用STM32 单片机内部自带的12 位精度的高速ADC[10]进行数据采集,可以得到当前通道的ADC 值,根据式(3)可以得到温度探头在此刻的电阻值。
其中,X为当前单片机采集到的ADC 值,C为12位单片机对应的满量程ADC 值,C=212=4 096,R为分压电阻,取值为4.7 kΩ,R探头为温度探头对应的阻值。
计算得出温度探头的阻值之后,根据NTC 数据手册的阻温(R-T)映射表,可以得出当前阻值对应的空气温度,在该系统中,采用Matlab 对R-T表中的阻值-温度关系进行函数拟合,得到阻值与温度的函数关系如式(4)所示。
其中,T为当前温度探头测到的空气温度,R为当前温度探头的电阻值,由式(3)计算得出。
以上是一个温度探头的测温原理,在冷暖两联供控制系统中采用的体感温度即通过两个温度探头在房间内部不同点(如屋顶与墙面)测得不同的温度之后,通过式(5)求出两个温度探头的平均温度,以此体感温度作为房间的控制温度,不再直接采用单个温度传感器测得的空气温度作为控制温度,这是该系统相较于传统空调控制系统的一种改变。
其中,T为体感温度,T1为温度探头1 测得的空气温度,T2为温度探头2 测得的空气温度。
温度探头模块电路设计如图3 所示。
图3 温度探头模块设计原理图
2.4 三通阀模块电路设计
该模块电路设计的目的是实现对进入地暖管的混合水的温度进行控制,以保证混合水温度始终高于露点温度1~2 ℃。该模块采用了两种控制方法,一是通过PWM 改变占空比的方式控制输出电压,单片机的输出电压是0~3.3 V,在经过运算放大电路后,将电压放大三倍,最终控制电压为0~10 V,这是电压控制方式。另外还有电流控制方式,通过采用线性度比较好的精密电流输出变送器XTR111,输出4~20 mA 电流控制,在调试过程中受三通阀硬件限制,最终采用的是电压控制方式,三通阀模块电路设计如图4 所示。
图4 三通阀模块设计原理图
2.5 OLED显示模块电路设计
为了实现人机交互功能,选用OLED12864 液晶显示屏作为显示器件。OLED12864 液晶显示屏具有自发光功能且不需要背光源。OLED 显示模块具有4 种接口方式,可通过配置该模块的BS1/BS2 选择相应的接口方式,包括6800、8080的并行接口方式,4线的SPI 和IIC 的串行接口方式。该系统选择IIC 串行接口,即配置BS1 为1,BS2 为0[12]。其温控器显示电路设计与主控器显示电路设计一致,因此整个系统显示模块电路设计如图5 所示。
图5 OLED显示模块设计原理图
其中温控器的显示内容主要包括工作模式(制热、制冷、地暖、制热+地暖、制冷+地冷)、设定温度、体感温度(两个温度探头计算得出的平均温度)、地暖模式(高效、正常、节能)以及风速的显示。主控器的主要显示内容包括主机状态、露点温度、水温以及三通阀中进水管、回水管和混合水管中各自的水温。
2.6 继电器模块电路设计
继电器是一种具有隔离功能的自动开关元器件,大量运用于通信、电力系统、自动控制等电子设备中,是重要的电子控制元器件之一[13]。其主要特性是以小电流控制大电流,通过不同电子元器件和继电器的组合设计,并结合软件程序的控制,可以实现对继电器的通断控制[14]。
该系统使用的继电器采用δ路达林顿晶体管(ULN2803A)驱动,在继电器电路设计中,ULN2803A的COM 端和继电器(HK4100F)的VCC 端连接在一起,是为了利用ULN2803A 内部的续流保护二极管与继电器内部线圈并联起来,消除继电器闭合时产生的感应电压,实现保护。温控器模块中的继电器模块采用4 个输出回路实现对5 个控制对象的控制,根据按键模块切换对应功能,结合单片机控制实现对继电器I/O 口的高低电平进行变换,最终完成对控制对象的功能控制。其电路设计如图6所示。
图6 继电器模块电路设计原理图
2.7 RS485通信模块电路设计
RS485通信模块采用的通信芯片是MAX485ESA,作用是将RS485差分信号转换为单片机可识别的TTL电平信号。RO和DI分别为接收器的输出和驱动器的输入端,和DE 分别为接收和发送的使能端。为逻辑0时,选通RO,输出有效,器件处于接收状态;当DE为逻辑1时,选通DI数据输入有效[15]。为了方便控制,通常将、DE 两脚连在一起。高电平时,DI 脚的输入数据有效;低电平时,RO脚的输出数据有效,从而实现RS485通信[16]。其电路原理图如图7所示。
图7 RS485通信模块电路设计原理图
3 系统软件设计
系统软件实现部分使用Keil Uvision5 MDK 软件来编写C 语言程序代码,将编写生成的代码产生的.hex 文件通过ST-LINK 烧录到单片机中,以实现对整个电路板的控制[17]。冷暖两联供控制系统主要实现以下功能:温度探头温度的读取与处理,温湿度传感器数据读取与处理,风机盘管、地暖与主机的继电器通断控制,OLED 液晶显示屏数据的处理以及三通阀开度大小控制等。其温控器主程序流程图如图8所示。
图8 温控器主程序流程图
图8 所示的整个控制流程如下:系统在通电之后,首先进行系统初始化(包括ADC、串口、485 通信、DHT11、IIC、继电器以及OLED 显示屏初始化),初始化之后单片机首先检测按键返回值,有返回值表明有按键按下,无返回值表示无按键按下。在检测到按键返回值之后,确定按键对应的功能。按键确定任务之后,STM32 单片机通过自带的高速ADC采集温度探头测到的数据,再通过换算将测得的ADC 值转换为温度值,得到温度值之后根据工作模式,判断是否执行相应功能的控制程序。最后单片机将获取到的相关数据处理转换后,驱动OLED 液晶屏在对应位置上显示相关数据并执行相应工作任务直至任务完成。
4 结束语
针对空调空气温度控制时舒适度不高的问题,基于STM32 设计了体感温度控制的冷暖两联供控制系统。主要对系统的软硬件进行了设计,实现了对风机盘管、地暖这两个空调末端的智能控制。测试结果表明,该控制系统各功能模块能够成功运行,温度采集迅速、处理准确,能够完成对整个系统的控制。
综上所述,该控制器实现了设计目标的智能化控制,提高了空调末端的温控水平,具有一定的实际应用价值。