基于STM32单片机的电网蓄热量监测系统设计

2022-08-12 09:30袁俊球
工业仪表与自动化装置 2022年4期
关键词:液晶显示器电路

袁俊球,周 斌,曹 健,陆 骞

(国网江苏省电力有限公司常州供电分公司,江苏 常州 213000)

0 引言

“碳达峰,碳中和”是我国当前一段时间的首要任务。节能减排是生态环境保护的必由之路[1]。人民生活水平日益提高,对区域性的集中蓄热式供暖提出了更高的要求。当前,电网蓄热量无法精准控制且长期缺乏合理的计量方法(大部分地区仍按供暖的建筑面积计费),而非按实际的热量计费[2]。由此产生诸多争议,一些供热量高、室内温度偏高的建筑用户,不是想方设法去调节供热量来降低室内温度,而是采取冬季开窗的方式来散热。

现阶段,在数字赋能、精装治理经济社会发展的时代背景下,单片机在各行业的应用十分普遍,相关学者做出了很多切实可行的研究。岑志刚等[3]提出基于Openmv和STM32的车内温度预警系统,利用NB-IOT BC26模块和SIM900A模块进行温度检测、数据上传、短信预警、蜂鸣器预警和风扇物理降温。侯志伟等[4]设计了一种基于STM32片内ADC(Analog-to-DigitalConverter,模拟/数字转换器)采样多通道温度的测量系统,给出了恒流源激励与温度标定电路,热敏电阻PT100信号调理电路,多重ADC采样程序,TFT-LCD实时显示及Python数据统计分析。任晶秋等[5]为了提高红外测温设备检测人体温度的精度,研究了提高红外温度精度的距离温度补偿方法,设计了一款测距远、测量准、应用广的红外测温枪系统。系统以STM32F103为主控制器,采用AMG8833红外热像仪传感器模块、OLED显示器模块、激光测距模块及蜂鸣器等进行外围设计。吴付祥[6]开发了一种基于STM32的温湿度监控系统,可以实现环境温度和湿度的自动监测和控制,达到恒温恒湿的目的。谢凌菲[7]基于STM32与μCOS的靶式流量计以STM32F407ZGT6微处理器为核心处理单元,采用四线制PT100热电阻温度传感器,实现系统控温精度优于±0.5 ℃的设计目标,对于空间环模设备热沉温控技术的改进与提升具有一定的借鉴意义和市场应用价值。但是STM32在电网热源精准化管理方向设计开发应用的报道较少。因此,为适应市场经济体制运作的要求,同时满足住户家居生活的自动化、安全化和舒适化需求,设计一种合理、准确的计量电网蓄热量的装置已经成为当前供暖技术中亟待攻克的课题。

该文基于STM32的电网蓄热量监测系统设计路线如下:

(1)对系统整体功能架构进行设计,分析各个功能之间的连接及逻辑功能关系。详细地对比分析有哪些相关的技术可以实现核心功能,并最终选择出最合适的技术方案实现对应的功能。技术方案与详细的器件清单相对应,为后续的硬件电路设计做好准备;

(2)对系统电路进行设计,根据具体的器件型号,以核心器件为基础进行外围电路的设计。对所有的功能进行原理分析,设计出硬件电路图;

(3)硬件设计完毕,对系统的软件进行开发。配合软件代码系统,对各个功能进行单独设计,最终实现软件功能;

(4)将设计好的硬件和软件进行组合,调试设计的内容,对整个系统进行测试,实现系统要求的功能。

1 总体方案设计

1.1 系统整体方案设计

基于STM32的电网蓄热量监测系统具有流量检测、进水温度检测、出水温度检测、数据显示及远程监控等功能。系统通过对水的温度以及流量进行检测,得到电网蓄热量数据。对于水温需要先测量进水温度,再采集出水温度,用出水温度减去进水温度,再加上流量就可得到电网蓄热量数据;所得电网蓄热量数据可以在本地显示,也可以远程监控。系统结构框图如图1所示。

图1 系统结构框图

1.2 主控制器

选择ST公司STM32实现功能控制。运行速度能够上升到72 MHz,使用高端的ARM内核,芯片内部有多种集成功能模块[8]。为了方便开发者快速进行项目开发,芯片可以使用官方提供的案例以及库程序。官方给了自动代码生成工具,大大缩短了设计周期。芯片内部带有模数转换、高级定时器和DMA等多种实用的功能。多种模块以及多种设计工具也使得STM32被广泛地应用。

1.3 稳定与流量检测

温度的采集应用DS18B20。该器件对温度的感应范围很宽,达到了-55 ℃~125 ℃,能够满足产品开发设计需求。因为微处理器只需要1条线路就可以实现数据的传输[9],所以在硬件上不需要单独的外部器件支撑就达到了测温的目的。

