储能应用中的BMS系统设计

概要:设计了一款适用于储能应用中的电池管理系统。该系统为3层结构,采用MC33771作为模拟量采样芯片,实现了电池的电压、电流、温度等数据的获取,并在此基础上完成了其他需求功能。以储能系统中广泛使用的钛酸锂电池为实际测试对象,测试结果表明所设计的BMS系统能够实现对电池各项信息的准确采样,其中电压测量误差不超过2mV,电流采样误差在0.1%以内,并可有效完成各项设定功能,满足储能应用需求。

随着传统能源的日益减少,新能源发电技术凭借环保无污染的优点越来越受到人们的关注,然而新能源发电具有波动性和不确定性,会产生严重的谐波干扰,甚至导致电网崩溃。为了解决这些问题,一般采用锂电池储能电站的方式降低功率波动对电网造成的危害。储能电站一般由成千上万的单体电池串并联而成,为了确保这些单体电池能够安全有效运行,需要采用专门的电池管理系统(BMS)对电池进行监控和管理。
现有的BMS系统主要是针对电动汽车设计的,与电动汽车相比,储能系统中含有的串并联单体电池数量更多,导致储能系统结构更加复杂,对BMS系统的处理能力要求也大大提高,因此为了更好地满足储能系统的实际需求,需要对储能中BMS系统的功能和结构进行分析,并在此基础上设计一款适用于储能应用的BMS系统。为此,基于对储能中BMS系统功能需求的分析及各主流电池管理芯片参数的对比,选择NXP公司生产的MC33771作为BMS系统中的模拟量采样芯片,并设计了3层系统结构,实现电池电压、温度、电流等模拟量的采样,并完成系统其他功能设计。以钛酸锂电池组为测试对象,结果表明,所设计的BMS系统能够准确采样各种信息并以此为基础实现其他设定的功能,能够满足储能系统的使用需求。
1 储能应用中的BMS结构
对比目前常见的几种主流电池模拟量采样芯片,MC33771具有更多的电压采样通道以及宽温范围内最高的测量精度,并且采用菊花链通信的方式省去了昂贵的数字隔离器,因此采用MC33771作为模拟量采样芯片。
采用菊花链通信的方式1 次最多可挂接15 个MC33771,而每个MC33771可管理14串电池,所以1个控制器通过1条菊花链最多可实现对210节电池的管理。而每个控制器之间则可通过1个主控制器完成系统整体的运行和协调,实现管理更多电池的功能,并且采用主从控制器结合的方式能够避免单个控制器任务量过大,影响系统实时处理能力的问题。为此,本文采用3层结构的方案,具体结构框图如图1所示。底层是MC33771及其附属电路构成的BSU,负责采集电池各项信息;中间层是从控制器组成的BCU,主要负责通过菊花链的通信方式控制各自的BSU 完成数据采集的功能,并将相应数据上传;上层是BMU,负责系统内部的整体协调以及与外部信息交互,根据外部请求控制整个BMS系统的运行过程。
图1BMS系统结构
2 BMS系统硬件设计
BMS系统硬件主要分为BSU、BCU和BMU。为了节省设计时间,将BCU和BMU的硬件结构统一,只需根据不同功能焊接相应器件即可。
2.1 BSU硬件设计
BSU 主要由MC33771 及其附属电路组成,其中MC33771主要完成电池的电压、温度采集以及各种故障检测和均衡功能。其中,电压采样与均衡电路如图2所示,温度采样则通过计算热敏电阻阻值的方式实现。MC33771采用菊花链完成信息的上传下达,通过控制内部相应MOS管的通断实现最大通态电流为300mA的被动均衡功能。采用菊花链通信无需额外的高速光耦以及配套的隔离电源,只需1个隔离变压器HM2012NL即可实现2片级联的MC33771之间的信息传递,节省了成本。菊花链采用差分信号传输数据,为了能够实现MC33771与控制器(单片机)的正常通信,需要采用MC33664信号转换芯片将差分信号转换为SPI信号。菊花链通信的结构示意图如图3所示。
图2 电压采样与均衡电路
图3 菊花链通信结构示意图

