基于Arduino的单体蓄电池电压和电流检测系统设计
2023-06-21蒲成雷
摘 要:直流配电柜的蓄电池组是其备用电源,当市电中断时为负载供电。蓄电池组在安装投入运行后5年内不会更换。通过检测单体蓄电池的电压和电流,可以及时发现和更换故障的蓄电池。文章以Arduino UNO板为核心,设计一种直流配电柜单体蓄电池电压和电流检测系统,实现了对直流配电柜单体蓄电池电压和电流值的有效检测,解决了直流配电柜运行过程中的安全隐患。
关键词:Arduino;直流配电柜;单体蓄电池;电流检测
中图分类号:TP311;TM912 文献标识码:A 文章编号:2096-4706(2023)09-0042-04
Abstract: The battery pack of the DC distribution cabinet is its backup power supply, which supplies power to the load when the main electricity is interrupted. The battery pack will not be replaced within 5 years after installation and operation. By detecting the voltage and current of the single battery, the faulty battery can be found and replaced in time. Taking Arduino UNO board as the core, this paper designs a single battery voltage and current detection system of DC distribution cabinet, which realizes the effective detection of the single battery voltage and current value of DC distribution cabinet, and solves the potential safety hazard during the operation of DC distribution cabinet.
Keywords: Arduino; DC distribution cabinet; single battery; current detection
0 引 言
空管系统的微波和光端机等通信设备通常采用带蓄电池组的-48 V直流配电柜供电,以保证市电中断时通信设备仍能正常工作。根据最新的供配电设备运行维护管理要求,每季度应对直流配电柜的蓄电池进行1次放电维护,且至少每10分钟应记录1次蓄电池组的总电压以及单体蓄电池的电压和电流值。直流配电柜虽然配置了本地监控模块,但往往只能检测和显示蓄电池组的总电压和负载电流值,不能检测单体蓄电池的电压和电流值;由于没有配置远程监控终端,设备维护人员无法远程获得蓄电池组的状态信息。这不仅无法满足蓄电池的放电维护和远程状态监视需要,还不能及时发现性能下降的蓄电池,存在明显的安全隐患。
本文提出了一种基于Arduino UNO板的直流配电柜单体蓄电池电压和电流检测系统的设计方案,以解决上述安全隐患,保障通信设备的供电安全,供大家参考。
1 直流配电柜和Arduino简介
1.1 直流配电柜简介
直流配电柜主要包括交流配电单元、整流模块、直流配电单元、蓄电池组和本地监控单元。交流电通过交流配电单元进入整流模块,整流模块将交流电转换成-48 V直流电,由直流配电单元分给多路负载供电。交流电供应正常的情况下,整流模块除了给直流负载供电外,还为蓄电池组提供充电电流。当交流电断电时,整流模块停止工作,由蓄电池组给直流负载供电。交流电恢复后,整流模块重新给直流负载供电,并对蓄電池组进行充电,补充消耗的电量。本地监控单元实时监控直流配电柜各部件的运行状态,如有异常,及时发出声光告警,并提供本地手动状态查询功能。
1.2 Arduino简介
Arduino是一款近年来比较流行的便捷灵活、方便上手的开源电子原型平台,已发布多个型号的开发板,具有开发简单、价格便宜、模块丰富的特点,能够作为人机交互、物联网的节点,甚至成为各种人工智能的中心。其中,UNO板是一款适合入门、功能齐全且使用最多的Arduino开发板,主要包控制芯片(ATMega 328)、USB接口、I/O端子和供电系统4个模块。Arduino UNO板不仅具有6个10位的模数转换通道,能将0到5 V之间的输入电压转换为0到1 023之间的整数值,还能使用USB线与上位机连接,并在上位机上虚拟出一个串口设备,非常适合用于信号检测和串口通信。
2 系统总体设计
本设计以Arduino UNO板为核心,总体设计框图如图1所示。直流配电柜给通信设备提供-48 V电源,其电池组由4块12 V蓄电池组成,采用正极接地方式。4个电压采样模块分别对1至4号蓄电池的电压进行采样,并将得到的电压采样信号接入Arduino UNO板的模拟输入端口A0至A3。电流采样模块对蓄电池的电流进行采样,并将得到的电流采样信号接入Arduino UNO板的模拟输入端口A4。Arduino UNO板使用USB线与上位机连接,根据预先设计的通信协议进行串口通信,可互传数据。同时,上位机通过此连接向Arduino UNO板提供5 V电源。Arduino UNO板中的电压和电流检测程序首先对电压和电流采样信号进行循环检测和处理,然后将真实的电压和电流值上报给上位机,上位机则对电压和电流值进行接收,并在显示软件界面上进行实时显示。显示软件界面如图2所示。
3 系统硬件设计
3.1 电压采样模块
直流配电柜的电池组由4块蓄电池串联组成,采用正极接地。虽然每块蓄电池正负极之间的电压基本相同,但正负极的对地电压(共模电压)却各不相同,其中1号蓄电池的对地电压最高。通常情况下,蓄电池在充电时其最高电压不超过15 V,则1号蓄电池负极的最高对地电压不超过-60 V。因此,电压采样模块在对单体蓄电池的电压进行采样的同时,还必须能够承受最高-60 V的共模电压,否则电压采样模块不仅无法正常工作,甚至还可能被高共模电压烧毁。为了减小电池内阻对采样结果的影响,电压采样模块还应具有高输入阻抗。
本设计的电压采样模块使用由集成运放及负反馈回路构成的差分比例放大电路,具有低功耗、低增益误差、高共模抑制比等特点,电路原理图如图3所示。其中,集成运放选用LM324,采用+15 V和-15 V双电源供电,外围电路包括4个电阻,用于设置输入阻抗、放大比例和所能承受的共模电压。根据图3的电路结构和参数可知,该差分放大电路具有高输入阻抗,不仅能够直接对单体蓄电池的电压进行比例放大,还可以承受-75 V至75 V的共模电压,其输出电压计算式为:
V0= (Vin+-Vin-) /4.7 (1)
本设计检测的单体蓄电池最高电压不超过15 V,根据式(1)计算得知,电压采样模块输出的蓄电池电压采样信号低于3.2 V,满足不超过Arduino UNO板的模拟信号输入口最高输入电压5 V的要求。
3.2 电流采样模块
本设计的电流采样模块包括霍尔电流传感器和电压跟随器,电路原理图如图4所示。其中,霍尔电流传感器的型号为WHK-50EKA5S2,量程50 A,采用+5 V电源供电,是利用霍尔效应原理制作的开环电流传感器,能够测量交流、直流、脉冲信号以及其他不规则信号,具有精度高、线性好、响应快等特点。当蓄电池电流通过磁环时,霍尔电流传感器会输出一个与流经电流Ip线性相关的电压VIout,计算公式如式(2)所示。当Ip为正时,表示蓄电池处于充电状态;当Ip为负时,表示蓄电池处于放电状态。
VIout=2.5+0.04 Ip (2)
由于霍尔电流传感器的输出电阻较大,且随温度改变而改变,如果将其输出电压直接接入Arduino UNO板的模拟信号输入口,会对电流检测精度造成较大影响。而电压跟随器的输入电压与输出电压的大小和相位完全相同,具有输入阻抗很高和输出阻抗很低的特点,在电路中起到隔离前后级和阻抗匹配的作用。因此,将霍尔电流传感器的输出电压通过电压跟随器完成隔离和阻抗匹配后再接入Arduino UNO板的模拟信号输入口,以提高电流检测精度。
本设计检测的蓄电池最大电流不超过10 A,根据式(2)计算得知,霍尔电流传感器的输出电压不超过2.9 V,满足不超过Arduino UNO板的模拟信号输入口最高输入电压5 V的要求。
4 系统软件设计
4.1 通信协议设计
系统软件包括Arduino UNO板电压和电流检测程序以及上位机显示软件,采用主从结构设计,由上位机通过发送相应指令对Arduino UNO板进行控制。Arduino UNO板收到上位机的指令后,按预先规定的通信协议开始检测蓄电池电压和电流并上报真实的蓄电池电压和电流值,上位机则对蓄电池的电压和电流值进行接收和实时显示。上位机与Arduino UNO板之间的通信协议如表1所示。其中,上位机指令包括1个启动检测指令、4个电压查询指令和1个电流查询指令。完成通信协议设计后,就可以进行系统软件设计了。
4.2 Arduino UNO板电压和电流检测程序设计
Arduino UNO板电压和电流检测程序设计使用类似C语言的程序开发环境Arduino IDE,可以在Arduino官网上免费下载。只要在Arduino IDE中编写程序代码,将程序上传至Arduino UNO板后,程序便能控制Arduino UNO板实现信号检测和处理,并与上位机进行串口通信。
Arduino UNO板与上位机进行串口通信的波特率设置为9 600。当Arduino UNO板接收到上位机的启动指令‘S’时,便开始对电压和电流采样信号进行循环检测和计算处理,得到真实的电压和电流值。之后,当Arduino UNO板接收到上位机的查询指令时,便根据预先设计的通信协议将相应的真实电压或电流值上报给上位机进行显示。电压和电流检测程序流程图如图5所示。
其中,Arduino UNO板电压和电流的检测原理为:首先对接入模拟信号输入口的电压或电流采样信号进行10位模数转换,得到0到1 023之间的某一个整数值V,然后根据式(3)计算得到蓄电池电压的真实值,根据式(4)计算得到蓄电池电流的真实值。
4.3 上位机显示软件程序设计
由于上位机显示软件实现的主要功能是串口通信和信息显示,并没有大量的数据分析,且要求显示界面简洁友好,因此选择使用编程语言C#进行上位机显示软件的高效开发。显示软件程序流程图如图6所示。其中,上位机首先发送字符‘S’命令Arduino UNO板开始检测蓄电池电压和电流,然后根据预先设计的通信协议向Arduino UNO板发送查询指令,依次对1至4号蓄电池的电压和电流值进行查询并将查询结果在界面上进行显示,且信息查询和显示界面数据更新的周期为1秒。
5 测试分析
根据系统设计完成软硬件的安装调试后,对系统的电压和电流检测准确度进行了测试。用电压表和该系统同时测量的电压检测数据如表2所示,电压检测精度在30 mV以内。用电流表和该系统同时测量的电流检测数据如表3所示,浮充时电池电流很小,电流检测绝对误差为0.02 A,但相对误差较大;放电时电流较大,绝对误差为0.04 A,但相对误差较小,低于2%。通过以上测试分析,该系统的电压和电流检测准确度满足实际使用需要。
6 结 论
本文提出了一种基于Arduino UNO板的直流配电柜单体蓄电池电压和电流检测系统。该系统硬件结构简单、成本较低、安全可靠,软件设计流程清晰、简洁明了。在设计电压采样模块时,通过合理设置差分放大电路的元器件参数,成功解决了高共模电压可能导致电压采样模块无法正常工作的问题。在设计电流采样模块时,通过使用电压跟随器对霍尔电流传感器和Arduino UNO板进行隔离和阻抗匹配,提高了电流检测精度。该系统实现了对直流配电柜单体蓄电池电压和电流值的有效检测,其中电压检测精度30 mV,放电电流检测误差小于2%。通过实际测试,该系统工作稳定,性能良好。
参考文献:
[1] 王治国,高玉峰,郭云鹏.基于Mega16的蓄电池状态检测系统 [C]//第十七届全国测控计量仪器仪表学术年会(MCMI'2007).厦门:电子测量与仪器学报杂志社,2007:46-50.
[2] 王超,秦会斌.基于STM32的铅酸蓄电池充放电监测系统设计 [J].软件导刊,2018,17(1):122-125+128.
[3] 渐彬彬.蓄电池检测方法的研究与改进措施探讨 [J].中国设备工程,2021(16):142-143.
[4] 王文琦,侯艳强,李维.一种蓄电池在线监测系统的设计与应用 [J].黑龙江电力,2022,44(4):313-320.
[5] 杜瑞涛,徐洋.基于单片机技术的蓄电池充放电控制系统设计 [J].光源与照明,2022(4):132-134.
作者简介:蒲成雷(1986—),男,漢族,四川蓬安人,工程师,本科,研究方向:空管雷达、地空通信、单片机。