1. 项目概述:数控恒流恒压电源与锂电池智能充电系统
在电子设备研发和DIY领域,电源管理一直是核心痛点。这个项目将数控恒流恒压电源与锂电池智能充电系统相结合,并集成陶晶驰串口屏作为人机交互界面,形成了一个完整的智能充电解决方案。我最初接触这类设计是在为无人机电池组开发充电系统时,发现市面上的通用充电器无法满足高精度、可编程的充电需求。
这套系统的独特之处在于:
- 采用数字控制替代传统模拟电路,实现0.01V/0.01A级的精度调节
- 恒流(CC)和恒压(CV)模式自动切换,完美适配锂电池充电曲线
- 陶晶驰串口屏提供直观的参数设置和实时监控界面
- 完整的程序源码和设计资料,支持二次开发
关键提示:锂电池充电对电压精度要求极高,普通电源±5%的误差就可能影响电池寿命,而本方案可做到±0.1%的精度控制。
2. 硬件架构深度解析
2.1 功率转换核心设计
电源部分采用两级转换架构:
-
前级AC-DC转换:使用LLC谐振拓扑,效率可达92%以上
- 输入:AC 220V ±15%
- 输出:DC 24V/5A(为后级提供稳定母线电压)
- 关键元件:NCP1399控制器+MOSFET半桥
-
后级DC-DC调节:
mermaid复制graph TD A[24V输入] --> B[Buck降压电路] B --> C[电流采样] C --> D[误差放大] D --> E[PWM控制] E --> F[驱动电路] F --> B(注:实际输出应为文字描述)
采用同步Buck拓扑,关键参数:- 控制芯片:STM32F103的硬件PWM模块
- 开关频率:150kHz(权衡效率和纹波)
- 功率管:IRL3803S(30V/195A)
- 电流采样:INA240(双向±80V共模电压)
2.2 高精度测量电路
电压电流测量采用独立通道设计:
-
电压测量:
- 分压电阻:0.1%精度金属膜电阻
- ADC基准:REF5025(2.5V±0.05%)
- 测量范围:0-30V,分辨率1mV
-
电流测量:
- 分流器:75mV/5A(15mΩ)
- 运放电路:AD8629(零漂移放大器)
- 测量范围:0-5A,分辨率1mA
实测数据对比:
| 参数 | 标称值 | 实测值 | 误差 |
|---|---|---|---|
| 电压精度 | ±0.1% | ±0.08% | 优 |
| 电流精度 | ±0.2% | ±0.15% | 优 |
| 纹波电压 | <5mV | 3.2mV | 优 |
3. 软件控制逻辑剖析
3.1 充电状态机设计
锂电池充电典型流程:
c复制enum ChargeState {
IDLE, // 待机
PRE_CHARGE, // 预充(电压<3V)
CC_CHARGE, // 恒流快充
CV_CHARGE, // 恒压补电
COMPLETE, // 充电完成
FAULT // 异常状态
};
void charge_task() {
switch(state) {
case PRE_CHARGE:
set_voltage(3.0V);
set_current(0.1C);
if(bat_voltage > 3.0V) state = CC_CHARGE;
break;
case CC_CHARGE:
set_voltage(4.2V);
set_current(1.0C);
if(current < 0.1C) state = CV_CHARGE;
break;
// ...其他状态处理
}
}
3.2 PID控制算法实现
电压/电流双闭环控制:
c复制typedef struct {
float Kp, Ki, Kd;
float integral;
float prev_error;
} PID;
float pid_update(PID* pid, float setpoint, float feedback) {
float error = setpoint - feedback;
pid->integral += error;
float derivative = error - pid->prev_error;
float output = pid->Kp * error
+ pid->Ki * pid->integral
+ pid->Kd * derivative;
pid->prev_error = error;
return output;
}
// PWM占空比计算
void control_task() {
float volt_out = pid_update(&volt_pid, set_volt, actual_volt);
float curr_out = pid_update(&curr_pid, set_curr, actual_curr);
// 选择更小的输出作为最终限制
pwm_duty = MIN(volt_out, curr_out);
set_pwm_duty(pwm_duty);
}
参数整定经验值:
| 参数 | 电压环 | 电流环 |
|---|---|---|
| Kp | 0.8 | 1.2 |
| Ki | 0.05 | 0.1 |
| Kd | 0.01 | 0.02 |
4. 陶晶驰串口屏开发详解
4.1 界面设计要点
典型充电器界面元素:
-
主监控页面:
- 实时电压/电流数字显示
- 电池容量进度条
- 充电状态图标
- 温度显示
-
参数设置页面:
- 电压设定(3.0-4.2V)
- 电流设定(0.1-5.0A)
- 充电模式选择(Li-ion/LiPo/自定义)
- 存储预设参数
-
历史记录页面:
- 充电容量统计
- 时间-电压曲线
- 异常记录查询
4.2 通信协议解析
MODBUS-RTU协议帧示例:
code复制[设备地址][功能码][数据地址][数据长度][CRC校验]
具体数据点示例:
| 变量名 | 地址 | 类型 | 说明 |
|---|---|---|---|
| 输出电压 | 0x10 | uint16 | 实际值×100 |
| 输出电流 | 0x11 | uint16 | 实际值×1000 |
| 设定电压 | 0x20 | uint16 | 设定值×100 |
| 设定电流 | 0x21 | uint16 | 设定值×1000 |
| 充电状态 | 0x30 | uint8 | 0-5对应状态机状态 |
5. 安全保护机制设计
5.1 硬件保护电路
三级保护架构:
-
初级保护:
- 输入过压:TVS管+压敏电阻
- 输入反接:MOSFET隔离电路
- 输出短路:自恢复保险丝
-
中级保护:
- 过温保护:NTC+比较器
- 过流保护:硬件比较器(响应时间<10μs)
-
软件保护:
- 看门狗定时器
- 参数边界检查
- 异常状态自动复位
5.2 锂电池保护策略
针对不同电池类型的参数设置:
| 参数 | Li-ion | LiPo | LiFePO4 |
|---|---|---|---|
| 满充电压 | 4.2V | 4.2V | 3.6V |
| 截止电压 | 3.0V | 3.0V | 2.5V |
| 最大电流 | 1C | 1C | 1C |
| 温度范围 | 0-45℃ | 5-40℃ | 0-50℃ |
6. 实测性能与优化建议
6.1 效率测试数据
不同负载下的效率曲线:
| 输出功率 | 效率 | 温升 |
|---|---|---|
| 10W | 89.2% | 12℃ |
| 25W | 91.5% | 18℃ |
| 50W | 90.8% | 25℃ |
| 75W | 88.3% | 34℃ |
6.2 常见问题排查
典型故障处理指南:
-
输出电压不稳:
- 检查反馈电阻是否虚焊
- 测量基准电压是否稳定
- 调整PID参数(先加大Ki)
-
电流测量偏差:
- 校准分流器两端电压
- 检查运放增益电阻
- 确认ADC参考电压
-
串口屏无显示:
- 确认电源电压(5V±5%)
- 检查波特率设置(默认115200)
- 验证接线顺序(TX-RX交叉)
调试心得:在初次上电时,建议先断开电池负载,用电子负载测试电源性能,确认保护功能正常后再连接真实电池。