您好, 访客   登录/注册

移动小车电源SOC实时估算系统设计

来源:用户上传      作者:

  摘 要:针对移动小车无法实时显示当前电量,易出现电池过放从而降低电池循环使用寿命的问题,利用Arduino作为主控制器采集电池的电压、电流、温度数据,将三者作为BP神经网络的输入量,计算电源SOC值,最后通过LabVIEW平台嵌入该算法实现对电源SOC的实时估算。实验结果表明,神经网络训练误差可满足实际要求,硬件系统整体运行可靠。系统可以实时监测电源的SOC值、电压、电流和温度值,从而避免电源出现异常工作状态,提高电池循环使用寿命。
  关键词:SOC估算;BP神经网络;LabVIEW;Arduino
  DOI:10. 11907/rjdk. 192247 开放科学(资源服务)标识码(OSID):
  中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2020)007-0131-05
  Mobile Car SOC Real-time Estimation System Design
  DU Wei-dong1,LU Jin-gui1,ZHAI Xin-yu1,LIU Xin2,PAN Yan-fei2
  (1. School of Mechanical and Power Engineering, Nanjing Technology University, Nanjing 211816, China;
  2. Jiangsu Changjiang Intelligent Manufacturing Research Institute Limited Liability Company, Changzhou 213012, China)
  Abstract: For the mobile car, the current power cannot be displayed in real time, and the battery over-discharge is easy to reduce the battery cycle life. The Arduino is used as the main controller to collect the voltage, current and temperature data of the battery, and the three are used as the input of the BP neural network. The power SOC value is estimated, and finally the algorithm is embedded in the LabVIEW platform to realize real-time estimation of the power SOC. The experimental results show that the maximum error of 6.88% in neural network training can meet the actual requirements, and the overall hardware system runs reliably. The system can monitor the SOC value, voltage, current and temperature value of the power supply in real time, avoiding the abnormal working state of the power supply and improving the battery cycle life.
  Key Words: SOC estimation; BP neural network; LabVIEW; Arduino
  0 引言
  隨着计算机技术与电子技术的快速发展,各种移动设备已经融入人们生活。移动设备通常需要电池作为动力源,以准确估计动力电池的荷电状态(Stage of Charge,SOC),一方面可以合理分配能量,延长电池续航时间,另一方面可以避免动力电池过充和过放,延长电池使用寿命[1]。目前国内外电池SOC估算策略主要有:开路电压法[2]、内阻法[3]、线性模型法、人工神经网络法、负载电压法[4]、安时积分法[5]、卡尔曼滤波法[6-7]、放电实验法、动态逼近法等。目前基于嵌入式技术的电源管理系统有的采用安时积分法估算SOC,安时积分法虽然简单、稳定,但是一种开环方法,无法避免累计误差[8];也有采用扩展卡尔曼滤波方法进行SOC估算[9],由于卡尔曼滤波算法需要获得准确的模型,通过算法更新模型中的参数预测SOC值,但是很难建立准确的电池模型[10];BP神经网络通过模拟人脑神经元工作原理,主要利用输入、输出样本进行训练,最后得出输入输出映射关系。由于SOC与测量所得的电压、电流、温度等值之间为非线性关系,BP神经网络的特点是具有较强的自学习与非线性拟合能力,所以BP神经网络能够估算电池的SOC[11]。综合以上几种估算方法,可以使用神经网络算法作为实时估算系统的核心算法。因此,围绕神经网络算法,本文设计了硬件电路、下位机程序和上位机程序。
  1 总体方案设计
  通过对功能的分析与Arduino引脚的使用明确了系统外围电路,系统需要采集的模拟量有电流、电压、温度3种数据,设计电压电流采集模块通过I2C总线与arduino uno通信,温度采集模块通过SPI总线与Arduino uno通信。为方便使用者直观了解电源实时状态,上下位机以无线蓝牙方式进行实时通信,通过图形化编程软件LabVIEW设计人机界面显示电源状态,并借助LabVIEW易与其它编程语言混合编程的特点,将SOC估算算法嵌入上位机。总体方案如图1所示。   2 电源SOC估算算法
  2.1 BP神经网络原理
  BP神经网络是在训练过程中信号前向传播、误差逆向传播的通过模仿人类自身大脑神经网络构造,具有自适应、非线性拟合等能力的人工神经网络。其实质是通过不断修正神经网络各隐含层的各个权值和阈值,使误差达到设置范围[12]。BP神经网络训练流程主要分为两步,输入层—隐含层—输出层方向的正向传递和反方向的误差传递,具体过程如下:设输入层第i个节点输入为Xi,隐含层第j个节点输出为Yj,输出层第k个节点输出为Zk,期望输出为dk,输入层与隐含层之间连接的权阈值为Wij,隐含层与输出层之间连接的权阈值为Vjk。
  (1)BP神经网络信号正方向传递。
  输入层到隐含层的传递关系如式(1)所示。
  隐含层到输出层的传递关系如式(2)所示。
  其中,Wij、θi分别为输入层与隐含层之间连接的权阈值,Vjk、θj分别为隐含层与输出层之间连接的权阈值,f(x)为传递函数。
  (2)BP神经网络误差反方向传递。
  系统总误差准则函数为:
  将式(2)代入式(3),得到BP神经网络估算SOC模型的误差,由输出层反馈至隐含层时有:
  权阈值按照式(5)、式(6)进行修正:
  其中:
  BP神经网络误差由隐含层反馈至输入层时有:
  权阈值按照式(10)、式(11)进行修正:
  其中:
  BP神经网络通过最速下降法使权阈值不断向误差曲面负梯度方向变化,后一层权阈值修正后向前一层传递,并逐层修正,按照误差函数进行调整,循环迭代,从而满足误差要求。
  2.2 BP神经网络预测结果
  本实验对象为两节18650锂电池,采用恒压充电,以电流为充电电流的1/10为停止标准,恒流放电时电压低于最低工作电压时停止。每次充放电结束后,静置一小时以上,根据0.2C、0.4C、0.8C充放电倍率要求进行实验,并保留数据[13-15]。神经网络训练参数设定如下:输入层为1层,输入节点为3,这里将电源电压、电流和温度作为网络输入;输出层为1层,输出节点为1,这里将电源SOC作为输出,设置隐含层节点数为7,学习率为0.01。在实验数据中均匀选取具有不同放电倍率的300组数据作为BP神经网络训练样本,并任意选取15组数据作为预测数据。样本数据及预测结果如表1所示,神经网络预测相对误差如图2所示。
  3 硬件系统设计
  3.1 Arduino单片机
  Arduino UNO是基于ATmega328P的Arduino开发板,其有14个数字输入/输出引脚(其中6个可用于PWM输出),6个模拟输入引脚,1个16 MHz的晶体振荡器,1个USB接口,1个DC接口,1个ICSP接口,以及1个复位按钮[16-17]。Arduino与各模块连接如图3所示。
  3.2 电压电流采集模块
  电流电压测量模块采用INA226模块,该模块能全面编程测量电流、电压和功率,可在0V~36V的共模总线电压范围内感测电流。INA226内部模数转换的双侧开关与低侧分流电阻端闭合,经过模数转换与计算得到分流电压。模数转换的双侧开关与待测电压端相连,经过模数转换与计算得到待测电源电压[18]。芯片结构如图4所示。
  3.3 温度采集模块
  温度测量模块使用贴片式Pt1000铂电阻与MAX31865 RTD数字转化器组成温度测量模块,接线方式如图5所示。
  Pt100是电阻式温度检测器,阻值随温度不断变化,阻值与温度关系如式(14)所示。
  其中,R(T)为温度T℃时的阻值,T为温度,R0为0℃的阻值。对于Pt100电阻,R0=100Ω。根据IEC751规定,0℃~100℃之间的平均斜率为α=0.003 850 55,a=3.908 30×10-3,b=-5.775 00×10-7。當-200℃≤T≤0℃时,c=-4.183 01×10-12;当0℃≤T≤850℃时,c=0。
  MAX31865是成熟的RTD数字转换器,利用外部电阻设置RTD灵敏度,通过Δ-Σ ADC将RTD电阻与基准电阻进行对比,转换为数字输出[19]。在-100℃~+100℃可以很好地逼近温度值。线性化温度公式如式(15)所示。
  为进一步提高精度,可以使用式(15)修正RTD线性误差。
  3.4 蓝牙模块
  HC-05无线蓝牙模块板载3.3V稳压芯片,输入直流电压3.6V~6V,可以直接连接各种单片机。蓝牙是全双工异步通信,需设置相同通信协议双方才能实现蓝牙传输。无任何蓝牙协议,只能支持波特率为9 600、8位数据位、1位停止位、无奇偶校验的通信格式。设置蓝牙配对方式,将HC-05模块设置为从机模式,PC端设置为主机模式。
  3.5 数码管
  数码管使用两片595芯片,74HC595是一个8位串行输入、并行输出的位移缓存器。并行输出为三态输出,采用两片595驱动数码管,需要连接到arduino的3路IO口,根据数码管动态扫描原理进行显示,工作电压为3.3V~5V。
  4 软件系统设计
  4.1 Arduino下位机程序设计
  Arduino有基于Eclipse的IDE开发环境自身的软件平台,采用类C的语言进行编程,支持ISP在线烧写;可预装Bootloader程序,不需要外部烧写,可以通过串口或USB to Rs232更新固件。
  下位机程序流程如图6所示,系统上电复位后,首先对Arduino进行初始化,然后对INA226模块和MAX31865模块,以及I2C接口进行初始化,定义软SPI引脚,设置串口波特率为9 600、8位数据位、1位停止位、无奇偶校验、清空串口缓冲区等。初始化完成后,Arduino先判断串口缓冲区是否有数据,如果有则读取数据,否则向传感器发送工作指令,读取传感器内的寄存器数据并向串口打印输出。   4.2 LabVIEW上位机程序设计
  LabVIEW实现串口通信功能需要安装VISA驱动,VISA是应用与仪器编程的标准I/O应用程序,也是工业上通用的仪器驱动标准API,具有很好的兼容性、扩展性和独立性。VISA串口函数主要包括:
  (1)VISA配置串口函数。作用是完成串口参数的初始化设置,包括串口资源名称、波特率、奇偶校验、数据位数、是否启用终止符、握手方式、缓冲区大小等。由于蓝牙模块默认设置波特率9 600、8位数据位、1位停止位、无奇偶校验的通信格式,所以这里采用相同设置[16]。
  (2)VISA读取函数。作用是从VISA资源名称所指定的串口中读取指定字节数据,并将数据返回至读取缓冲区。
  (3)VISA写入函数。作用是将“写入缓冲区”的数据写入指定串口。
  (4)VISA关闭函数。为增强系统性能的可靠性,并合理利用资源,在程序最后部分需要对串口进行关闭,以释放资源、提高效率。
  4.2.1 串口通信功能模块
  该功能模块主要读取串口缓冲区内数据,因串口缓冲区不断有数据存入,所以需要采用while循环嵌套结构。VISA读取函数有3个输入端子,分别是串口资源名称、错误输入、读取字节总数。因为每次串口读取一个字符串,考虑到下位机发送数据的位数及空格数,将读取字节总数设置为23。由VISA读取函数输出的字符串,可通过两个“匹配模式”将其拆分成3个子字符串,通过字符串转化输出至波形图。串口通信功能模块程序框架如图7所示。
  4.2.2 SOC估算功能模块
  LabVIEW中可通过多种方式实现神经网络:①利用CIN节点调用C/C++程序;②利用MATLAB Script节点调用MATLAB程序;③利用LabVIEW本身的图形编程语言编程实现。CIN是位于LabVIEW框图程序窗口中的一个功能节点,用户可将需调用的外部代码编译成LabVIEW能够识别的格式后与该节点相连。当执行该节点时,LabVIEW将自动调用与该节点相连的外部代码,并向CIN传递特定数据结构[20]。另外LabVIEW还有MATLAB Script节点可以实现神经网络。MATLAB Script节点可以调用MATLAB程序,并在LabVIEW环境下运行,也可直接调入已存在的MATLAB程序。在LabVIEW中添加MATLAB Script节点后,之前读取的电压、电流、温度3个数值类型通过“创建数组”也将组合成一个一维数组,作为MATLAB Script点的输入,在脚本内加载已训练好的神经网络得到SOC估算值。SOC估算功能模块程序框架如图8所示。
  4.2.3 电源监控界面前面板
  利用LabVIEW开发平台中丰富的显示控件,可将上位机采集的各个参数进行实时数值显示与波形图显示,并设置了报警功能,以方便管理人员查看。设计系统的LabVIEW显示界面如图9所示。
  5 结语
  本文设计了一种移动小车电源SOC实时估算系统,通过将电子技术、智能算法与虚拟仪器相结合,解决了传统移动小车只显示电源电压,而无法显示电量的问题,从而避免电源出现异常工作状态,提高了电池循环使用寿命。系统体积小、成本低、操作方便、连接简单,可应用于放电状态下锂电池组的监控管理。未来可针对采集电池内阻数据作为神经网络的又一个输入以及神经网络算法优化作进一步研究,以提高预测精度。
  参考文献:
  [1] 贠海涛,林晋召,曾欣. 增程式燃料电池物流车动力系统设计与控制[J]. 现代制造工程,2019(3):56-61.
  [2] 王力臻,项民,谷书华,等. 开路电压及其影响因素[J]. 电池,1999(4):157-160.
  [3] 杨亚丽,李匡成,陈涛,等. 采用电动势-内阻模型在线估计蓄电池荷电状态[J]. 电测与仪表,2010,47(3):16-19,37.
  [4] PLETT G L. Sigma-point Kalman filtering for battery management systems of LiPB-based HEV battery packs[J].  Journal of Power Sources,2006, 161(2):1369-1384.
  [5] 李哲,卢兰光,欧阳明高. 提高安时积分法估算电池SOC精度的方法比较[J]. 清华大学学报(自然科学版),2010,50(8):1293-1296,1301.
  [6] 高明煜,何志伟,徐杰. 基于采样点卡尔曼滤波的动力电池SOC估计[J]. 电工技术学报,2011,26(11):161-167.
  [7] 温家鵬,姜久春,文锋,等. Kalman算法在纯电动汽车SOC估算中的应用误差分析[J]. 汽车工程,2010,32(3):188-192,227.
  [8] 李贵海. 电池SOC估算策略研究[D]. 杭州:浙江大学,2006.
  [9] 刘永祥,李绪勇,王洪亮. 动力电池管理系统的设计与仿真研究[J]. 计算机测量与控制,2019,27(2):197-201,206.
  [10] 刘艳莉,戴胜,程泽,等. 基于有限差分扩展卡尔曼滤波的锂离子电池SOC估计[J]. 电工技术学报,2014,29(1):221-228.
  [11] 朱晓青,马定寰,李圣清,等. 基于BP神经网络的微电网蓄电池荷电状态估计[J]. 电子测量与仪器学报,2017,31(12):2042-2048.
  [12] 何晓阳,徐惠钢,谢启. 基于LabVIEW与BP神经网络的零件识别系统[J]. 仪表技术与传感器,2017(1):119-122.
  [13] 雷雨,李锐,余佳玲,等. 基于BP神经网络的锂离子电池SOC估计研究[J]. 长沙航空职业技术学院学报,2018,18(4):64-70,74.
  [14] 李江江,冯丽娟. 改进的BP神经网络在电动汽车锂电池SOC估算中的研究[J]. 汽车实用技术,2018(21):19-21.
  [15] 杨冬进,娄建安. 18650型锂电池荷电状态的估计[J]. 计算机测量与控制,2018,26(4):268-271.
  [16] 于洋. 基于Arduino的自动避障及通信控制智能小车系统的研究与设计[D]. 长春:吉林大学,2017.
  [17] 蔡睿妍. Arduino的原理及应用[J]. 电子设计工程,2012,20(16):155-157.
  [18] 郭旭东. 电源分配单元监控系统的设计与实现[D]. 北京:北京邮电大学,2019.
  [19] 林源. 便携式烟气预处理系统的开发及其与非分散红外分析仪的联用[D]. 苏州:苏州大学,2018.
  [20] 熊秀,石秀华,许晖,等. 用LabVIEW实现神经网络控制[J]. 测控技术,2005(4):51-54.
  [21] 何晓阳,徐惠钢,谢启. 基于LabVIEW与BP神经网络的零件识别系统[J]. 仪表技术与传感器,2017(1):119-122.
  (责任编辑:黄 健)
转载注明来源:https://www.xzbu.com/8/view-15285773.htm