APP下载

基于STM32 的物联网远程电路参数监测系统设计

2024-03-06孙康亚高红亮段玉龙周成子

自动化与仪表 2024年2期
关键词:电流值继电器程序

孙康亚,高红亮,段玉龙,周成子

(湖北师范大学 电气工程与自动化学院,黄石 435000)

用电安全一直是一个非常重点的话题,电路中的各个参数,不管是电流、电压还是电功率只要有一个不在安全范围内都会导致一些不安全事故的发生,轻则损害用电设备,重则引起火灾,危害人的生命财产安全。目前,在电路参数监测方面,最广泛使用的方法还是人在用电设备旁时刻观察电参数的变化,但是这种方法不但费时费力,而且当发生危险时,人手动去关用电器的开关过于危险。本系统的设计将电路参数监测和电路控制与物联网云平台相结合,实现了远程监测和控制电路,不但提高了安全性而且更智能化。

1 系统总体设计

本系统主要是通过ADC 采集获取电路的电压、电流和功率这3 种电路参数,并通过WiFi 模块和阿里云服务器,实现微信小程序与STM32 主控单元之间的双向通信,其中包括数据的远程监测、整个电路的通断以及报警器的开关。

系统主要由数据采集单元、主控单元、执行单元和微信小程序数据处理单元这4 部分组成。数据采集单元包括通过分压电路获取电路电压值和通过ACS712 电流传感器获取电路电流值这2 部分组成。主控单元主要是STM32 对采集到的数据进行进一步处理[1];执行单元主要是对STM32 处理过后的数据进行本地执行,这包括OLED 显示,继电器控制电路的通断和超过设定阈值自动报警这3 部分;微信小程序数据处理单元一部分为对阿里云服务器内的数据进行订阅,实现数据的远程监测,另一部分为向阿里云服务器上传命令,再通过WiFi 模块将命令下发给STM32 主控单元来控制电路的通断以及报警器的开关。系统的总体框图如图1 所示。

图1 系统的总体框图Fig.1 Overall diagram of system

2 硬件设计

2.1 分压电路

STM32F103 系列芯片有3 个ADC,且ADC 的模式非常多,功能非常强大,但是它的缺点是只能采集到0~3.3 V 的电压值,不能完全满足日常使用的需求,所以需要在外部并联一个分压电路,使得电压测量范围扩大为-20 V~20 V。根据基尔霍夫定律,节点流入的电流等于流出的电流可以得到关系式:

式中:VI为输入端的电压值;VO为输出端的电压值。根据对应关系代入2 组数据对公式(1)进行化简可以得到:

2.2 ACS712 电流传感器电路

ACS712 电流传感器完全基于霍尔感应的原理设计,该芯片由一个精确的低偏移线性霍尔传感器电路与位于接近IC 表面的铜箔组成,电流流过铜箔时,产生一个磁场,霍尔元件根据磁场感应出一个线性的电压信号,经过内部的放大、滤波、斩波与修正电路,输出一个电压信号。该型号的传感器芯片灵敏度系数为185 mV/A,其供电电压为5 V,输出电压与检测电流的关系为公式(3)所示:

式中:V 表示输出电压值;IP表示检测电流值。

2.3 执行单元电路

本系统的执行单元电路主要包括3 部分。第1部分为OLED 显示部分,它的主要功能是对经过STM32 处理器处理过后的数据进行直接显示,包括电路的实时电流值、电压值和功率值这3 组数据;第2 部分为继电器电路,继电器串联到电路中,用按键1 来控制继电器的通断,按键每按下一次继电器就进行一次反转,通过控制继电器的通断来控制整个电路的通断;第3 部分为声光报警电路,通过设置电流、电压、功率这3 组数据的阈值来设置报警条件,这3 组数据只要有一个超过设定阈值,蜂鸣器就会发出报警声,同时LED 灯会不停的闪烁,可以通过控制继电器断开电路或者是通过按下按键2关闭声光报警[2]。

3 软件设计

本系统的软件设计可以分为ADC 采集数据的处理、ESP8266-01S 模块的数据通信、微信小程序3部分,系统的软件设计主流程如图2 所示。

图2 软件流程Fig.2 Software flow chart

3.1 ADC 采集数据的处理

本系统的设计在ADC 采集部分选用了双ADC采集,在电路电压采集电路部分用的是ADC1 采集通道,在电流采集电路部分用的是ADC2 采集通道,采集到的数值存储到DMA 中[3]。所以在软件设计方面首先进行了DMA 的相关配置,这包括外设的地址、存储器的地址、数据的来源、数据的大小这些基本配置,以及将传输模式设置为循环传输模式,将DMA传输通道的优先级配置为最高这两项高级配置。ADC1 和ADC2 的配置完全一样,全部配置为扫描模式,连续转换模式,软件开启转换,转换结果右对齐,ADC 时钟进行8 分频,即9 MHz,采样时间设置为55.5 个时钟周期。

ADC1 采集端口用来采集电路中的电压大小,将ADC 端口与外部并联的分压电路的OUT 口相连接,将采集到的模拟量先经过模数转换后求出采集到的实际电压值,再根据并联电路分压的原理计算出整个分压前对应的电压值,即电路的电压值。转换过程代码如下:

