开路电压法与电流积分法

开路电压法与电流积分法

在这里插入图片描述
左边第一公式中是电池放电容量/新电池的电池容量,随着电池老化,放电不能完全
中间的是SOH-电池放电容量/新电池的电池容量
右边是电池放电容量/电池老化的电池容量(常用)充满时候百分之一百,放完后为0
在这里插入图片描述
SOC估计方法
在这里插入图片描述
第一个电流积分法,问题是,初始电量Qinit以及Qfull精确获取比较难。然后积分的i可能有误差,经过积分误差越来越大,
第二个开路电压法的问题就是,测量需要稳态开路电压,即测量前需要长时间静置。
第三个阻抗法,目前比较前言,在实验室可以做到,但是贵而且只是针对单体电池
第四个神经网络算法,需要大量训练,训练准确度影响经过。
第五个是卡尔曼滤波。

开路电压和电流积分结合法.
在这里插入图片描述
这两个方法的问题
在这里插入图片描述
加一个闭环的回路
在这里插入图片描述
但是治标不治本

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于开路电压和安时积分法的锂电池SOC估算代码,使用MATLAB实现: ```matlab % 基于开路电压和安时积分法的锂电池SOC估算代码 % 作者:AI学习社区 % 读取电池充放电数据 data = readmatrix('battery_data.csv'); % 电池参数设置 capacity = 2000; % 锂电池容量,单位mAh nominal_voltage = 3.7; % 锂电池标称电压,单位V ocv_soc_curve = [0.00 3.200; 0.10 3.500; 0.20 3.600; 0.30 3.650; 0.40 3.690; 0.50 3.730; 0.60 3.770; 0.70 3.810; 0.80 3.880; 0.90 4.050; 1.00 4.200]; % 开路电压-电量曲线 % 计算电流和SOC time = data(:, 1); % 时间,单位s current = data(:, 2); % 电流,单位mA voltage = data(:, 3); % 电压,单位V soc = zeros(length(time), 1); % 初始化SOC向量 soc(1) = 1.00; % 初始SOC为满电量 for i = 2:length(time) % 计算SOC delta_time = time(i) - time(i-1); % 时间间隔 delta_capacity = current(i) * delta_time / (1000 * 3600); % 电量变化,单位mAh soc(i) = soc(i-1) - delta_capacity / capacity; % 计算开路电压 ocv = interp1(ocv_soc_curve(:, 2), ocv_soc_curve(:, 1), soc(i)); % 对应SOC的开路电压 voltage_ocv = voltage(i) - current(i) * 0.01; % 减去电流乘以内阻得到开路电压 voltage_diff = voltage_ocv - ocv; % 实际电压开路电压的差值 % 更新SOC if voltage_diff < -0.01 % 电池放电 delta_capacity_ocv = interp1(ocv_soc_curve(:, 2), ocv_soc_curve(:, 1), soc(i-1)) - interp1(ocv_soc_curve(:, 2), ocv_soc_curve(:, 1), soc(i)); % 对应SOC的开路电压变化 delta_capacity_real = -current(i) * delta_time / (1000 * 3600); % 实际电量变化,单位mAh delta_capacity_diff = delta_capacity_ocv - delta_capacity_real; % 两种电量变化的差值 soc(i) = soc(i-1) + delta_capacity_diff / capacity; elseif voltage_diff > 0.01 % 电池充电 delta_capacity_ocv = interp1(ocv_soc_curve(:, 2), ocv_soc_curve(:, 1), soc(i)) - interp1(ocv_soc_curve(:, 2), ocv_soc_curve(:, 1), soc(i-1)); % 对应SOC的开路电压变化 delta_capacity_real = current(i) * delta_time / (1000 * 3600); % 实际电量变化,单位mAh delta_capacity_diff = delta_capacity_ocv - delta_capacity_real; % 两种电量变化的差值 soc(i) = soc(i-1) + delta_capacity_diff / capacity; end end % 绘制SOC曲线 plot(time/3600, soc); xlabel('时间(小时)'); ylabel('SOC'); ``` 在上面的代码中,我们首先读取了电池的充放电数据,然后设置了电池的参数,包括容量、标称电压开路电压-电量曲线。接下来,我们计算了电流和SOC,并使用开路电压和安时积分法进行SOC估算。最后,我们绘制了SOC曲线。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值