2.2 BCU与BMU硬件设计
BCU与BMU采用相同的硬件结构,根据功能需求焊接不同器件,其硬件结构主要分为主控制器、电流测量电路、CAN通信电路以及继电器驱动电路等。
2.2.1 主控制器设计
主控制器采用ST公司生产的STM32F405RGT6。它是一种32位的ARM 架构处理器,主频高达168 MHz,内部具有1M 的Flash容量,外部采用64引脚的封装,集成了3路SPI总线、2路CAN 总线,可以满足系统的需求。
2.2.2 CAN总线通信电路
BMU 和BCU 之间通过CAN 总线传输信息,采用TJA1040T作为CAN 总线收发芯片。鉴于系统中串联了大量单体电池,为防止地电位不同导致的共模干扰以及对CAN收发芯片造成的损坏,在单片机CAN 通信接口与CAN总线收发芯片之间串入ADUM1201BRZ双向磁隔离器实现信号的隔离,并在CAN 收发器输入端并联120Ω电阻抑制回波反射。CAN总线通信电路如图4所示。
图片

图4CAN总线通信电路
2.2.3 充放电控制电路
BMU负责根据外部相应的请求和BMS系统内部状态控制充放电过程,采用继电器作为充放电主回路的开关。以MOSFET驱动电路控制继电器的吸合,完成相应的动作,具体的驱动电路如图5所示。其中,PIN1和PIN2是与继电器相应触点连接的端点;IO为单片机的控制引脚;串联反二极管的作用是吸收MOS管关断时继电器线圈上的电流。
图片

图5 继电器驱动电路
2.2.4 电流测量电路
本文基于分流器的方式测量回路电流,采用的分流器规格为500A/75mV。由于直接使用单片机的AD引脚测量分流器的电压会导致巨大的测量误差,因此本文采用亚德诺半导体生产的ADUCM331 作为电流采样芯片。ADUCM331是一款基于ARM Cortex-M3架构的32位处理器,采样电压范围为-200~+300mV,电流采样精度为20位,最大采样频率可达8kHz,通过SPI总线或UART方式实现与外部通信,并可通过SWD引脚完成程序下载。为了保护ADUCM331的电流采样引脚,接入必要的限流和限压电路,具体的电流采样保护电路结构如图6所示。
图片

图6 电流采样电路
3 BMS系统软件设计
BMS软件功能主要包括电压、电流、温度采样,均衡功能,充放电控制,故障预警和SOC估算等。其中电池电压、温度、电流精确采样是实现其他功能的基础。
3.1 初始化MC33771
执行采样功能之前,首先要对MC33771初始化。初始化流程如下。
(1)通信初始化。对STM32F405的SPI1和SPI2分别初始化,因为通过MC33664转换后的通信速率高达2Mb/s,直接使用SPI接收中断无法正常读取返回信息,所以采用DMA的方式接收返回的数据。
(2)MC33771初始化。SPI初始化后,BCU 对所有MC33771发送复位指令,将每个MC33771的INIT 寄存器都设置为0x00,使所有的MC33771的ID号都为0。复位完成后按菊花链级联的顺序重新依次赋予不同的ID。
(3)初始化MC33771中系统控制寄存器SYS_CFG1和SYS_CFG2以及需要配置成温度测量功能的GPIO端口。
(4)故障预警设置。MC33771中自带有过压欠压、过温欠温、均衡开路和短路等相关预警功能,对于需要用到的预警功能,使能FAULT_MASKx寄存器中相应数据位即可,对于不需要用到的预警功能则进行屏蔽。
(5)将设定的过压、欠压阈值写入TH _ALL_CT寄存器中,将过温、欠温阈值写入相应的TH _ANx_OT和TH_ANx_UT寄存器里。
3.2 电压温度采样
完成初始化流程后,即可对MC33771下达信号采集命令,MC33771主要采集各节电池的电压以及温度数据。首先将转换命令写入ADC _CFG 寄存器中使得相应MC33771启动转换,等待转换完成后,读取对应的MEAS_CELL或MEAS_AN 寄存器中的数值并通过公式计算出真实的电压和温度信息。具体的采样流程如图7所示。
图片

图7 电压、温读取流程
3.3 电流采样
电流采样是通过Aducm331电流采样芯片完成的,需要对Aducm331的相关寄存器进行配置,具体流程如图8所示。
图片