流量检测使用流量传感器。传感器内部包括铜阀体、水流转子和霍尔器件等[9]。传感器安装在水流管道中,实现对水流量的检测。传感器内部在水流的带动下,转子转动带动磁性转子转动,这样霍尔器件就会输出脉冲电信号,输入到主控中对水流量进行检测。此传感器的使用寿命长、稳定性高,可以无损地安装在水流检测点。

1. 4 显示与通信

显示功能选取LCD1602。这款显示屏的控制有串行和并行数据2种控制方案,通过数据输入方式进行分类。2种方案在设计上各有优势,串行相对于并行硬件设计上简单,并行相对于串行在软件控制上简单[10]。该系统选并行控制方案,可以快捷地通过软件实现对液晶屏的操作控制。液晶显示器的供电电压为4.5~5.5 V,其消耗的电流为2.0 mA。该系统选择5 V为显示器供电。显示器的体积较小,为2.95 mm×4.35 mm。

远程水流量监控功能选择GSM模块。GSM模块可以实现发送短信的功能,通过和主控连接,主控可以控制GSM模块实现向任意手机发送短信。手机号可以设定在主控程序中。GSM模块集成了基带功能和信号接收功能等,在使用模块时需要安装一张电话卡用于发送短信。模块还可以实现打电话、GPRS流量功能。

2 硬件设计

2.1 主控制器电路

STM32的工作速度快、计算能力强,完全满足系统控制功能。STM32运行速度高达72 MHz,1 s内能够完成对6 M代码的执行,外设接口数量大,可实现多种功能的控制[11]。芯片的体积很小,但其内部集成了多种功能模块,因此很适合集成化设计。用户程序使用空间大,有128 K,完全能够实现系统的功能。系统内有基本、通用和高级3种定时器,可以根据功能需要选择使用[12]。STM32处理器具有经济性好、功耗较低等突出的特性,目前在诸多领域均有较为广泛的运用。具有代表性的如电动汽车、共享行业等都大量采用了这款处理器[13]。该设备的运行速度极高,在使用过程中可以实现高速运行。STM32最大的特点就是配备了大量的输入输出端口,此外还配置有2个相应的转换器,其转换精度较高。该类控制器对于功率的消耗比较少,其集成度比较大。此外,这种控制器与其他控制器相比经济实惠,将其和外围电路进行相加,可以完成单片机最小系统的构建。

STM32在封装上并没有直插供应,全部都是贴片类型,因此在开发中使用最小系统板和其他模块进行连接。STM32芯片内部有8个定时器,其中基本定时器2个,通用定时器4个,高级定时器2个。直接存储器访问模块2个,搭配有12个通道。在通信方面配置更高,带有3路SPI通信,2路IIC通信,5路串口通信,1路CAN通信,可以灵活地配置功能模块使用那些IO接口,使用方便。主控制器电路如图2所示。

图2 主控制器电路

2.2 温度检测电路

DS18B20传感器内部除了设计有温度数据,还有温度的报警阈值功能。温度数据可以通过软件进行设置,从9~12位进行选择。温度的报警阈值是指最大温度和最小温度数据,分别有1个字节的存储空间,方便开发者设置温度范围功能。传感器身份信息有64位的空间,只能读取数据,不能编辑写入数据,能够在级联模式下判断出不同的数据来源于何传感器。在硬件设计上不需要任何器件的支撑,但是为了获取温度信号,在信号线上接电阻,电阻另一端接电源,设计一个上拉电阻,使得系统更加的可靠[14]。进水温度检测DS18B20器件的数据端口DQ和单片机的PC14进行通信,出水温度检测DS18B20器件的数据端口DQ和单片机的PC15进行通信。温度检测电路如图3所示。

图3 温度检测电路

2.3 流量检测电路

采集到温度后,流量是另一项重要的数据。通水流量信号输出到主控中,主控得出流量数据。传感器可以在-10 ℃~+55 ℃环境中运行工作。传感器一共有3个接口,1号接口是传感器的供电机接口,2号接口连接供电GND,3号接口是传感器输出的流量信号,和主控的PA0连接。流量检测电路如图4所示。

图4 流量检测电路

2.4 液晶显示电路

