基于STM32和CAN总线的电动车电池管理系统设计
扫描二维码
随时随地手机看文章
随着电池能源的广泛应用,石油资源的枯竭和环境污染,电动汽车以其节能环保的优势引起越来越多的重视,在电动汽车的研究和发展上,车载电池及其管理系统的研究与制造占据着重要位置。电动汽车动力电池在应用中的主要问题表现在:生产过程中,电池的工艺,技术以及成组技术还不能保证其初始性能具有良好的一致性;使用过程中,对过充电、过放电、过温度、过电流等非常敏感,这类情况的发生会明显缩短电池寿命,甚至会导致电池报废。电池组是几十个甚至上百个单体电池串联,单体电池之间存在不一致性,随着连续的充放电循环,电池间的不一致性加剧,电池组的可用容量受容量最小的单体电池制约。对于这些情况,电池的初始性能必须要依靠企业生产工艺的优化,生产过程关键参数的控制来改善,而使用过程中出现的问题则需要电池管理系统来解决。本设计是以STM32F107 为核心的主控制器通过CAN通信网络控制以C8051F500单片机为核心的电池组信息采集和基本控制模块工作及获取数据。主要实现了单体电池的过压放电均衡,过流保护、过温保护、过放电保护以及通过上级控制器汇报并存储整体电池组的工作状态。
1 硬件设计
1.1 系统总体架构
系统所监控管理的电池包组成结构为:先将一定数目的锂离子电池串联,将若干电池串并联成一电池组,最后将若干电池组串联构成整体的电池包,这种串并联复用的组织形式有利于进行单串电池的充放电起停操作,降低使用过程中产生的电池容量不一致性。管理系统的构成如图所示,每个电池串配置一个二级控制器监测管理,采集电流、电压、温度等数据并上传,控制电池串起停与均衡操作,一级控制器为双CAN控制器结构,CAN1控制器与二级控制器组成电池组的CAN 网络,CAN2控制器与主控板电池包组成内部一级CAN总线网络,负责向主控板汇报该电池组工作情况及向下属二级控制器传达指令,主控制板的CAN2控制器则接入整车CAN总线。由于各电池组为串联结构,电压的递增关系影响到二级控制器,故而供电时需经DC/DC转换。
1.2 主控制器、一级控制器架构
主控制器,一级控制器的核心控制由意法半导体的STFM32F107完成,STM32F107是一款高性能、低成本、低功耗的32位RISC微处理器,采用ARMCortex-M3的内核,内部含有256 kB的Flash和64 kB的SRAM,有着充足的编程空间,主频为72 MHz,足以承担对下级控制器的实时管理。所包含外设有:基本的电源电路、复位电路、标准JTAG调试口、双CAN物理层电路、EEPROM存储器,对于本系统设计来说是最佳方案。
1.3 二级控制器架构
由于锂离子电池单体电压较小,一般约为4 V,而整体电池包电压则高达数百伏,单串电池长度也在15个以上,而目前常用的电池测量芯片成本较高且只能监测6节或12节电池电压,综合考虑决定以 C8051F500为核心设计二级控制器,这种设计相较于专用电池测量芯片而言,缺点是精度较低,优点是可以对所测量的数据先进行计算处理,不完全依赖上级控制器的指令。
C8051FS00处理器按AEC-Q100测试标准设计,具有宽工作电压、宽工作温度范围、抗干扰能力强并内置CAN及LIN总线控制器,适合汽车电子及工业控制方面的应用。该芯片具有32路I/O口,接口数满足监控电池串工作的需要,具有12 bit的ADC,每个通道的最小建立时间《50μs即巡检一个循环的总时间《1 ms,足以支持对于电池串的实时监控,控制器架构如图2所示。
其中带隔离驱动的CAN总线物理层电路如图3所示,此外还有DC/DC电源,C2在线调试接口等外部设备。
2 软件设计
2.1 二级控制器软件流程
(1)系数修正程序。因为电池总数极多,为降低系统的成产成本和占用空间,电压测量采用较为简单的电阻分压,电流测量则采用电阻采样法,为弥补电阻造成的误差,预置了修正系数的程序,每块电路板投入使用前,可先在所有电压测量端口接5 V标准电压,采样电阻两端通10 A标准电流。程序可自动根据所测值修改系数,提高工作精确度。
(2)软件流程。如图4所示,程序开始运行时,首先对C8051FS00内部的系统时钟以及一些变量进行初始化,然后对各I/O口、定时器、中断、ADC工作方式及CAN总线工作方式初始化,接着根据测量电流的两个I/O数据判断电池组目前是充电还是放电,以选取不同的控制方案,继而检测是否有一级控制器发出的指令,若有则执行指令,否则ADC将巡检各I/O的输入电压,程序通过预存的系数将其还原为各电池的端电压,电池串的电流和温度。最后计算各电池的SOC,考虑 C8051F500的运算能力,采用精确度和运算复杂度都较为中等的安时积分法,并根据温度,电压,电压-时间梯度等量加以修正。与此同时,实时上报总电压、电流、温度和总SOC共4个参数给一级控制器,充电时如果有单节电池电压过高,则开启相对应的MOS管,以均衡充电。出现过温,过流或达到放电终点时,断开该串电池,并将断开时的所有数据均上报一级控制器,否则主程序继续判断是否有指令,循环上述过程。
2.2 一级控制器软件流程
(1)接收二级控制器上传的数据,这里主要有两种数据:一是时刻上传的每串电池的电流、电压、温度,剩余电量;二是当某串电池因故停止工作时上传的完整数据和停止原因。
(2)SOC计算,这里计算的SOC是根据实时上传的电流、电压和温度计算整串电池的剩余电量,因为STM32F107芯片运算能力强于C8051F5 00,所以这里的计算模型采用模糊神经网络法。
(3)对二级控制器下达指令,这里的指令有两种:一是要求其上传目前工作情况的完整数据,主要是停车前保存历史数据或手动要求查看;二是在其充放电时SOC明显高于/低于其他电池串时,让该电池串暂停工作一段时间,有利于在使用中尽量抹平电池间的不一致性。当上传的SOC和所计算的SOC之间有较大差异时,则上传该情况,方便检查并修正模型系数。
(4)向主控制器上传数据,这里的数据除了主动或应主控制器要求上传的包括电池包整体电压、电流和SOC,相应电池串乃至相应电池的电压、电流、温度和SOC等一系列工作情况以外,还有各种意外情况的汇报。
2.3 主控制器软件流程
主控制器的任务是向整车控制器汇报电池组的工作情况,并根据要求向一级控制器传达指令,与一级控制器相似,但由于各电池包可能会切断某条电池串,造成SOC的突变,所以没有计算各电池包SOC的操作。
3 结束语
本文提出了一种以STM32F107为核心控制器,通过CAN总线与以 C8051F500为核心的子控制器互联的电池组监控管理系统,可以高效地管理电池,为驾驶员提供剩余动力信息,延长电池的使用寿命。文章从硬件和软件两个方面详细描述了系统的实现过程和各项功能。本系统在用电压源和电流源进行检测时,所测量的电压误差不超过0.01 V,电流误差不超过0.05 A,对于模拟的过压、过流、过温、放电终止等情况,控制板均能迅速做出反应,验证了系统的测量精度、实时控制和良好畅通的CAN通信网络,在使用锂电池进行充放电实验时,所估算的SOC与实际情况也基本吻合,充电时当有电池接近充满时均衡操作能及时启动,且保护过充的效果也较为理想。