1. 项目背景与需求解析
去年夏天我在咖啡厅办公时,亲眼目睹邻桌用户的充电宝因为长时间连接充满电的手机而发烫变形。这个场景让我意识到,市面上大多数充电宝缺乏智能断电保护机制,长期过充会显著缩短锂电池寿命。根据实验室数据,锂电池在充满后继续浮充1小时,循环寿命会降低15%-20%。
这个项目就是要开发一套嵌入式控制系统,当检测到连接设备电量达到100%时,自动切断输出电路。核心需求可分解为:
- 精确获取被充电设备的实时电量(精度误差≤5%)
- 设计无物理损耗的电流检测方案
- 实现毫秒级响应的MOSFET开关电路
- 开发自适应充电算法应对不同设备特性
2. 硬件系统设计
2.1 电量检测模块选型
经过对比TI BQ25895、IP2312等主流方案,最终选用集成功率计量的ETA3000芯片,其优势在于:
- 支持I2C接口数字输出,无需额外ADC
- 内置16bit高精度库仑计
- 集成温度补偿算法(-20℃~60℃范围内误差<3%)
- 兼容USB PD/QC等多种快充协议
典型电路连接方式:
c复制// STM32与ETA3000的I2C连接示例
#define ETA_ADDR 0x55
void I2C_Init() {
GPIO_InitTypeDef GPIO_InitStruct;
I2C_HandleTypeDef hi2c1;
// SCL - PB6, SDA - PB7
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
HAL_I2C_Init(&hi2c1);
}
2.2 功率开关电路设计
采用N沟道MOSFET SI2337作为开关元件,关键参数:
- Vds耐压30V(满足QC3.0的20V输出需求)
- 导通电阻8mΩ(满载5A时温升<15℃)
- 栅极电荷7.3nC(开关延迟<100ns)
驱动电路使用专用栅极驱动器TC4427,配合光耦隔离确保安全:
code复制[USB输入] -> [ETA3000] -> [STM32] -> [TC4427] -> [SI2337] -> [USB输出]
↑
[温度传感器]
3. 核心算法实现
3.1 充电状态机设计
定义5种工作状态:
mermaid复制stateDiagram
[*] --> IDLE
IDLE --> CHARGING: 设备接入
CHARGING --> FULL: 电量≥95%且电流<100mA
FULL --> IDLE: 断开连接
CHARGING --> ERROR: 温度>60℃
3.2 动态阈值调整算法
针对不同设备的充电特性,实现自适应判断:
python复制def check_full_charge(current, voltage, soc):
# 苹果设备特征
if voltage > 4.9V and current < 50mA:
return True
# 安卓设备特征
elif soc >= 98 and current < 100mA:
return True
# 应对异常情况
elif voltage > 5.2V or current > 2A:
trigger_protection()
return False
4. 软件实现细节
4.1 嵌入式固件开发
基于STM32CubeMX创建工程,关键配置:
- 启用I2C1接口(400kHz速率)
- 配置ADC通道监测温度
- 设置TIM2产生1kHz PWM控制MOSFET
- 启用看门狗(窗口模式,2s超时)
核心中断处理逻辑:
c复制void [HAL](https://taotoken.net/?utm_source=hardware)_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
static uint8_t over_temp_cnt = 0;
if(hadc->Instance == ADC1) {
float temp = (__HAL_ADC_GET_VALUE(hadc)*3.3/4096 - 0.76)/0.0025 + 25;
if(temp > 60) over_temp_cnt++;
if(over_temp_cnt > 5) emergency_shutdown();
}
}
4.2 上位机调试工具
使用PyQt5开发PC端监控软件,主要功能:
- 实时显示电压/电流曲线
- 记录充电历史数据
- 固件OTA升级
- 参数校准界面
通信协议采用自定义二进制格式:
code复制[HEAD][LEN][CMD][DATA][CRC]
0x55 0x08 0xA2 ... 0xXX
5. 生产测试方案
5.1 老化测试标准
设计三项加速老化实验:
- 连续充放电循环测试(0%-100% 500次)
- 高温高湿测试(85℃/85%RH 72h)
- 机械振动测试(10-500Hz 3轴各30min)
5.2 校准工艺流程
建立三级校准体系:
- 电压基准校准(使用AD584J基准源)
- 电流传感器校准(0.5A-3A 5个点)
- 温度补偿校准(-10℃~70℃恒温箱)
校准数据存储于芯片Flash的特定扇区,采用ECC校验保护。
6. 实测数据对比
对比某品牌普通充电宝的电池衰减情况:
| 循环次数 | 本项目容量保持率 | 普通产品容量保持率 |
|---|---|---|
| 100 | 99.2% | 95.7% |
| 300 | 97.8% | 88.3% |
| 500 | 96.1% | 81.5% |
测试条件:25℃环境,1C充放电速率,每次完全循环包含12小时静置。
7. 工程优化建议
在实际量产中我们发现几个关键改进点:
- MOSFET选型应优先考虑Vgs(th)阈值电压的批次一致性
- 库仑计芯片需要做防ESD处理(建议添加TVS二极管)
- 软件上增加涓流充电阶段(90%-100%区间降低电流)
- 外壳设计要保证散热孔不被遮挡
通过3个月的实际使用跟踪,优化后的版本在高温环境下故障率降低72%。