电池之电池充电管理系统
电池充电管理系统,本文是对单个电池锂电池(3.3V)进行充电管理分析。对锂电池充电的各个阶段进行分析。
一、锂电池充电阶段逻辑
1.1充电阶段
阶段1:涓流充电
涓流充电用来对完全放电的电池单元进行预充(恢复性充电)。
阶段2:恒流充电
当电池电压上升到涓流充电阈值时,(此阈值应该有滞回)提高充电电流进行恒流充电
阶段3:恒压充电
当电池电压上升到4.2V时,恒流充电结束,开始恒压充电阶段。电流根据电芯饱和程度,随着充电过程慢慢减小,当减小到0.01C时,认为充电终止。
阶段4:充电终止
充电终止方法1:
a.最小充电电流
b.定时器
c.最小充电电流+定时器 结合
充电终止方法2:
a从恒压充电阶段开始计时,持续充电1小时后终止充电。
二、充电时序图
三、软件设计
1.涓流充电电压阈值(滞回)
2.恒流充电电压阈值(滞回)
3.充电时间
4.恒流充电电流值
5.恒压充电的电压值,
6.充电结束的电流阈值,
中断处理,提供sys接口给上层都充电的状态,包括
1.电池的类型,
2.电池最高电压,
3.电池最低电压,
4.电池当前电压,
5.电池电量的百分比,
6.电池的状态,
7.充电电流和电池温度
四、软件代码
此部分代码中的恒压充电部分有两个部分,充电逻辑为20S高压充,6秒低压充电
4.1充电控制管理逻辑函数
下面展示一些 内联代码片
。
//充电逻辑变量
typedef enum
{
en_Check_step, //检查
en_B_I_step, //恒流充电
en_B_VH_step, //恒压充电(高充电电压)
en_B_VL_step, //恒压充电(低充电电压)
en_B_step4
}CHARGE_STEP;
typedef struct
{
CHARGE_Main_STEP Main_step; //主状态逻辑
CHARGE_STEP Charge_step; //充电逻辑
Bat_Check_step Check_step; //自检逻辑
} CHARGE_STATE;
typedef struct
{
ALP_MAIN_STATE MAIN_STATE;
CHECK_STATE CHECK_Step;
IDEL_STATE IDEL_Step;
INVERT_STATE INVERT_Step;
CHARGE_STATE CHARGE_Step;
ERROR_STATE ERROR_Step;
}STATE;
STATE m_ALP_STATE;
STATE *p_ALP_STATE = &m_ALP_STATE;
//进入充电状态函数
void CHARGE_STATE_Handle()
{
Charge_Protect();
switch(p_ALP_STATE->CHARGE_Step.Main_step)
{
case en_cInit_step:
p_ALP_STATE->CHARGE_Step.Charge_step = en_Check_step;
p_ALP_STATE->CHARGE_Step.Check_step = B_c_step0;
p_ALP_STATE->CHARGE_Step.Main_step = en_cInit_step;
if(p_Bat_V->si >= p_Bat_VCharge->si)
{
p_ALP_STATE->CHARGE_Step.Main_step = en_Charge_step;
Vchg_ref++;
}else
{
if(Vchg_ref>1)
Vchg_ref--;
}
if(P_sys_clk->tf.fb.f_1s)
{
p_gcout->CRL_Cnt++;
if(p_gcout->CRL_Cnt>4)
{
p_ALP_STATE->CHARGE_Step.Main_step = en_Charge_step;
p_gcout->CRL_Cnt = 0;
}
}
break;
case en_Charge_step:
{
Charge_Battery_Manage();
}
break;
default:break;
}
Set_V_ref(Vchg_ref);
}
// A code block充电管理逻辑控制函数
```void Charge_Battery_Manage()
{
/****************充电主逻辑******************/
switch(p_ALP_STATE->CHARGE_Step.Charge_step)
{
/*断开电池时 匹配充电电压和电池电压*/
case en_Check_step:
{
Jump_bt = 1;//2019 0315 取消充电前电池自检方法
if(Jump_bt)
{
Jump_bt = 0;
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_I_step;
}else
{
p_Self_io->bit.RL_Charge=0;
if(Battery_test())//电池在线或损坏测试
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_I_step;
}
}
break;
case en_B_I_step:
{
fp_BUZZER_DEN();
p_Self_io->bit.RL_Charge=1; //电池控制继电器
if(p_Bat_ICharge->si>B_I_H) //恒流充电,保证电池电流在0.7-0.9A
{
if(Vchg_ref>1)
Vchg_ref--;
}else if(p_Bat_ICharge->si<B_I_L)
{
Vchg_ref++;
if(p_Bat_V->si>BI2BV)
{
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_VH_step;
}
}else
{
}
break;
}
case en_B_VH_step:
{
bool Test_start = 0;
if(p_Bat_ICharge->si>B_I_H)
{
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_I_step;
VH_Cout = 0;
}
if(P_sys_clk->tf.fb.f_1s)
{
VH_Cout++;
if(VH_Cout<30)
{
Test_start = 1;
}else
{
Test_start = 0;
}
if(VH_Cout > 20)//20s
{
VH_Cout = 0;
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_VL_step;
}
}
if(Test_start)
{
Battery_test_1();
}else
{
if(p_Bat_VCharge->si>B_V_H+1)
{
if(Vchg_ref>1)
Vchg_ref--;
}else if(p_Bat_VCharge->si<B_V_H-1)
{
Vchg_ref++;
}
}
break;
}
case en_B_VL_step:
{
if(p_Bat_ICharge->si>B_I_H)
{
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_I_step;
VL_Cout = 0;
}
if(p_Bat_VCharge->si>B_V_L)
{
if(Vchg_ref>10)
Vchg_ref-=10;
}else if(p_Bat_VCharge->si<B_V_L)
{
Vchg_ref+=10;
}
if(Fuc->p_D->p_D1->bat_volage.dis_value<=360)
{
Fuc->p_D->p_D0->Error_subcode.dis_value = 2;
Error_Handel(E0001);//无电池,电池组连接断开
Vchg_ref = 4500;//报故障之后调回
VL_Cout = 0;
}
if(P_sys_clk->tf.fb.f_1s)
{
VL_Cout++;
if((VL_Cout > 6)||(Vchg_ref<1700))
{
VL_Cout = 0;
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_VH_step;
}
}
break;
}
case en_B_step4:
{
p_ALP_STATE->CHARGE_Step.Charge_step = en_B_VH_step;
}
break;
default:break;
}
return 0;
}
```javascript
// An highlighted block
var foo = 'bar';
4.2采样处理
五、相关知识要点
c (电池放电"C"倍率)
用来表示电池充放电能力倍率。1C表示电池一小时完全放电时电流强度。
如标称为2200mA·h的18650电池在1C强度下放电1小时放电完成,此时该放电电流为2200mA。
充放电倍率=充放电电流/额定容量;例如:额定容量为100A·h的电池用20A放电时,其放电倍率为0.2C。
电池放电C率,1C,2C,0.2C是电池放电速率:表示放电快慢的一种量度。所用的容量1小时放电完毕,称为1C放电;5小时放电完毕,则称为1/5=0.2C放电。一般可以通过不同的放电电流来检测电池的容量。
六 注意要点
项目 | 系统保护参数设置表 |
---|---|
电池充电门限最高电压 | 3900mv |
电池放电门限最低电压 | 2600mv |
电池充电门限最高温度 | 65 |
电池放电门限最低温度 | 0 |
电池短路门限电流 | 30A |
电池最大门限充电电流 | 10A |
电池放电门限最高温度 | 65 |
电池均衡门限电压 | 100mV |
电池均衡门限最低电压 | 3400mv |
异常延时动作时间 | 1s |