手把手教你如何建立考虑温度影响的锂离子电池二阶RC模型

 

 

 

        众所周知,影响锂离子电池性能的因素有很多,其中温度的影响一直以来是研究的热点,锂离子电池能否在低温环境下保持良好的性能也成为了评价电池好坏的标准之一。今天就来分享一下我是如何使用simulink来建立考虑温度影响的二阶RC模型的。话不多说,直接上图。

96440d74cc7d407c9342de2ce8502cdb.png

图1 考虑温度影响的锂离子电池二阶RC模型

 1.输入(电流和温度)

        输入选择signal build模块来完成,这个需要导入电流和温度数据,如图2所示,信号1是电流,信号2是温度,没有数据的小伙伴可以给我发私信。

7c36bcef491841bfac71703b63bb18f6.png

图2 输入电流与温度

 2.SOC计算模块

      该模块是使用安时积分法,通过求电流对时间的积分来计算当前的SOC值。根据公式:

95f118c3cfcf49e0938e42d0ebaf1b1c.png

323bb61bf04543af96e2eacc2cfe0cc9.png

图3 安时积分模型

 3.模型参数计算

经过模块2可以求出SOC,该模块需要用到5个查表模块,即通过实验数据得到的SOC,T与R0、R1、R2、C1、C2的关系,属于二维查表,如图4所示,但是需要实验数据,这个实验比较麻烦做完花了我一周的时间,因此没有条件做实验的小伙伴可以私聊我,我的HPPC放电实验数据的温度范围从-20℃到35℃,如图5所示。

b12a1621ba2d41a786b2aabadb535340.png

 图4 根据二维查表求当前的各个参数(R0、R1、R2、C1、C2)

f6384e5cd0034c0aafc04a0de77f840f.png

 图5 不同温度下的HPPC放电实验数据

4.SOC-T-OCV模块

这个也是根据实验数据求出的,根据当前时刻的SOC,T,便可求出当前的开路电压。我的查表模块如下,供参考。

fd36568bc7334b81ad19e6b9e0839845.png

 图6 SOC-T-OCV

5. 求端电压

根据下面这3个公式建立的求解端电压的模型如图6所示:

55662e7420664ff984d5830500b92d9b.png

272ce9c33ff44d52b025d3bd327e7d62.png

 

98c15b2866ee4a1da7193edbb0d98461.png

 图7 求端电压

至此,就完成了模型的搭建,在恒流激励下进行仿真的端电压与实际端电压的对比如图8所示,模型的仿真误差如图9所示。

c6398a5978e74cabb1f786324b4da7cd.png

 图8 端电压对比

08eab3939aa741439c614f88dc26b4dc.png

 图9 仿真误差

欧克欧克,今天就写到这里,又到饭点了嘎嘎嘎嘎嘎嘎嘎,有什么问题在评论区或者私聊我。

      硕博期间所有的程序代码,一共2个多g,可以给你指导,赠送半个小时的语音电话答疑。电池数据+辨识程序+各种卡尔曼滤波算法都在里面了,后续还会有新模型的更新。快速入门BMS软件。某鹅:2629471989

 

 

好的,以下是一个简单的 Matlab 代码示例,用于实现对锂电池二阶模型的电容电压进行估计: ```matlab % 设定采样时间间隔和采样次数 Ts = 0.1; % 采样时间间隔 N = 1000; % 采样次数 % 设定锂电池二阶模型的参数值 R1 = 1; % 电阻 R1 R2 = 2; % 电阻 R2 C1 = 1e-6; % 电容 C1 C2 = 2e-6; % 电容 C2 % 初始化电容电压的估计值 Vc1_hat = 0; Vc2_hat = 0; % 生成采样数据 u = randn(1, N); % 随机输入信号 y = zeros(1, N); % 输出信号 for k = 1:N % 计算当前时刻的输出值 y(k) = R1*C1/(R1*C1+R2*C1+R2*C2)*Vc1_hat + R2*C1/(R1*C1+R2*C1+R2*C2)*Vc2_hat + R2*C2/(R1*C1+R2*C1+R2*C2)*u(k); % 使用最小二乘法更新电容电压的估计值 A = [Vc1_hat, Vc2_hat, u(k)]; b = y(k); x = inv(A'*A)*A'*b; Vc1_hat = x(1); Vc2_hat = x(2); end % 绘制估计值和真实值的比较图 t = [0:N-1]*Ts; plot(t, y, 'b', t, Vc1_hat, 'r--', t, Vc2_hat, 'g--'); legend('真实值', '电容1估计值', '电容2估计值'); xlabel('时间'); ylabel('电压'); ``` 在这个示例代码中,我们首先设定了采样时间间隔 `Ts` 和采样次数 `N`,然后设置了锂电池二阶模型的参数值 `R1`、`R2`、`C1` 和 `C2`,初始化了电容电压的估计值 `Vc1_hat` 和 `Vc2_hat`。接着,我们生成了随机输入信号 `u` 和输出信号 `y`,然后在每个时刻上计算输出值,并使用最小二乘法更新电容电压的估计值。最后,我们绘制了估计值和真实值的比较图。 当然,这只是一个简单的示例代码,实际应用中还需要根据具体情况进行调整和优化。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新能源BMS佬大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值