图8 电流采样流程
4 试验分析
采用2组14串钛酸锂电池PACK进行试验,检测电压、温度和电流的采样精度。其中,读取上位机的电压数据并与Agilent六位半万用表的测量数据进行比较,以万用表的测试数据作为真实值。某组PACK的测试结果见表1,由此可知,电压测量误差在2mV之内,能够满足实际系统需求。
表1 电压测量结果
图片

向主回路串联500A/75mV的分流器,使用电子负载构成放电回路。通过调节电子负载的放电电流测试电流采样精度,以电子负载上显示的电流值为基准进行比较。电流采样精度测试结果见表2 (其中绝对精度是指电流采样误差绝对值除以1000A的结果),由此可得,电流采样相对误差最大不超过2%,绝对误差在0.1%以下,满足电流精度要求。
表2 电流采样精度测试
图片

将热敏电阻浸入水中,同时放入温度计,通过不断向盆中加入热水来改变水温。观察上位机读取的相应温度值和温度计的示数来检验温度测量精度。测试结果见表3,由此可知,温度测量误差最大不超过3℃,符合实际要求。
表3 温度采样精度测试
图片

在上述采样基础上还对其他功能如故障检测和SOC估算进行了测试,均能满足实际需要。
5 结语
本文通过对储能应用中BMS系统功能和结构的分析,完成了相应的软硬件设计并对设计的系统进行了实际测试,结论如下:基于3层结构的BMS系统可以实现管理多节单体电池的功能,适用于大容量的储能系统;所设计的BMS系统能够精确采集电池电压、电流、温度等数据,并在此基础上有效完成如故障检测与保护和电池组SOC估算等功能,满足实际的应用要求。

作者:陆凡 刘东(西南交通大学电气工程学院)
来源:摘自《电工技术》
最终版权归原作者所有,如涉侵权联系撤稿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/284682.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Node.js+Express 路由配置,实现接口分类管理

首先创建一个路由目录及文件 routes/user.js代码 const express require(express); const router express.Router(); // 使用express提供的router对象 const db require(../dbserver/mysql);router.get(/api/user, (req, res) > {const sqlStr SELECT * FROM sys_user;…

IO进程线程 day1 IO基础+标准IO

1、使用fgets统计一个文件的行号 #include <stdio.h> #include<string.h> #include<stdlib.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("1.c","r"))NULL){return -1;}int count0;char buf;while(buf!EOF){b…

javaWeb商城2

一、家居电子商城 线上电子商城系统&#xff0c;主要实现了用户注册&#xff0c;登录、浏览&#xff0c;查看家居商品信息&#xff0c;购物车&#xff0c;订单&#xff0c;支付&#xff0c;查看通知以及管理员对用户信息的管理&#xff0c;订单管理&#xff0c;商品管理&#…

约翰瑟尔的故事

约翰瑟尔的故事 你即将看到的是“瑟尔效能机”创始者&#xff0c;约翰瑟尔的故事 据瑟尔原话&#xff0c;该装置会是通向自由能源的关键 “他”拥有“会飞”等不可思议的特性相关说法还有待证实&#xff0c;此记录篇仅为告知观者 制片方对瑟尔技术持中立态度 以下是我们所搜集…

2023-12-12LeetCode每日一题(下一个更大元素 IV)

2023-12-12每日一题 一、题目编号 2454. 下一个更大元素 IV二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数&#xff0c;你必须找到对应元素的 第二大 整数。 如果 nums[j] 满足以下条件&#xff0c;那…

easyx的窗口函数

文章目录 前言一、EasyX的颜色二、EasyX的坐标和设备1&#xff0c;EasyX的坐标2&#xff0c;EasyX的设备 三、窗口函数1&#xff0c;初始化窗口函数2&#xff0c;关闭绘图窗口3&#xff0c;设置窗口背景板颜色4&#xff0c;清空绘图设备 前言 easyx是针对c的图形库&#xff0c;…

48、激活函数 - 梯度消失和梯度爆炸

简单介绍下梯度消失和梯度爆炸,这个不是重点,但是我觉得有必要再深入了解这个概念,以及很多激活函数为什么是可以防止梯度消失的。 梯度消失和梯度爆炸实际上是在神经网络训练过程中经常会遇到的两类问题,这两类问题都与梯度有关。 什么是梯度 在神经网络训练中,梯度是指…

2023年总结及2024年规划:我们结婚啦