ADC2 采集端口与ACS712 电流传感器的OUT端口相连接,ACS712 的输出端输出的模拟量经过模数转换后的电压值与电路中的实际电流值是一个线性关系,只需按照这个线性关系进行计算即可求出电路中的实际电流值,这一部分的转换代码如下:

经过上面这两步的转换和计算就可以求出电路中的实时电压值和电流值,由于电路中的电功率等于电压和电流的乘积,所以只要将上述求出的电压和电流值做一下乘法便可以求出电路中的实时功率。

3.2 ESP8266-01S 模块的数据通信

本系统使用ESP8266-01S 模块作为主要通讯模块,通过它可以实现将数据上传至云服务器,也可使STM32 通过它来接收来自云端的数据或者命令,它相当于连接STM32 和云服务器之间的桥梁[4]。

在ESP8266 初始化配置过程中,首先通过AT指令测试STM32 与WiFi 模块的通讯是否正常,通讯正常则继续通过AT 指令进行软件复位,然后再利用AT 指令将其设置为STATION 模式并设置WiFi的名称和密码,进行WiFi 的连接(此时手机、电脑和ESP8266-01S 模块构成局域网)。然后进行TCP连接,在代码中将MQTT 服务器的IP 地址和端口进行封装处理,并利用“AT+CIPSTART”指令将封装好的数据发送给云平台,等待平台响应后获取返回的数据,这样便完成了WiFi 模块与云服务器之间的连接。

系统通过程序设定一个5 s 的周期,每5 s 系统将前面通过STM32 处理过后的电路参数(电压、电流、功率)数据进行封装处理后向云服务发送一次,这样便实现了电路数据向云端实时传输的功能[5]。WiFi 模块向云服务器发送数据的具体流程如图3所示。

图3 WiFi 模块向云服务器发送数据流程Fig.3 Flow chart of WiFi module sending data to cloud server

3.3 微信小程序数据处理

本系统的上位机使用的是微信小程序,开发设计小程序使用的是微信开发者工具。小程序首先需要连接到与上述MQTT 服务器相同的IP 地址和端口才可以实现正常通讯[6],服务器连接成功后订阅数据的Topic 就可以成功接收上述ESP8266-01S 封装上传给云平台的数据。小程序接收到数据后会根据数据对应的名称在相关位置显示出来。

微信小程序除了接收数据,还可以向STM32 下发命令来控制声光报警器的开关和整个电路通断的开关。当按下小程序中的相应控制按钮后,小程序会向云端发布命令的Topic 发送一个cJSON 格式的数据,然后STM32 通过WiFi 模块订阅这个Topic接收到此cJSON 格式的数据后,紧接着对这个cJSON数据进行解析,根据解析内容做出相应操作。小程序向云端发送cJSON 格式的数据代码如下:

TM32 通过WiFi 模块订阅这个Topic 接收到此cJSON 格式的数据,对这个cJSON 数据进行解析的相关代码如下:

4 系统测试

在测试过程中设置电流阈值为3 A,可以看出当电流超过3 A 时,小程序上的“报警”按钮会自动打开,同时设备上的报警灯会不停闪烁,蜂鸣器会不停鸣叫。此时的小程序界面如图4 所示,断电后小程序界面如图5 所示,系统实物图如图6 所示。此时可通过STM32 上按键关闭声光报警也可通过小程序上的“报警”按钮关闭报警。

图4 超过阈值小程序界面Fig.4 Exceeding threshold in mini program interface

图5 断电后小程序界面Fig.5 Mini program interface after power outage

图6 超过阈值实物图Fig.6 Physical image exceeding threshold

当需要关闭电路时,可以通过STM32 的另一个按键控制继电器,也可以通过小程序上的“断电”按钮控制继电器,当继电器被打开后,整个电路直接被短路,设备上的电流、电压、电功率值全部变为0。打开继电器后的小程序如图5 所示,“断电”按钮为打开状态,电路的3 组参数值全为0,设备的实物图如图7 所示,代表继电器开启的指示灯亮起,整个电路断路。

图7 断电后实物图Fig.7 Physical image after power outage

5 结语

这款基于STM32F103 开发板和MQTT 协议的物联网远程电路参数监测系统,除了在设备端实时显示电路的参数外还可以在微信小程序上实时监测电路参数的变化,实现了数据的远程监测,当电路参数超过设定阈值后,设备端和微信小程序端都会收到报警信息,同时设备端和小程序端都可以控制电路的通断。经过反复测试,整个系统基本的实时性好、灵敏度高,而且相较于现在的用人工现场监测电路参数和控制电路来说,这种方法更智能化更安全,具有一定的实际应用意义。

猜你喜欢

电流值继电器程序
制冷剂与润滑油混合物对空调器泄漏电流影响分析及研究
放疗中CT管电流值对放疗胸部患者勾画靶区的影响
变压器差动斜率保护计算方法
便携式继电器测试台的研制和应用
试论我国未决羁押程序的立法完善
电气工程及其自动化控制系统中继电器的应用
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
光伏发电系统谐波监测与评估研究
继电器在电气工程及其自动化低压电器中的作用