液晶显示电路中共有16个引出的信号接口。第1个和第2个接口是液晶显示器的供电接口,这里选择5 V供电。第3个接口用于控制液晶显示器的清晰度,当输入不同的电压值时可以有不同的显示效果。通常在这里接一个电位器,方便在使用时调节输入到第3个接口的电压值,使液晶显示器达到最好的显示效果[15]。第4个接口RS决定了对液晶输入的数据是用于控制还是用于显示,这是设计时必须设置的接口,RS和主控的P2.5口连接,在低电平情况下表示控制命令,在高电平情况下表示显示内容。第5个接口RW决定了主控和液晶显示器的关系,RW和主控的P2.6口连接,在低电平情况下表示主控向液晶显示器写入数据,在高电平情况下表示主控是从液晶显示器读取数据。需要注意的是,主控向液晶显示器写入的数据包括显示内容和显示内容地址。第6个接口E决定了主控对液晶显示器的操作是否有效,E和主控的P2.7口连接,在低电平情况下表示主控的控制有效,在高电平情况下表示主控的控制无效。第7~第14个接口为D0~D7数据输入口,和主控的P0口连接,是一个8位一组的数据口,这组接口通过主控输入数据。液晶显示电路如图5所示。

图5 液晶显示电路

2.5 远程通信电路

GSM模块和主控之间通过串口进行数据传输。由于GSM在运行时要获取信号,需要一定的电流,因此设计时要考虑到GSM模块需要比较大的功耗。主控和GSM模块都属于TTL电平,因此串口线路可以直接进行对接。和手机天线的原理一样,GSM模块需要搭配1根天线才可以接收到信号,以实现短信发送的功能。GSM模块工作电流不能低于2 A。串口连接需要3条线,GSM模块的5号接口RXD和主控的PA9连接,6号接口TXD和主控的PA10连接。为了保证模块稳定运行,增加了滤波电容C4,使输入到GSM模块内的电源稳定可靠。短信通信电路如图6所示。

图6 短信通信电路

3 软件设计

3.1 系统整体软件设计

主控的程序对流量检测、进水温度检测、出水温度检测、数据显示及远程监控功能进行控制。进入到主程序中先对流量检测控制接口、进水温度检测控制接口、出水温度检测控制接口、数据显示控制接口及远程监控控制接口进行初始化设置[16]。首先需要测量进水温度,再采集出水温度,用出水温度减去进水温度,再加上流量就可得到电网蓄热量数据。电网蓄热量数据可以在本地显示,也可以远程监控。系统整体软件设计流程如图7所示。

图7 系统整体软件设计流程图

3.2 温度检测软件设计

温度的采集需要单片机对DS18B20进行操作。系统首先初始化DS18B20,对数据口进行高电平处理,维持48 μs的时间;接着对数据口进行低电平处理,维持480 μs的时间;最后再对数据口进行高电平处理一次,这样就完成了对器件的初始化工作。完成初始化后单片机等待器件的温度输出信号,当单片机采集到器件输出低电平,就可以通过命令控制器件输出温度数据。得到进水温度和出水温度以及流量后,就得到电网蓄热量。温度检测软件设计流程如图8所示。

图8 温度检测软件设计流程图

3.3 流量检测软件设计

流量的检测主要是对脉冲的识别。传感器和主控的PA0连接,主控需要对传感器输出的高脉冲进行识别,每识别到一个高脉冲说明有一定量的水流过[17]。该文使用主控的触发中断功能识别脉冲信号。中断需要用到STM32的NVIC功能,即选定具体的中断通道后确定中断源,这里对应的是硬件电路中的接口PA0。将流量传感器的脉冲作为中断源,设置优先级为最高优先级,保证脉冲识别的精度;再结合得到的进水温度和出水温度就得到电网蓄热量。流量检测软件设计流程如图9所示。

图9 流量检测软件设计流程图

3.4 显示软件设计

系统需要安装液晶显示器的时序以便主控对液晶显示器进行控制,主要进行指令和数据的输入控制,实现需要显示的内容[18]。在对液晶显示器操作时同样要进行初始化操作,首先复位液晶显示器,完成对液晶显示器的重启;再进行液晶显示器的模式设置,模式设置前需要关闭显示,然后对液晶显示器进行清屏操作,设置液晶显示器在显示内容时不移动、无光标、不闪烁,模式设置完毕开启液晶显示器。接下来就可以进行显示内容的操作。主控先命令液晶显示器需要在什么位置上显示内容,也就是显示内容的地址,有了地址后,紧接着输入要显示的具体内容,这样就完成了对液晶显示器的控制。显示软件设计流程如图10所示。

图10 显示软件设计流程图

3.5 远程通信软件设计

在系统采集到电蒸汽蓄热锅炉内的温度以及水位低于设置的阈值时需要声音提示。如果电蒸汽蓄热锅炉内的温度以及水位小于设置的阈值,则主控控制PB12输出低电平,控制蜂鸣器报警[19-20];如果土壤湿度大于设置的阈值,则主控控制PB12输出高电平,控制蜂鸣器停止报警。报警控制软件设计流程如图11所示。

