电池

电池之电池充电管理系统

电池充电管理系统,本文是对单个电池锂电池(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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Not Dr.Wang422

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

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

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

打赏作者

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

抵扣说明:

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

余额充值