目录 1、回首2023 1.1、生活方面 1.2、工作方面 1.3、学习方面 2、展望2024 2.1、生活方面 2.2、工作方面 2.3、学习方面 2023年最重要的事情当然是我们结婚啦&#xff01; 1、回首2023 1.1、生活方面 今年五一假期&#xff0c;我和对象回老家在双方亲友的见证下完…

【LMM 004】LLaVA-RLHF:用事实增强的 RLHF 对齐大型多模态模型

论文标题&#xff1a;Aligning Large Multimodal Models with Factually Augmented RLHF 论文作者&#xff1a;Zhiqing Sun, Sheng Shen, Shengcao Cao, Haotian Liu, Chunyuan Li, Yikang Shen, Chuang Gan, Liang-Yan Gui, Yu-Xiong Wang, Yiming Yang, Kurt Keutzer, Trevor…

图片预览 element-plus 带页码

vue3、element-plus项目中&#xff0c;点击预览图片&#xff0c;并显示页码效果如图 安装 | Element Plus <div class"image__preview"><el-imagestyle"width: 100px; height: 100px":src"imgListArr[0]":zoom-rate"1.2":max…

Java中利用Redis,ZooKeeper,数据库等实现分布式锁(遥遥领先)

1. 分布式锁 1.1 什么是分布式锁 在我们进行单机应用开发涉及并发同步的时候&#xff0c;我们往往采用synchronized或者ReentrantLock的方式来解决多线程间的代码同步问题。但是当我们的应用是在分布式集群工作的情况下&#xff0c;那么就需要一种更加高级的锁机制&#xff0…

【2023年终总结】 | 时光之舟:乘载着回忆与希望穿越2023,抵达2024

文章目录 1 回忆2 希望 1 回忆 2023年对我来说是非常梦幻的一年&#xff0c;我在2023年初的时候确认去做AI方向&#xff0c;在这之前我尝试了前端开发&#xff0c;移动App开发&#xff0c;云FPGA等方向&#xff0c;但是感觉自己都不是很喜欢&#xff0c;然后就开始尝试新的方向…

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项样题卷③

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第3套&#xff09; 目录 2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第3套&#xff09; 模块…

vmware安装openEuler 22.03 LTS操作系统

vmware安装openEuler 22.03 LTS操作系统 1、下载openEuler操作系统镜像文件2、安装openEuler操作系统3、配置openEuler操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载openEuler操作系统镜像文件 官网下载链接 链接: https://www.openeuler.or…

010、切片

除了引用&#xff0c;Rust还有另外一种不持有所有权的数据类型&#xff1a;切片&#xff08;slice&#xff09;。切片允许我们引用集合中某一段连续的元素序列&#xff0c;而不是整个集合。 考虑这样一个小问题&#xff1a;编写一个搜索函数&#xff0c;它接收字符串作为参数&a…

QT上位机开发(图形绘制)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 图形绘制是上位机软件开发很重要的一个功能。这个图形绘制&#xff0c;有的是离线的&#xff0c;有的是实时绘制的。就我个人而言&#xff0c;离线…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前数据吞吐量(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK里函数来获取相机当前数据吞吐量&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在NEOAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过NEOAPISDK获…

美团到店终端从标准化到数字化的演进之路

总第580篇 | 2023年第032篇 本文整理自美团技术沙龙第76期《大前端研发协同效能提升与实践》。前端团队在产研多角色协同形式上存在不同阶段&#xff0c;而大前端多技术栈在各阶段都有其独特的实践&#xff0c;同时又有类似的演进路线。本文从到店终端团队移动端和前端技术栈持…

用python做猴子摘桃的题目,java猴子爬台阶算法

本篇文章给大家谈谈猴子爬山算法java完整代码&#xff0c;以及用python做猴子摘桃的题目&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 """ 一天一只猴子想去从山脚爬到山顶&#xff0c;途中经过一个有N个台阶的阶梯&#xff0c;但是这猴子有…

Embedding模型在大语言模型中的重要性

引言 随着大型语言模型的发展&#xff0c;以ChatGPT为首&#xff0c;涌现了诸如ChatPDF、BingGPT、NotionAI等多种多样的应用。公众大量地将目光聚焦于生成模型的进展之快&#xff0c;却少有关注支撑许多大型语言模型应用落地的必不可少的Embedding模型。本文将主要介绍为什么…