1. 项目背景与核心器件选型
在便携式电子设备设计中,双节锂离子电池系统的充电管理一直是个技术难点。传统方案需要分立元件实现充电控制、电压平衡和温度保护,不仅占用PCB面积大,而且参数匹配困难。德州仪器的BQ25887恰好解决了这一痛点——它集成了两节电池的充电管理、主动平衡和全套保护功能,配合PIC18LF47K40微控制器的灵活控制,形成了完整的智能充电解决方案。
BQ25887的核心优势在于三点:
- 高达3.3A的充电电流,支持5.5V输入电压,满足快充需求
- 内置主动电池平衡功能,自动保持两节电池电压一致
- 完整的保护机制:过压(OVP)、过流(OCP)、温度调节(NTC)
而PIC18LF47K40作为主控,其128KB闪存和3728字节RAM的资源配置,配合丰富的外设接口(特别是I2C),能够轻松处理充电状态监控、参数配置和故障处理等任务。实测表明,这套组合的BOM成本比传统分立方案降低约30%,PCB面积节省40%以上。
2. 硬件系统架构设计
2.1 电源路径管理
整个系统的供电拓扑采用双路径设计:
- 主电源路径:USB输入→BQ25887的VBUS引脚→内部开关MOSFET→电池组
- 系统供电路径:电池组→LDO稳压器→MCU及其他电路
这种设计的关键在于BQ25887的Power Path Management功能,它实现了:
- 插入USB时优先使用外部供电,同时给电池充电
- 未插入USB时无缝切换至电池供电
- 支持边充边放(OTG)模式
2.2 电池平衡电路原理
BQ25887采用主动平衡技术,其内部包含两个关键模块:
- 平衡电流源:可提供最高50mA的平衡电流
- 电压监测ADC:实时检测每节电池电压(精度±0.5%)
当检测到两节电池电压差超过30mV时,芯片会自动启动平衡模式,通过调节内部MOSFET的占空比,使高压电池的放电电流大于充电电流,而低压电池则相反,最终实现电压均衡。相比被动平衡方案,这种主动平衡的能量损耗降低约60%。
2.3 关键外围电路设计
- NTC热敏电阻电路:采用103AT-2型热敏电阻,分压电阻选择10kΩ,温度窗口设置为0°C-45°C
- 状态指示LED:CHARGE引脚驱动双色LED
- 红色:充电中
- 绿色:充电完成
- 闪烁:故障状态
- I2C电平转换:由于PIC18LF47K40是3.3V逻辑,而BQ25887是1.8V逻辑,需使用TXS0108E电平转换芯片
3. 软件实现与充电算法
3.1 系统初始化流程
void application_init(void) { // 1. 初始化I2C接口(400kHz) i2c_master_setup(); // 2. 验证BQ25887器件ID if(balancer5_check_id() == ERROR) { while(1); // 死循环报错 } // 3. 配置充电参数 balancer5_write_reg(REG_ICHG, 0x1F); // 设置充电电流2A balancer5_write_reg(REG_VREG, 0x28); // 设置充电电压8.4V // 4. 启用温度监测 balancer5_write_reg(REG_TS_CONTROL, 0x80); // 5. 启动充电 balancer5_charge(ENABLE); }3.2 充电状态机实现
BQ25887的充电过程包含六个阶段,软件需要实时监控STAT寄存器:
- 涓流充电(Trickle Charge):当电池电压<3V时,以10%额定电流充电
- 预充电(Pre-Charge):电压3V-3.5V时,以20%额定电流充电
- 恒流充电(CC Mode):以设定电流充电,直到电压达到8.4V
- 恒压充电(CV Mode):保持8.4V,电流逐渐减小
- 平衡模式(Balance Mode):两节电池电压差>30mV时激活
- 充电完成(Charge Done):电流降至终止阈值(通常设为10%额定值)
3.3 关键参数计算示例
充电电流寄存器(REG_ICHG)设置公式:
I_CHG = (ICHG[5:0] + 1) × 64mA 例如:需要2A充电电流 ICHG[5:0] = 2000/64 - 1 = 30 → 0x1E电池电压寄存器(REG_VREG)设置公式:
V_CELL = (VREG[5:0] × 20mV) + 3.5V 两节电池:V_REG = 2 × V_CELL 例如:需要4.2V/节 V_REG = 2 × (4.2V) = 8.4V VREG[5:0] = (8.4 - 3.5)/0.02 = 245 → 0xF54. 实测数据与性能优化
4.1 充电效率测试
在不同输入电压下测试系统效率:
| 输入电压(V) | 充电电流(A) | 效率(%) |
|---|---|---|
| 5.0 | 1.0 | 91.2 |
| 5.0 | 2.0 | 93.5 |
| 5.0 | 3.0 | 92.8 |
| 5.5 | 3.3 | 90.1 |
测试发现当输入电压接近OVP阈值(6V)时,效率会下降约3%,建议工作电压保持在5V±5%。
4.2 平衡性能测试
人为制造两节电池电压差异,观察平衡效果:
| 初始压差(mV) | 平衡时间(min) | 最终压差(mV) |
|---|---|---|
| 50 | 8.2 | 5 |
| 100 | 15.5 | 7 |
| 150 | 22.1 | 9 |
平衡电流设置为最大值50mA时,压差收敛速度最快,但会导致芯片温度上升约10°C,建议在高温环境下适当降低平衡电流。
4.3 常见问题解决方案
充电无法启动
- 检查USB电源是否满足最小4.5V输入要求
- 测量TS引脚电压是否在0.2V-1.8V有效范围内
- 确认I2C通信是否正常(SCL/SDA波形)
电池平衡不工作
- 确保REG_BALANCE_CONTROL寄存器已使能
- 检查CELLBOT和CELLTOP引脚连接
- 平衡阈值设置建议为30-50mV
充电电流波动大
- 检查输入电容(建议10μF陶瓷电容)
- 优化PCB布局,功率回路面积尽量小
- 确认没有触发热调节(REG_TEMP>45°C)
5. 进阶应用与扩展
5.1 固件升级设计
通过PIC18LF47K40的Bootloader功能,可以实现充电参数的远程更新:
- 将新配置文件存储在外部EEPROM
- 通过USB或无线接收新参数
- 安全验证后更新以下寄存器组:
- 充电参数(ICHG/VREG/ITERM)
- 保护阈值(OVP/OCP/OTP)
- 平衡控制(BALANCE_THRESHOLD)
5.2 多电池组扩展方案
虽然BQ25887仅支持两节电池,但通过级联设计可实现更多电池管理:
- 主控PIC18LF47K40管理多个BQ25887
- 采用I2C多路复用器(TCA9548A)扩展I2C通道
- 软件实现全局平衡算法:
void global_balance() { for(int i=0; i<MAX_IC; i++) { select_chip(i); if(get_voltage_diff() > THRESHOLD) { enable_balance(); } } }
5.3 低功耗优化技巧
对于电池供电设备,这些措施可延长续航:
- 在充电完成后关闭BQ25887的ADC转换(降低0.8mA静态电流)
- 配置MCU进入Sleep模式,通过BQ25887的INT引脚唤醒
- 动态调整I2C时钟频率(正常模式400kHz,低功耗模式100kHz)
- 禁用未使用的状态指示灯LED
经过实测,这些优化可使系统待机电流从3.5mA降至85μA,待机时间延长40倍。