赵 鹏,李帅波,钱 美
(新疆理工学院 机电工程学院,阿克苏 843000)
在家用电器中从低功耗的小夜灯到大功率的空调以及常用的电饭锅、灯带、充电宝等,其工作过程中无时无刻不在消耗着电能。 但其电流、电压及功率具体有多大,非专业人士很难估计,特别是对于包含电机类的设备启动瞬间电流非常大可能对其他正在运行的设备造成影响,甚至出现过载保护的情况。 在提倡低碳环保的今天,设计一款具备实时监控用电器运行状态和功耗的仪器,使人们对不同用电器的功耗有定量的认识就显得尤为重要。 鉴于此,本设计提出了一种5 mA~10 A 用电设备实时监控、识别、存储及显示系统,对于普及用电器功耗常识,了解常用电器的功率输出特性,提高人们节能减排的意识有重要的意义。
采用传统的分立元件搭建测试平台,选择1000:1电流互感器,但需要经过I/V 变换、放大、50 Hz 陷波、有效值检测再通过24 位高精度A/D 转换器ADS1256 将电压信号转换为数字信号经单片机处理后显示[1-2]。 单片机处理过程中要严格按照标度变换识别不同的用电设备,存储器选择AT24C02,显示器选择I2C 型OLED,独立按键则用来设置工作模式、保存或清除存储器数据,具体结构如图1 所示。
图1 分立元件构成的系统结构图Fig.1 System structure diagram composed of discrete elements
采用电能计量模块实现,其以串口的形式输出电流、电压及有功功率[3-4],程序设计简单,精度高,按键电路、 显示电路及存储电路与方案一相同,具体结构如图2 所示。
图2 电能计量模块构成的系统结构图Fig.2 System structure diagram composed of electric energy metering module
方案一结构清晰,因互感器对小电流检测难度大,一般提高抗干扰能力要使用SMA 接头,同时对PCB 布线要求较高,I/V 变换及放大环节要使用正负偏置电压,如果放大倍数设置不合理还可能出现被检测信号削顶的情况,使检测信号失真或超出A/D 转换器的检测范围,无法达到电流检测的目的,同时成本较高。 而方案二电能计量模块中采用专门的电能计量芯片,电路简单,使用便捷,串口采集数据的程序移植方便且经济实用,优势非常明显[5]。 因此,本设计中采用方案二。
电能计量模块通过互感器将测量电源和工作电源隔离,电能计量模块采用5 V 供电,最高不超过5.2 V。 通信接口电平输出标准为TTL 电平,可直接与常规的5 V 单片机或3.3 V 供电的采用Cortex-M3 内核的STM32 单片机以串口的形式实现全双工通信,无需电平转换电路[6],其与工频电源、负载、单片机及供电电源的连接方式如图3 所示。
图3 电能计量模块的接线方式Fig.3 Wiring method of the electric energy metering module
标度变换是将电能计量模块采集的数据转换为有具体单位的物理量的过程。 本设计中所需转换的数据为电流、电压及功率。 电能计量模块提供一套指令系统,当通过串口发送相应指令时,计量模块就向上位机或单片机返回相关的电能参数,对于单片机以状态机的编程形式提取电压、电流及有功功率[7-8]。 具体标度变换如表1 所示。
表1 采集数据的处理Tab.1 Data acquisition and processing
设计中使用的增强型51 单片机IAP15 系列,可通过其配备的下载软件STC-ISP 设定工作频率和上电复位功能,无需外接时钟和复位电路,节约了设计成本。 利用单片机的串口3 与电能计量模块通信;采用7 路LED 实时显示对应7 中用电器的工作状态;I2C 型OLED 实时显示用电设备的电流、电压、有功功率及运行状态;按键电路用以实现模式切换、用电设备运行状态的存储、删除功能,为了提高效率对于按键的识别采用中断和查询相结合的形式。 具体硬件电路如图4 所示。
图4 系统硬件电路图Fig.4 System hardware circuit diagram
软件采用C 语言模块化程序设计思路,以主程序为入口调用各个子程序,其中子程序主要由电参数采集及处理子程序、按键扫描子程序、OLED 子程序、数据存储与删除子程序等组成。 每个子程序都包含.H 头文件和.C 可执行文件,头文件通过防重复定义宏指令对函数声明,可执行文件主要完成对声明函数的定义并预留与主程序交互的接口,便于后期程序的移植、升级与维护。 因涉及到串口通信,为保证数据传输的稳定性与快速性,单片机晶振设置为22.1184 MHz, 设计中将每一种用电器的额定电流采用宏定义的形式定义,方便用电器更换后程序的修改。
为提高键盘扫描效率,采用有效利用单片机硬件资源的方案,将频繁操作的功能按键采用下降沿触发的中断工作方式, 其次采用查询工作方式,查询工作方式通过软件设置具备松手检测和消抖功能。 系统在运行过程中当监控电流与某一种用电器或某一组合用电器相匹配时,将对应编号的用电器用电状态置1,当按下存储按键,将用电状态存储于相应空间,当按下清除按键,将用电状态清0。 具体流程如图5 所示。
图5 主程序流程Fig.5 Flow chart of main program
将采集数据以队列的形式排列,将新数据放入队尾,淘汰队首的数据并求剩余数据的算术平均值作为有效数据。 该滤波器能有效抑制周期性干扰,但对脉冲干扰的抑制能力较差。 同时队列的长度越长数据采集的效率也越低。 在兼顾实时性的同时,为了降低求取算术平均值时的舍入误差,队列的长度应尽可能选择求取算术平均值时能整除[9]。 本设计中由于部分电器为感性负载如电机、日光灯等,启动电流波动较大,采用滑动平均值滤波能有效抑制电流波动,使程序易于识别小功率负载,而实时性方面满足2 s 之内识别所工作的电器或电器组。
设计中7 种用电设备采用工频电压下功耗为5.63 mA 的LED、7.67 mA 的单片机开发板、1 m 灯带工作电流为25.96 mA、LED 充电台灯工作电流为45.5 mA、2 m 灯带工作电流为53.81 mA。 前5 种电器独立工作电流均小于60 mA, 第6 种电器为工作电流为1.539 A 的电热锅,第7 种电器为工作电流为8.375 A 的电吹风。 实现了独立用电设备的识别功能;实现了当电吹风工作时,其中1 种大于20 mA 的电器独立工作时的识别功能;实现了最小功率的2 种电器的识别功能。 具体硬件控制电路如图6 所示。
图6 主控电路Fig.6 Main control circuit
调试过程中采用五位半数字多用表实时监测电流、电压,其与电能计量模块的精度指标保持一致,且由于电流采用滑动平均值滤波,其测量结果受感性负载的运行影响较小[10-11]。 具体计量模块的性能指标如表2 所示。
表2 电能计量模块的性能指标Tab.2 Performance metrics of the energy metering module
利用本系统对7 种用电器电流的实时监测和五位半数字多用表SA5061 的测量结果进行对比,对比结果如表3 所示。
表3 测量结果对比Tab.3 Comparison of measurement results
通过对不同用电器在工频交流电下监测值与高精度五位半数字多用表的测量值进行对比,其对电流的监测精度达到了设计要求[12-13]。
1)用电器状态数据无法存储
设计过程中利用初始化程序将AT24C02 内部数据清空,所以重新开始后数据无法保持。 通过取消初始化存储器程序,而使用按键控制存储与清除功能实现对用电器状态的存储与删除。
2)OLED 屏幕显示的切换
因OLED 要显示多幅运行状态,在设计中特设置了一个清屏按键,模式切换后要按一次清屏按键,避免和之前的显示重叠。
3)如何在多种组合模式显示中只显示其中2 种
设计中其中一种工作模式为大功率负载与剩余6 种负载的任意组合,为了防止多种组合模式的串扰,一次只显示其中2 种模式,大功率电器采用if语句判断,后续的6 种设备软件设计中采用条件判断语句if……else if 或开关语句switch……case 语句,这样如果大功率电器运行,后续电流大小的程序判断只要符合要求只执行1 次便跳出判断语句。
4)如果更换用电器如何调整程序的兼容性
采用宏定义设置不同设备运行的具体电流,如更换用电器则需修改对应的额定电流即可,同时也方便在调试过程中实时修改。
本文通过对用电器实时监控系统的方案论证、理论分析与计算、软硬件设计、系统测试各个环节的介绍,完成了实物的制作与调试,总结了调试过程中所遇到的问题及解决的措施。 采用电能计量模块与单片机系统相结合构成的用电器实时监控系统, 能有效监控用电器的电参数和特定的运行状态,对电参数的测量与用电器状态识别方面的设计有一定的借鉴作用。