充电是一个过程,需要电池包和充电器间进行频繁的通信,以保证电池安全和寿命。由于通信速率要求不高,以及精简接口的考虑,通常采用GPIO自定义单线通信
。
采用两路GPIO组成一个半双工的单总线:
注意:单总线的空闲状态为高电平。TX要开漏,RX要下降沿中断。
需要定义出起始位
、逻辑1
、逻辑0
:
电池包需要通知充电器开始充电(开始帧)、充电不同阶段可接受的充电倍率(过程帧)、充电保护(停止帧)、电量报满、风扇的开停、电池总电压、电池总电流、电芯温度等;
对于充电器来说,主要关注的是前三个,进而通过PWM控制电源开关芯片控制输出电流的大小,并通知电池包实际的充电电流,电池包将使用此电流值进行安时积分,计算SOC、充电次数(循环次数)等。
为了安全考虑,充电的通信以电池包为主导。当然,根据的策略的不同,充电器可按照电池包的指令执行,也可以当作建议处理。
实际的充电过程取决于电芯规格书,下图采用常见的CC-CV
(恒流恒压)方式充电:
充电过程中,各阶段的切换条件为测得的当前电压
,控制对象为充电电流
。例如:电压为1.5V时,控制充电电流为0.1C,当检测单节电压达到3.0V时,电池包将发送一帧数据给充电器,告知提供1C的充电电流。
根据当前温度和循环次数,计算各阶段和工况下充电截止电流
和充电截止电压
。还可以通过内阻来补偿截止电压。
获取充电器额定电压和额定电流,与电池包的额定电压和额定电流比较。额定电压不匹配充电失败,匹配则比较额定电流,取较小值,开始充电。
预充电即涓流充电,一般采用0.1C倍率进行充电,若电池包容量为2Ah,则涓流值为0.2A。
恒流充电指以电芯标称容量的倍率进行充电(1C),充至 截止电压
,受 1.充电参数准备
中条件影响。
恒压充电是一个向 截止电压
不断逼近的过程,电流不断减少,直至电流减为0,才结束充电。但一般会在恒流结束时就向充电器发送充满帧
报满,充电灯显示充满。
在恒压充电的后期,由于有一些充电器的电流控制精度不够,达不到0.1C,会把0.1C认为0A,会出现反复开关的情况。
二、充电过程
中描述的属于理想充电过程,实际情况可能会在某一阶段触发保护,使充电中断或者失败,直接跳出流程。充电保护也属于充电的一部分。
电芯(如18650)一般的充电温度在0℃ ~ 45℃
之间。
注意,上电过高温保护和充电过高温保护不同,此时还未进入充电环节,如果一上电环境温度就在45℃,那么开启充电后温度必然上升,便会触发充电过高温保护
,所以一般会把上电过高温保护设置的更低,比如42℃
。也就是说,一上电温度都这么高了,就没有开启充电的必要了。
低温不做特殊要求,以规格书为准(0℃)。
上电时,单节电芯电压过低,一般指低于2V,不开启充电。
预充电时间过长,一般指5min,意味着可能充电器故障没有提供电流或者电池组充不进电,应该及时中断充电。
单节电芯压差过大,一般指0.5V,意味着电芯已经严重不均衡,可能单节电芯出现了问题,不予以充电。那么有人要问,为什么充电前不判断压差?
这里要提到内阻特性,如下图charge曲线,当SOC很低时,电芯内阻是较大的。根据U = R×I ,此时加电流,R越大,U越大,不同电芯间的差异将被放大,存在压差是正常的,不足以说明问题。
已述,18650电芯一般的充电温度在0℃ ~ 45℃
之间。没有疑问,这是充电过程中过温保护的范围。但是注意,环境温度是变化的,不可能一直过温,所以需要设置一个过温恢复的阈值。
这里有一个3℃的温度回差,防止充电器在0℃和45℃处反复横跳,低温恢复一般为3℃,高温一般在环境温度低于42℃时恢复充电。
对于18650电芯,当 单节电芯最高电压
达到4.3V,触发过压保护。
如4,当总电压达到 4.3×串联数 ,触发过压保护。
需要通过充电器给出的实时电流积分出已充容量,加上初始容量,如果超过了10%的标称容量,则触发保护。这样可以从容量和电压多个维度保护电池组。