赞
踩
基本概念介绍
mAh:电池容量的计量单位,实际就是电池中可以释放为外部使用的电子的总数.
库仑的国际标准单位为电流乘于时间的安培秒.
1mAh=0.001安培*3600秒=3.6安培秒=3.6库仑
mAh不是标准单位,但是这个单位可以很方便的用于计量和计算。eg:一颗900mAh的电池可以提供300mA恒流的持续3小时的供电能力。
通过实时获取前端AFE芯片的电流值Info.CurCadc,将电流值赋值到 gCoulomb;再将此电流值累加到 gAccCoulomb;
Info.CurCadc 单位:10mA
{
}
18S进行一次计算 BmsSoc_gauging()
{
将 gAccCoulomb 值转化给 Coulomb ——单位:mAh
Coulomb = (gAccCoulomb*10)/SOC_SAMPLE_TIME; //提取积分值,扩大了10倍(mAh)
充电状态
Coulomb = (Coulomb*SOC_CHG_EFF)/1000; //根据充电效率计算充电累加
放电状态
k = k*CalcDsgRate(AbsInt32(Coulomb))/100;
先计算温度放电系数
再计算放电倍率剩余容量累加该值
SoftSoc.RemainCap += Coulomb;
放电容量累计:
//计算放电总循环容量,用于计算循环次数
SoftSoc.TotalDsgCap += Coulomb;
放电容量累计达到总容量的80%后,循环次数+1
SOC = 剩余容量 / 循环容量
}
void BmsSoc_gauging(void) { U32 soc_temp;//循环容量16位*100后会溢出 uint16 CellVoltage; int32 Coulomb,k = 100,CoulombAve; SoftSoc.AccCounter = 0; Coulomb = (gAccCoulomb*10)/SOC_SAMPLE_TIME;//提取积分值,扩大了10倍(mAh) CoulombAve = Coulomb/10; gAccCoulomb = 0; if(battery.BatSta == BatteryCharging) { Coulomb = (Coulomb*SOC_CHG_EFF)/1000;//根据充电效率计算充电累加 SoftSoc.CoulombK = 100;//积分器增益系数 } else { k = CalcTempDsgCoff();//计算温度放电系数 SoftSoc.CoulombK = k*CalcDsgRate(AbsInt32(Coulomb))/100;//计算放电倍率 Coulomb = Coulomb*SoftSoc.CoulombK/100; } Coulomb = Coulomb/20; //单位换算回0.1mAh if((-Coulomb) >= (int32)SoftSoc.RemainCap) { SoftSoc.RemainCap = 0; } else { SoftSoc.RemainCap += Coulomb; //循环次数由放电容量计算 if(Coulomb < 0) { SoftSoc.TotalDsgCap += Coulomb;// 计算放电总循环容量,用于计算循环次数 } if(SoftSoc.TotalDsgCap < 0) { if((AbsInt32(SoftSoc.TotalDsgCap)/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。