开源数控电源Xuemeng V6硬件设计详解:基于STM32F103与SC8701的10A可调电源方案

张开发
2026/5/13 17:19:31 15 分钟阅读

分享文章

开源数控电源Xuemeng V6硬件设计详解:基于STM32F103与SC8701的10A可调电源方案
开源数控电源Xuemeng V6硬件设计详解基于STM32F103与SC8701的10A可调电源方案最近很多电子爱好者和刚入门嵌入式开发的朋友问我想自己动手做一个数控电源有没有一个既开源又实用的方案可以参考今天咱们就来详细拆解一个非常优秀的开源项目——Xuemeng V6数控电源。这个项目麻雀虽小五脏俱全用STM32F103做主控SC8701做核心升降压实现了最大10A电流、36V电压的可调输出还自带彩屏和蓝牙调试非常适合学习和复刻。我自己也研究了这个设计发现作者在硬件选型和电路设计上有很多巧思也踩过不少坑最终都优化在了V6.2这个版本里。这篇文章我就带你从零开始把这个项目的硬件设计原理、关键器件选型、以及PCB布局的注意事项都捋清楚让你不仅能看懂还能自己动手做出来。1. 项目概览它到底是个啥简单来说Xuemeng V6是一个桌面级的迷你数控电源。你可以把它理解为一个“智能插座”但它输出的电压和电流是可以通过程序精确控制的。比如你想给一个3.3V的电路板供电或者测试一个12V的小风扇在不同电压下的表现用它就非常方便。它的核心能力如下输入灵活既可以用普通的DC电源适配器比如笔记本电源也可以用支持PD协议的手机充电器通过Type-C口最高输入电压不要超过35V。输出强大输出电压可以在2.5V到36V之间连续调节最大能输出10A的电流足够驱动大部分中小功率的电子设备。显示直观一块2.4英寸的彩色屏幕实时显示输出电压、电流、功率所有状态一目了然。智能控制主控芯片STM32通过PID算法实现“恒压”和“恒流”输出。意思是你设定好一个电压值无论负载怎么变在功率范围内它都能稳定输出这个电压你设定好一个电流值它输出电流达到这个值后就会自动限制防止过流。便于调试板上集成了CH340串口芯片和蓝牙模块用一根USB线就能连接电脑进行程序下载、参数调整和数据监控。为了方便你快速了解它的“家底”我把核心的硬件配置整理成了下面这个表格类别型号/规格说明与作用主控 MCUSTM32F103CBT6ARM Cortex-M3内核72MHz主频128KB Flash20KB RAM。负责整个系统的逻辑控制、PID计算、屏幕驱动和通信。电源控制芯片SC8701QEDR同步4管Buck-Boost控制器。这是电源的“心脏”负责把输入的直流电转换成我们需要的电压。电流检测芯片INA226 (共2颗)高精度电流、电压、功率检测芯片通过I2C通信。一颗检测输入侧一颗检测输出侧为PID控制提供实时数据。PD诱骗芯片CH224K / CH224A插上PD充电器时它能自动“协商”出充电器能提供的最高电压如20V为后续电路提供输入。显示屏2.4英寸 TFT (ILI9341驱动)320x240分辨率通过18Pin插座连接方便拆卸。人机交互1颗拨轮开关用来调节参数、切换菜单比多个独立按键操作更便捷。调试接口CH340N (USB转串口) / SWD / 蓝牙三种调试方式CH340用于串口通信和程序下载SWD用于底层调试蓝牙用于无线连接上位机。PCB规格76mm x 54mm 1.6mm板厚4层板小巧紧凑。绝大部分元件是0603封装少数是0402对焊接比较友好。注意这个项目遵循CC-BY-NC-SA 4.0开源协议可以自由学习、修改和分享但不能用于商业用途。所有设计文件和后续的代码都会开源。2. 核心硬件电路深度解析接下来我们进入硬件的核心部分。我会按照信号和能量的流动顺序从输入到输出把每个关键电路模块掰开揉碎了讲。2.1 供电输入与保护电路电源的“入口”必须安全可靠。Xuemeng V6设计了两种输入方式并做了完善的保护。2.1.1 Type-C PD诱骗电路现在PD充电头遍地都是如果能直接用它们供电就太方便了。这里用的芯片是CH224K。它是怎么工作的当你把支持PD协议的充电器插到板子的Type-C口时CH224K会按照我们预设的规则跟充电器“握手”谈判请求一个特定的电压。V6版本默认配置是请求20V。如何改变请求电压芯片有个CFG1引脚通过外接不同阻值的电阻来告诉芯片我们要多少电压。具体对应关系如下CFG1 外接电阻请求电压6.8KΩ9V24KΩ12V56KΩ15VNC (不焊接)20V (默认)想支持更高的28V PD3.1很简单把CH224K芯片换成CH224A然后把原理图中R277和R278换成0欧姆电阻R279换成210KΩ电阻即可。这两个芯片引脚是兼容的。2.1.2 双输入与“理想二极管”保护既然有DC口和Type-C口两个输入万一用户不小心同时插了两个电源怎么办或者两个电源电压不一样怎么办这就需要“理想二极管”电路来保护。V6.2版本使用的是MX16171D芯片注意不是MX16171D100两者不兼容。原理类比你可以把普通的二极管想象成一个单向阀门电流只能从一个方向过但它有个缺点阀门本身有阻力压降会损耗约0.7V的电压。而“理想二极管”是用一个MOS管和一个控制芯片模拟的阀门MOS管在导通时电阻非常小就像阀门几乎完全打开压降可以低到几十毫伏几乎不损耗电压。电路实现这里用了两套MX16171DNMOS的组合分别管理DC输入和Type-C输入。它们并联在一起最终汇合成一个总输入VIN。这个电路能实现两个关键功能防反接防止电源正负极接反损坏后级电路。自动选择当两个输入同时存在时电压高的那个会自动优先供电并且防止电流从高压端倒灌回低压端。踩坑提醒早期的V6版本使用了LM74610芯片但它工作时MOS管会有约2%的时间关闭来给内部电容充电导致输入电压有微小波动影响了输出稳定性。V6.2换用MX16171D后MOS管可以持续导通彻底解决了这个问题。2.1.3 输入电压电流检测知己知彼百战不殆。我们需要实时知道输入进来的电压和电流是多少。这里用的是INA226芯片。这颗芯片很强大它内部集成了高精度ADC只需要在输入总线上串联一个微小的采样电阻比如0.01欧姆它就能测量电阻两端的压差从而精确计算出电流。同时它还能直接测量总线电压并通过内部乘法器直接算出功率。通信简单所有测量数据都通过I2C总线传给STM32我们编程时只需要读取寄存器即可。布局要点作者在更新日志中提到最初版本当输出电流大于7.5A时会因为电磁干扰(EMI)导致I2C通信出错而死机。在V6.2版本中优化了I2C走线让它远离大电流路径解决了这个问题。这一点在你自己画板时也要特别注意信号线要避开功率环路。2.2 核心Buck-Boost升降压电路这是整个电源最核心、最精彩的部分决定了输出能力。主角是SC8701QEDR。2.2.1 芯片特性与一个关键限制SC8701是一颗同步四开关Buck-Boost控制器。简单理解就是它内部有四个MOS管组成一个H桥通过精密的控制可以实现三种工作模式降压 (Buck)当输入电压高于输出电压时。升压 (Boost)当输入电压低于输出电压时。升降压 (Buck-Boost)当输入电压在输出电压附近波动时。这保证了无论输入电压是多少在5-32V范围内我们都能稳定输出2.5-36V的电压。但是数据手册里给出了一个公式VOUT VOUT_SET × (1/6 5/6 × D)。其中D是PWM占空比0%-100%VOUT_SET是我们通过电阻分压网络设定的一个基准电压。这里有个坑公式里的(1/6 5/6 × D)这一项最小值是1/6当D0时。这意味着如果我们用传统方法最低输出电压被限制在了VOUT_SET的1/6。比如你想输出3.3V那么VOUT_SET就要设为19.8V左右但这又限制了最大输出电压。2.2.2 巧妙的电压范围拓展方案作者想出了一个非常巧妙的办法来绕过这个限制。我们来看完整的输出电压公式Vout (VFB_REF × (1 Rup / Rdown)) × (1/6 5/6 × D)其中VFB_REF是芯片内部的基准电压1.22VRup和Rdown是FB引脚上的分压电阻。既然(1/6 5/6 × D)这一项动不了我们就不动它直接让D100%即PWM全开这一项固定为1。然后我们去动前面(VFB_REF × (1 Rup / Rdown))这一项。怎么动作者在FB引脚的分压网络上并联了一个由DAC控制的电阻网络。具体电路等效后可以得到一个关键公式Vout 39.345 - 15.625 × VdacVdac是什么这是由STM32内部DAC或外置MCP4725 DAC芯片产生的一个0-2.5V的可调电压。这个公式意味着什么输出电压Vout和DAC电压Vdac成线性反比关系。当Vdac为0V时理论输出约39V当Vdac为2.44V时理论输出约1.2V。带来的好处范围拓宽成功将最低输出电压降到了2.5V以下最高接近36V完美覆盖设计需求。线性控制STM32只需要线性地改变DAC的输出电压就能线性地控制电源输出电压这让PID算法实现起来非常直观和稳定。这个设计是硬件上的一个亮点它通过改变反馈网络巧妙地突破了芯片本身的限制。2.3 输出部分与整体布局考量输出部分相对简单主要任务是“净化”和“测量”。防倒灌同样使用了一颗MX16171D构成理想二极管防止外部设备向电源倒灌电。滤波使用了多颗大容值、低ESR的电解电容和陶瓷电容进行滤波确保输出纹波尽可能小。接口提供了常用的4mm香蕉头插座和USB-A母座方便连接各种设备。输出检测另一颗INA226芯片负责精确测量输出电压和电流并将数据反馈给STM32形成闭环控制。关于PCB布局的宝贵经验 作者在更新日志里提到一个关键问题在V6.2之前当输出电流超过6A时MCU会死机。排查后发现是**“地弹”** 问题。什么是地弹在大电流快速变化的路径上比如SC8701的开关节点电流会在地平面上产生瞬间的电压波动。如果数字电路如MCU和功率电路的地没有处理好这个波动就会像噪声一样干扰MCU导致其复位或死机。V6.2的解决方案重新优化了PCB布局并进行了地平面分割。简单说就是把大电流的功率地和小信号的数字地在物理上分开只在一点连接单点接地。这样功率地上的剧烈波动就不会直接窜到数字地上。改版后通过了10A电流半小时的满载测试。3. 焊接与调试避坑指南如果你心动了想自己动手做一个那么下面这些来自作者和早期复刻者的“血泪教训”你一定要看能帮你省下不少时间和钞票。3.1 关键物料避坑有些芯片假货多或者型号相似容易买错。INA226务必选择靠谱的店铺如作者推荐的有复刻者买到假货测24V电压只能显示18V完全无法使用。理想二极管芯片MX16171D和MX16171D100引脚定义不同不能直接替换一定要买对。SC8701这是QFN封装底部有散热焊盘必须用热风枪焊接。焊接前最好用手机微距镜头检查一下虚焊可能导致MOS管和芯片直接烧毁。3.2 推荐焊接流程对于这种双面贴片、有密脚芯片的板子合理的焊接顺序很重要。先焊MCU面给这一面刷上锡膏贴上STM32、Flash、拨轮开关、屏幕插座等元件然后用加热台俗称“铁板烧”整体加热焊接。这样效率高成功率也高。焊接后检查焊完这一面先别急着焊另一面务必用万用表检查3.3V和12V的稳压芯片输出端对地是否短路SC8701的FB反馈引脚对地是否短路作者曾在这里踩坑导致3.3V输出变成9V烧了一整套芯片确认无误后可以通过SWD接口或DC口供一个5V弱电看看MCU能否正常工作。再焊功率面给另一面刷锡膏贴上SC8701、MOS管、电感等功率器件用热风枪仔细吹焊。SC8701的焊接是关键在芯片四周和底部焊盘加足焊油风枪均匀加热待锡球融化后用镊子轻轻推一下芯片感觉其自动归位“嗒”一下即可。最后再用烙铁马蹄头温度稍高在芯片四周引脚上拖焊一遍确保没有桥接。最后焊大件手工焊接所有的电解电容、接线端子等插件元件。最终上电前检查再次用万用表蜂鸣档仔细检查输入输出端是否有短路。确认无误后再连接电源进行测试。3.3 常见问题与解决开机后设置低电压输出时震荡电压跳动这是PID参数不适合当前负载导致的。可以使用作者提供的上位机软件适当调小PID控制环的比例(P)和积分(I)参数系统就会稳定下来。程序下载对于初学者最推荐用串口下载。准备一根普通的USB数据线能传数据的按照文档说明使用FlyMCU软件按住Boot0键再按Reset进入下载模式非常方便。上位机打不开作者提供的上位机程序基于Python打包建议在Windows 10及以上系统运行。Windows 7系统可能缺少必要的动态链接库。这个Xuemeng V6项目从核心的升降压电路设计到细致的PCB布局优化再到软件上的PID控制形成了一个非常完整的学习案例。它不仅仅是一个可用的电源更是一份生动的硬件设计教材。希望这篇详解能帮你吃透它的设计精髓。硬件上如果遇到问题可以到作者的开源社区和大家一起讨论。接下来就期待作者正在开发的、功能更强大的V7版本吧。

更多文章