基于物联网技术的太阳能热水器控制系统
2022-09-19李星月郎佳红郑诗程
彭 杰,李星月,郎佳红,郑诗程
(安徽工业大学 电力电子与运动控制重点实验室,安徽 马鞍山 243002)
0 引 言
随着社会的快速发展,生产生活中对于能源的需求越来越大,用户对于生活质量的要求也越来越高。目前,市面上的太阳能热水器盈千累万,但大多容易出现数据采集有误、监控有效范围过短、上水量控制不合理等问题。本文为解决此类问题设计了一种基于STM32的太阳能热水器控制系统。以STM32为主控制芯片,结合其他硬件电路和设计完成对太阳能热水器的本地监控和远程监控,其中本地监控模块采用MCGS为系统的人机交互界面,能够向用户传达信息。远程监控采用GPRS模块与用户的手机或电脑连接,使用户在各个地方都能对系统进行监控。整个系统优化了传感器的选取,同时与物联网技术结合,有针对性地解决了传统控制系统中的不足,使用户能够随时随地查看热水器的状态并进行操控,满足了用户需求,节省了更多能源,提升了用户体验。
1 系统方案设计及硬件选择
1.1 总体设计
系统是由主控制器、传感器、电辅热装置、上水控制装置、GPRS通信模块、云服务平台、本地监控和远程监控端组成。其中,电辅热装置和上水控制装置由继电器和执行器组成,执行器分别为加热棒和电磁水阀。本地监控端通过MCGS触摸屏来实现监控,远程监控端则是使用PC机实现监控。
通过单总线技术实现STM32与外部传感器的通信,并把从温度传感器和液位传感器得到的水温和水位转换成可传输的电信号,再将电信号传输给核心主控制模块,主控制模块对接收的数据进行加工、处理和显示。通过RS 485通信电路将数据传输给MCGS触摸屏。MCGS触摸屏会显示出采集到的实时水温和水位,用户可以直接在触摸屏上进行简单的操作。在执行器模块设计中,当水位采集值低于设定值时,主控制器会做出相应动作,使得继电器和电磁水阀通电开始工作,直至达到用户设定的理想水位;当水位采集值高于设定值时,主控制器会做出相应动作,使得继电器和电磁水阀断电停止工作,即已实现用户的需求时就不再进行上水。同理,由于控制电路和继电器的选择相同,则加热棒的工作情况也与上述相同。温度传感器和液位传感器在断电后会自动保存数据,这一功能使得用户设置的参数会保留在单片机的存储空间中,这种“记忆功能”方便了用户再次通电使用。系统中加入了GPRS通信模块,主控制器通过GPRS通信模块将数据传输至云服务平台,云服务平台与电脑监控端相连接,方便用户对系统进行控制。监控系统还具备定时功能,用户可以根据需求设置加热和上水的时间。本文设计的智能控制系统结构如图1所示。本系统弥补了传统控制系统数据测量不精确、智能化水平不高等不足,不仅可以给用户的生活带来极大的便利,而且也使用户的生活环境更加惬意和安全。
图1 太阳能热水器系统结构
1.2 主控制模块
主控制器作为控制和模块协调的中枢,其选择必须面面俱到。对现有系统的发展需求进行分析,设计了两个USART接口分别实现本地和远程监控,1个A/D口实现水位检测,以及1个单总线和多个I/O口实现更多功能。此外,还需要对用户的使用数据进行记录和处理。综合上述要求,选定STM32F103ZET6作为本系统的主控制器。
1.3 温度传感器模块
本系统需要对水温进行精确测量,其水温范围约为0~100 ℃。因此,选定DS18B20作为本系统的温度测量模块。DS18B20是一种单总线接口的数字化温度传感器,遵循单总线通信协议。通过STM32单片机的通用GPIO引脚来实现与温度传感器的通信,并把从温度传感器得到的数据传输到显示屏上。
DS18B20内部结构框图如图2所示,图中ROM的64位序列号是DS18B20的地址序列码,因此一条总线上可以同时挂接多个DS18B20,不会出现混乱现象。此外,用户可以根据需求自定义非易失性温度报警上限值TH和下限值TL,断电后此数据依旧被保存。当DS18B20完成测温后,所测数值会自动与用户设定的TH和TL的触发值相比较,如果测温结果不在设定值范围内,DS18B20内部的告警标志就会被置位,表示温度值超出了设定范围。
图2 DS18B20内部结构框图
1.4 液位传感器
本系统的压力传感器选用的是KY系列压力传感器,在STM32单片机的控制下,模拟量通过A/D转换,可以保证采集到的数据有较高的精度。
压力传感器的应用电路如图3所示,它采用的是硅压阻式差压压力芯体,P-out端口的输出电压与检测口处的压强呈正比例线性关系。根据帕斯卡定律,液体内部压强与液体深度有关。因此将检测口放于水箱底部,通过测量P-out端口的输出电压,即可计算出水箱水位。使用前须将检测口放置在太阳能热水器蓄水箱底端,导气管高于水箱顶部,这样当液面高于检测口时,测量点处的压强即为液体压强。使用时VCC端口接5 V的电压,GND端口接5 V所对应的GND,P-out端口接控制器的A/D引脚,通过对该引脚的电压进行采样转换即可得出水箱的水位。
图3 压力传感器电路
1.5 电辅热模块和上水控制模块
本系统的执行器模块设计包括电辅热模块和上水控制模块。电辅热模块包含继电器和电加热棒,上水控制模块包含继电器和电磁水阀。继电器是具有隔离功能的“自动开关”元件,是实现外部设备控制的主要手段,因此继电器的有效控制是执行器模块安全稳定运行的保证。本系统通过分析电加热棒和电磁水阀的功率,最终选用了HRS4H-S-DC12 V型继电器。主控制器通过继电器驱动电路实现对继电器的控制,从而达到加热、上水和停止执行的目的。
继电器驱动电路如图4所示,结合电路图介绍执行加热动作的工作过程。图中的SIGNAL-IN1连接主控制器的PB3口,执行器为电加热棒。当需要打开加热开关时,控制器使该I/O口输出高电平信号,此时MC1413输入引脚4脚为高电平,输出引脚13脚为低电平,继电器K2通电吸合,使得继电器输出侧2A和2B导通,输出回路中的加热棒通电工作,系统开始对水箱中的水进行加热,同时指示灯LED6发光。当加热到指定值时,控制器使PB3口输出低电平,MC1413的13脚输出为高电平,继电器断电释放,电加热棒断电停止工作,加热动作结束。
图4 继电器驱动电路
上水与加热的控制电路原理与继电器驱动电路原理相同,两个继电器都选择了MC1413进行控制,仅仅是执行器的不同,由电加热棒换成了电磁水阀。本方案选用的电磁水阀是AC 220 V常闭铜电磁水阀。当接入220 V交流电时开关开启,断电时开关闭合,分别执行相应动作。为防止加热棒在水中腐蚀过快,选择的加热棒是经久耐用的AC 220 V整体防水加热管,其正常工作时的功率为1 000 W。所选的HRS4H-S-DC 12 V型继电器输出侧最高可承受2 500 W功率,即所选加热棒正常工作时的功率在继电器可承受的功率范围内。
1.6 通信模块设计
本系统设计两个通信模块,实现本地监控和远程监控。选用RS 485实现本地监控,主控制器通过RS 485与本地客户端完成数据交互,RS 485的连接方式如图5所示。远程监控是让控制器与SIM800C模块相连接,将SIM800C作为传 输中介来实现与远程监控客户端的数据交互。
图5 RS 485连接
RS 485串口通信电路如图6所示。从图6可以看出:STM32单片机采用SP3485作为收发器,A、B接口用于连接485总线;通过STM32F1的PD7控制SP3485的收发,当PD7=0时为接收模式,当PD7=1时为发送模式。两个偏置电阻用来保证总线空闲时,A、B之间的电压差都大于200 mV,从而避免因总线空闲引起的A和B压差不定、逻辑错乱以及出现乱码的现象。USART2 TX和USART2 RX分别与主控制器的PA2、PA3相连。控制器输出的TTL电平通过SP3485芯片转成了485电平,485电平信号通过RS 485串口线可被MCGS或其他设备接收。同样地,由MCGS或其他设备发出的485电平也可通过该芯片转换为控制器可识别的TTL电平,从而实现主控制器与其他监控设备的数据交换。
图6 RS 485串口通信电路
SIM800C通信模块采用高性能工业级GPRS开发板,可以在低功耗的情况下实现与远程监控客户端的数据交互,其电路原理如图7所示。
图7 SIM800C模块原理
使用时需要插入一张SIM卡,明确远程客户端的IP地址后,主控制器通过串口发送AT指令,此时模块向远程客户端的IP地址发送数据,远程客户端的TCP服务器在接收到数据后将其转化为可视数据显现给用户。同时,远程客户端也可以向SIM卡反馈指令,SIM800C接收到指令后将其转送到主控制器,主控制器解析控制指令并做出响应。此外,系统能够根据需求随时开启或暂停SIM800C通信模块。
2 系统软件设计
2.1 主程序流程
在主循环程序中,首先完成主控制器与客户端的自动配网,实现信息交互。然后,对传感器模块的子程序进行调用,读取检测实时数据。根据采集到的数据判断系统工作状态有无异常,若有异常,则跳转至异常状态处理子程序;若无异常,则判断是否接收到控制指令。本地监控端和远程监控端均可对系统发出控制指令,若接收到控制指令,则响应相应指令;若没有接收到控制指令,则继续执行执行器子程序,让系统处于正常的工作状态。联网后,不断调用数据显示子程序,并让主程序一直处于循环状态,将有效数据可视化地通过本地监控端和远程监控端呈现给用户,其流程如图8所示。
图8 主程序流程
2.2 执行器子程序
执行器子程序包括控制上水和加热动作的操作过程。由于两者的执行过程大致相同,下面仅以加热动作为例,介绍执行器子程序的运行流程,其流程如图9所示。
图9 加热流程
将检测到的实时温度值与设定温度值进行比较,当实时温度值高于或等于设定温度值时,主控制器通过驱动电路控制继电器断电,加热棒电源被断开,加热停止;当实时温度值低于设定温度值时,判断系统是否处于可以进行加热的状态,即判断当前水箱中的水位是否达到可加热水位下限值,防止出现干烧的情况。若水位过低,则控制器向客户端发出低水位告警指令;若水位符合加热要求,主控制器通过驱动电路控制继电器吸合,加热棒电源被开启,开始加热,直至实时温度值达到设定温度值时,加热棒电源被断开,停止加热。
2.3 异常状态检测和处理子程序
异常情况通常表现为水位过低和水温过高造成干烧、炸管等现象,异常状态检测与处理流程如图10所示。
图10 异常状态检测和处理流程
系统根据实时水位和水温与设定值进行比较,当水位低于10%时,客户端将会收到低水位警告。此时,若水温低于90 ℃,系统执行上水动作;若水温高于90 ℃,大概率会发生炸管的情况,系统发出警示并不执行上水动作。当水位低于20%时,同样可能会发生干烧的情况,系统发出警示并设置系统不可加热。当水位高于20%时,符合加热时的水位要求,即可设置系统执行加热动作。当判断系统处于异常状态时,客户端会收到警示,同时系统会做出保护动作。
3 监控系统的设计
3.1 本地监控系统的设计
本文设计了以MCGS组态软件为基础的太阳能热水器本地监控系统,系统对数据做出采集、分析和显示。对异常数据进行报警提醒,实现设备精准化维护。由于嵌入式版可视化程度较高、功能较多,因此将其作为触摸屏组态软件搭建的基础环境。完成组态后,主控制器与MCGS通过Modbus协议实现串行通信。利用脚本开发MCGS设备通信驱动,驱动开发结束后,可以与系统实行通信,执行太阳能热水器的信息采集。数据传输通过TCP/IP协议实现,将屏幕与主控制器的通信接口互联,经过以太网将数据上传至主机,实现实时监控。
完成硬件连接后,MCGS向主控制器发送查询指令,主控制器接收到指令后,按照传输协议传输数据,MCGS接收到数据后会将其写入实时数据库定义的变量中。这些变量与用户窗口上的控件关联,当变量值改变,用户窗口上的数据会随之改变。若MCGS需要对变量做出更改,MCGS将向主控制器发送写指令,控制器接收到指令后,将对变量值进行更改,同时会按照传输协议回应一串数据,MCGS读取到数据后表示修改完成,也可以控制执行上水、加热等操作。
3.2 本地监控平台测试
所设计的硬件平台在接入12 V直流电源后,系统正常工作。将MCGS与控制板通过RS 485串口线连接,实现了MCGS与主控制器的持续通信,并将采集的数据发送给MCGS,在触摸屏上显示。在用户窗口中设置小窗口,用户可根据需要对参数和工作状态进行修改。
MCGS触摸屏与LCD显示屏的测试对比如图11所示。当设定好水位后,点击上水按钮,其开关状态会立即发生变化,对应的继电器指示灯会被点亮。LCD显示屏中S1、S2分别表示上水开关和加热开关,S1置1,S2仍置0。Temp表示当前水温,Depth表示当前水位,其值在不断更新变化。Mode表示当前系统工作模式,显示为Auto即自动模式。T1表示上水时间,A1表示设定水位;T2表示加热时间,A2表示设定温度。MCGS触摸屏中水管不断有液体填充,实时水位也在不断检测和更新。此外,可以看出MCGS触摸屏中显示的数据与LCD显示屏中的数据完全一致。经过测试表明,MCGS完全实现了本地监控的功能。
图11 MCGS触摸屏与LCD显示屏测试对比
3.3 远程监控平台的设计
远程客户端是在Qt5.8开发环境下所编写的TCP服务器界面。主控制器借由SIM800C模块与远程监控客户端实现,由于SIM800C发送或接收的数据经由GPRS传输,因此用户只要能够连接到网络,即可对太阳能热水器的参数和状态进行查看和更改。SIM800C与该界面通过GPRS进行数据传输,通信协议为TCP/IP协议。
3.4 远程监控平台测试
打开上位机监控界面后,主控制器会自动与监控系统连接,之后就可以进行数据交互。主控制器将收集的数据通过SIM800C发送至远程监控界面,监控系统接收到数据后将其显示给用户,当用户在界面上进行操作时,界面也会有相应变化。当用户在界面上点击加热按钮时,会向控制器发送指令,主控制器通过SIM800C接收到指令后控制加热继电器吸合,加热指示灯亮的同时LCD屏中的系统状态参数也会随之更改。由图12所示的测试结果可知,设计的远程监控系统能够实现对太阳能热水器的监测和控制。
图12 上位机监控界面与LCD显示屏测试对比
4 结 语
本文将太阳能热水器控制系统与物联网技术深度融合,为监控操作受位置影响较大等问题提供了新的解决途径。其中主控制器的选取是设计新型智能控制系统的关键,本地监控和远程监控是系统设计的核心环节。另外,由于已有的太阳能热水器中存在传感器测量不精确、智能化程度不高等问题,因此本文还在系统中设计了手动、自动、智能三种模式进一步实现智能化,优化了太阳能热水器控制系统。