BP网络在蓄电池电压监测模块设计与应用

电源设计应用

419人已加入

描述

  1 蓄电池电压监测的必要性

  浮充电压对蓄电池的容量及寿命有直接影响。高于推荐的极限浮充电压会降低电池使用寿命及容量。低于推荐的浮充电压会导致电池容量不足。蓄电池容量的减少将导致UPS后备时间的减少,后备时间是UPS最主要的性能指标之一。所以,需要根据实际测量的温度调整蓄电池的充电电压。

  下面举例说明25oC 时单体浮充电压(v)与蓄电池寿命的关系

  

蓄电池

  可见为保证电池的寿命,在环境温度25oC时,浮充电压应该保证在2.25v到2.30v之间,蓄电池浮充电压偏差只能有50m V。

  不同的环境温度下,蓄电池浮充电压不同,之间具有一一对应的非线性关系,蓄电池生产厂家可以给出一些具体数据,对于蓄电池生产厂家没能给出的数据,应用BP人工神经网络可以拟合出满足精度要求的未知数值。

  2 智能蓄电池电压监测单元的构成

  在当今主流UPS电源系列产品中,蓄电池电压监测单元包括电压监测模块,测温模块,监测软件等。它是UPS电源重要的附件,安装在电池柜中(如图1)。BVM采用巡检的方式可以进行单电池电压监测,每组电池共同使用一个BVM单元,测量数据通过RS485总线上传,经RS485/RS232转换器送到PC机串口,有效地实现了在线监测蓄电池组中每个单体蓄电池性能的均衡性,为保障每节电池良好的供电性能提供检测依据,能准确的检测出蓄电池组中的落后电池。

  

蓄电池

  图1智能蓄电池监测系统

  BVM由51单片机和A/D转换器等组成,通过A/D转换器将测量电压值与温度值都送入单片机中。单片机EEPROM中存放表格,表中的记录是蓄电池浮充电压与环境温度一一对应的非线性关系。通过查表的方式比较,在某一温度值下比较表中的电压值和实际测量的蓄电池浮充电压値,若超出设定范围则报警。

  3 BP网络的作用

  具有偏差和至少一个S型隐含层加上一个线性输出层的BP人工神经网络能够逼近任何有理函数。由于温度和浮充电压间的关系不会突变,所以通过BP人工神经网络的运算, 可以得到平滑的温度-浮充电压曲线。在厂家只提供少量数据且未知函数表达式的情况下就可以高精度地预测出所有未知数据。所以通过BP人工神经网络的运算可以精确地得到温度和浮充电压关系曲线上的所有数值。

  4 BP网络的设计与训练

  4.1 网络结构:

  BP网络是典型的多层网络,分为输入层,隐含层,输出层,层与层之间采用全互联方式,同一层神经元之间不存在相互连接(如图2)。

  

蓄电池

  因为输入输出各是一组数据,所以采用输入层一个神经元,输出层一个神经元;设输入矩阵为T,输出目标矢量为V 。

  关键在于如何选取隐含层的神经元数。隐含层的神经元数不能太少,否则网络不能很好地学习,需要训练的次数太多,训练精度也不高。一般而言网络隐含层神经元数越多功能越强,但也不能太多,通常如果能够解决问题,再加上一两个神经元以加快误差的下降速度。

  经验公式有两个:

  蓄电池

  其中S1是隐含层的神经元数;

  r是输入层的神经元数;s是输出层的神经元数;

  S1=4*1+1*1= 5个神经元  或者

  蓄电池

  经反复试验决定采用8个神经元, S1=8。

  4.2 激活函数:

  BP网络中神经元的激活函数是非线性的,且必须是连续可微和单调上升的有界函数。输入/输出关系也是为非线性,其值可连续变化。隐含层采用双曲正切S型激活函数,输出层采用线性激活函数。

  隐含层神经元数设为i (i=8) , 其中第i个神经元的输出为

  

蓄电池

  4.3 BP网络训练:

  BP网络,输入为某一温度值,输出是测量电压值的基准值,将其和实际测量的蓄电池浮充电压値比较,若超出允许范围则报警。

  T代表温度,V代表测量电压值的基准值。

  实际工作温度是0oC至41oC,训练时0至41的数据造成网络训练困难,所以改为-20至20,只要加上20就是实际温度值。

  将蓄电池制造厂提供的数据分为两个集合,

  训练集(如图3)是:

  输入矩阵T = -20: 2 : 20;

  输出矩阵V

  V==[14.4,14.38,14.32,14.24,14.18,14.12,14.04,13.98,13.92,13.86,13.78,13.72,13.66,13.58,13.52,13.46,13.38,13.32,13.26,13.2,13.2];14.4,14.38,14.32,14.24,14.18,14.12,14.04,13.98,13.92,13.86,13.78,13.72,13.66,13.58,13.52,13.46,13.38,13.32,13.26,13.2,13.2];

  

蓄电池

  用Matlab语言编写训练程序,网络训练过程:

  首先设定参数如下:

  max_epoch = 30000;

  err_goal = 0.002;

  程序运行结果:

  TRAINBP: 30000/30000 epochs, SSE = 0.00260954.

  W1 =[-0.1094 -0.1207 -1.0054 -0.9631 1.5095 0.4468 1.7631 0.9540] T

  B1 =[-1.2748 1.2489 0.4120 0.1571 -0.6891 0.9935 -1.5833 0.0657] T

  W2 =[0.3228 0.2993 -0.0883 0.2113  1.0839 -0.0217 -0.7304 -0.2670]

  B2 =13.8159

  UnsuCCessfully.网络训练不成功。

  用得到的W1,B1,W2,B2再次训练……直到

  err_goal =0.0015  successfully

  得到:

  W1 =[-0.1094 -0.1207 -1.0054 -0.9631 1.5095 0.4468 1.7631 0.9540] T

  B1 =[1.2748 1.2489 0.4120  0.1571 -0.6891 0.9935 -1.5833 0.0657] T

  W2 =[0.3228 0.2993 -0.0883 0.2113 1.0839 -0.0217 -0.7304  -0.2670]

  B2 =13.8159

  4.4 测试BP网络

  用最后得到的矩阵修改程序,然后输入测试集数据,求出误差

  测试集(如图4)是:

  T= -19:2:21

  V=[ 14.4,14.34,14.28,14.22,14.14,14.08,14.02,13.96,13.88,13.82,13.76,13.68,13.62,13.56,13.48,13.42,13.36,13.3,13.22,13.2,13.2];

  

蓄电池

  运行结果(如图5):

  

蓄电池

  TRAINBP: 0/10000 epochs, SSE = 0.0942136.

  TRAINBP: 100/10000 epochs, SSE = 0.00825354.

  TRAINBP: 145/10000 epochs, SSE = 0.0049739.

  测试集的SSE = 0.0942136,误差平方和《10mV,满足了要求。

  5 结束语

  由于蓄电池电压监测模块采用了BP网络拟合的数据,使精确判断蓄电池浮充电压有了科学依据。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分