图11 远程通信软件设计流程图

4 调试

4.1 软件测试

STC处理器的开发工具是Keil,通过Keil进行软件代码编写并进行编译,生成最终处理器所需要的HEX文件,将此文件烧录到处理器中,处理器就会按照软件运行起来[21]。Keil还可以在线仿真,对代码进行逻辑性验证,即在HEX文件烧录到处理器前进行初步的验证。在对单片机系统进行开发的时候所涉及到的相关硬件和软件,可以通过Keil uVision所提供的工具进行编码、翻译、编写以及调试等,进一步验证系统软件设计是否正确,以便检查出软件中存在的问题,不断优化bug,最终完成对整个系统的调试。

软件设计完成后可以通过Keil进行测试。Keil不仅有代码编辑功能,还可以对设计好的代码进行调试。此工具可以自动为开发者查找出相关的错误,在按下编译按钮之后会告知开发者相关错误信息,提示开发者错误发生在代码的什么位置,以及具体错误的解释信息,只要按照提示信息修改相关代码,会很容易完成代码的优化,实现系统软件功能。

按照系统的功能要求,在确定了系统各部分器件的具体方案后,按照该方案对系统的代码进行设计,可以按照功能模块划分对软件进行编写,也可以按照硬件模块划分进行开发。不管是选择哪种方式,都是先编写并实现一个模块之后,再进行下一个模块的编写,这样实现起来不会相互影响,开发思路更加清楚,后期有问题也更容易定位,而且可以作为后期模块的代码文件存储起来,方便后期设计调用。硬件有模块,软件同样也有模块,这种编程习惯为后期的开发带来便利,对于代码的阅读也更加的容易[22]。

软件设计选择了模块化开发,这需要对各个模块的内部参数进行细化,模块之间要设计好接口,这样才可以进行数据传输。编写的代码不能占用太多的资源,否则会降低运行速度及运行效果,只有优化和降低代码的多余工作,才能让各个功能协调工作[23]。代码中数据的定义也很关键,其中最重要的就是数据范围以及作用区域,比如一个数据能达到的最大范围是200,而定义的范围达到了65 536,所分配的空间就是65 536的空间,这就造成了大部分空间的浪费,所以在定义数据的时候必须考虑这个数据作用的范围,按照作用的范围定义相对应的空间。

图12为系统调试界面,在调试界面中可对系统代码进行验证。调试工具提供了很多方案,对设计的语句一步一步地运行,能够看到每一句的操作结果,且所有细节都会显示出来。对任何一个数据和任何一个寄存器变化的监控都可以一目了然,可按照调试需要监控相对应的变量;还可以只运行某一段代码,监控这一部分代码的效果;可以设置断点,运行之后停止在这个位置。通过上述调试方案对系统的软件进行验证。

图12 调试界面

4.2 硬件测试

在焊接时需要注意焊接的温度,温度太低焊锡丝不容易融化,温度太高又有可能损坏器件;对每一个引脚的焊接时间都应该进行控制,因为焊接时间太长容易损坏器件。另外,要按照布板的位置依次进行焊接,以免出现某些器件没有焊接的情况,还要注意器件之间的位置是否相互干扰。在完成所有器件的焊接后,需要对每个焊点进行仔细地检查,发现漏焊或者短路连在一起的需补充修好,再用清洁剂清洗线路板后就可以上电测试。如图13所示。

图13 硬件上电测试

5 结语

为解决电网蓄热量无法精准控制,且长期缺乏合理的计量措施的问题,该文设计开发了一套基于STM32单片机的电网蓄热量监测系统。该系统具有流量检测、进水温度检测、出水温度检测、数据显示及远程监控等功能,通过对水的温度以及流量进行检测,得到电网蓄热量数据。水温需要先测量进水温度,再采集出水温度,用出水温度减去进水温度,实时获取流量得到电网蓄热量数据。电网蓄热量数据可以在本地显示,也可以远程监控。通过仿真,验证了该电网蓄热量监测系统的可行性,为电蒸汽蓄热锅炉智能化控制设计与开发提供经验。

猜你喜欢
液晶显示器电路
电路的保护
水厂液晶幕墙系统建立和应用
把显示器“穿”在身上
解读电路
一种USB接口字符液晶控制器设计
IDC发布《2018年PC显示器市场跟踪报告》
一种新型点阵显示器的设计
巧用立创EDA软件和Altium Designer软件设计电路
基于MATLAB模拟混沌电路
废旧液晶六屏显示改造项目的设计与实现