从GD32F103VGT6到隔离电源:三通道可编程直流电源实战指南
1. 项目规划与核心器件选型
在开始这个DIY项目之前,我们需要明确几个关键设计目标:三通道独立隔离、0-36V/4A输出范围、0.01V电压分辨率和0.001A电流分辨率。这些指标将直接影响我们的器件选择和电路设计。
主控MCU的选择是第一个关键决策点。GD32F103VGT6之所以成为理想选择,主要基于以下几个考量:
- 100引脚封装提供充足的IO资源
- 1MB Flash空间可存储GUI资源
- 96KB RAM满足显示缓存需求
- 与STM32F103系列兼容的开发环境
模拟信号链的器件选型同样至关重要。我们采用了双通道12位DAC7612和MCP3202组合,这种搭配在精度和成本之间取得了良好平衡:
| 器件类型 | 型号 | 关键参数 | 选择理由 |
|---|---|---|---|
| DAC | DAC7612 | 12位, 双通道, SPI接口 | 满足0.01V分辨率需求 |
| ADC | MCP3202 | 12位, 双通道, SPI接口 | 与DAC精度匹配 |
| 隔离器 | SI8660 | 6通道数字隔离 | 实现完全通道隔离 |
提示:在选择ADC/DAC时,除了分辨率,还需关注积分非线性(INL)和微分非线性(DNL)参数,这些将直接影响实际测量精度。
2. 电源架构设计与实现
实现三通道完全隔离的核心在于电源系统设计。本项目需要5个独立的隔离电源系统:
- 三个输出通道各自的模拟电路供电
- 主控MCU系统供电
- USB通信接口隔离供电
变压器设计要点:
- 采用工频变压器而非开关电源,优先考虑低纹波特性
- 次级绕组需要提供多组电压:±12V、+5V、+4.1V、+3.3V
- 预留足够的功率余量(建议30%以上)
电压转换电路采用经典的线性稳压方案:
交流输入 → 整流桥 → 滤波电容 → LM7812(+12V) → LM7805(+5V) → AMS1117-3.3(+3.3V) ↘ LM7912(-12V) ↘ LM317(+4.1V)实际调试中发现的问题及解决方案:
- 原设计LM7812/LM7805发热严重 → 改用LM2596开关稳压器
- 掉电保存时间不足 → 增加储能电容容量
- 隔离电源交叉干扰 → 优化PCB布局和地平面分割
3. 模拟控制回路详解
借鉴春风电源的经典设计,我们采用电压/电流双回路并联控制架构。这种设计的关键优势在于能够实现恒压(CV)和恒流(CC)模式的无缝切换。
电压控制回路工作流程:
- 输出电压经分压网络(12.4:1)缩小至DAC可比较范围
- 与DAC设定值进行比较,误差信号送入积分器
- 积分输出经驱动级放大后控制功率MOSFET栅极
电流控制回路采用类似架构,但增加了电流采样环节:
输出电流 → 采样电阻(0.05Ω) → 仪表放大器(增益=20) → 比较器 → 积分器 → 驱动级关键参数计算示例:
- 电流检测分辨率 = 0.001A × 0.05Ω × 20 = 1mV
- 对应DAC LSB = 4.096V/4096 = 1mV
- 满足0.001A分辨率要求
注意:功率管选择应考虑足够的电压/电流余量,建议Vds≥100V, Id≥20A的MOSFET。
4. 结构设计与散热解决方案
对于总功耗可能超过135W的电源系统,散热设计不容忽视。我们的方案采用:
- 60mm方形铝制散热器
- 高风量8025风扇(≥0.3A电流)
- 功率管与散热器间使用优质导热硅脂
机械结构设计要点:
- 采用双层PCB布局:
- 底层:功率电路(整流、滤波、功率管)
- 上层:控制电路(MCU、ADC/DAC、显示驱动)
- 变压器与散热器分置两侧避免热耦合
- 前面板预留足够空间容纳:
- TFT显示屏
- 编码旋钮
- 功能按键组
按键选择经历了多次迭代:
- 初期考虑机械按键+键帽方案
- 中期尝试遥控器硅胶按键
- 最终采用定制固定板+导电黑粒方案
5. PCB设计规范与调试技巧
高质量的PCB设计是项目成功的关键。以下是本项目的实践要点:
布局原则:
- 严格区分模拟/数字区域
- 大电流路径尽量短而宽(≥2mm线宽)
- 敏感信号(如DAC输出)远离高频噪声源
层叠设计建议:
4层板结构: Top Layer - 信号 Inner1 - 模拟地 Inner2 - 电源 Bottom Layer - 数字地调试过程中遇到的典型问题及解决方法:
- DAC输出不稳定:
- 增加基准源滤波电容(10μF钽电容+0.1μF陶瓷)
- 优化隔离电源的负载调整率
- ADC读数跳动大:
- 在采样输入端添加RC滤波(1kΩ+0.1μF)
- 确保模拟地单点连接
- 继电器触点寿命短:
- 增加过零检测电路
- 在触点两端并联RC吸收电路
6. 软件架构与关键算法
虽然硬件是基础,但软件才是发挥系统潜力的关键。我们的固件设计采用模块化架构:
主要功能模块:
- 用户界面(GUI)子系统
- 参数存储管理系统
- 波形生成引擎
- 安全监控守护程序
核心控制逻辑流程:
- 读取面板输入(编码器/触摸屏)
- 更新DAC输出设定值
- 采集ADC反馈值
- 执行保护逻辑判断
- 更新显示内容
PID调节虽然在本项目中未采用,但预留了软件接口。对于追求更高性能的开发者,可以考虑实现以下优化:
// 伪代码示例:PID控制器结构体 typedef struct { float Kp, Ki, Kd; float integral; float prev_error; } PID_Controller; float PID_Update(PID_Controller* pid, float setpoint, float measurement) { float error = setpoint - measurement; pid->integral += error; float derivative = error - pid->prev_error; pid->prev_error = error; return pid->Kp * error + pid->Ki * pid->integral + pid->Kd * derivative; }7. 进阶优化与扩展思路
完成基础版本后,可以考虑以下增强功能:
性能提升方向:
- 改用16位ADC/DAC提高分辨率
- 增加温度补偿算法
- 实现远程控制接口(LAN/USB)
用户体验改进:
- 添加历史数据记录功能
- 支持用户自定义波形
- 开发移动端监控APP
在最近一次硬件迭代中,我们将这些经验应用到了新设计中:
- 改用4层PCB板改善EMC性能
- 升级至GD32F450系列MCU获得更高性能
- 增加Type-C接口替代传统USB-B