
手撕buck-boost电源
简介
本项目基于HC32F334 MCU实现了buck-boost数字电源最小系统,从PD协议到电源控制算法全部手搓!!
简介:本项目基于HC32F334 MCU实现了buck-boost数字电源最小系统,从PD协议到电源控制算法全部手搓!!开源协议
:GPL 3.0
描述
重要更新及注意事项
———————————————————————————————————————————————————————————
1. 2025-2-7
开始PCB 布局,
2. 2025-10-27
第一次正式发布软硬件,
B站完整的制作过程和演示操作:【手撕USB可调电源-V5】
项目简介
———————————————————————————————————————————————————————————
- 本项目是一个自主可控性较强的一个开源项目,从输入端的PD协议到buck-boost电源
和上位机显示部分的功能实现全部是我个人“手搓”实现,耗时差不多快一年了!,有极高的学习研究价值,
可作为电源相关的学习研究基础平台底座
- 支持USB PD3.0,QC2.0等协议(后期可修改软件适配其他的适配器协议), 可诱骗USB电源适配器输出
5V,9V,12V,15V,20V电源给系统供电
- 宽范围的输出电压,从0.4V ~ 36V可调,最大5A的带载能力,10mA~5A限流连续可调(最低输出电压受输入
电压高低影响,因为PWM最小占空比4%影响)
- 输入电压,输出电压电流实时监测,通过2.8寸320X240的TFT屏或者上位机反馈给用户
- 简洁的交互方式,仅仅通过一个旋转编码器或者上位机对输出电压和电流限制进行调节
- 硬件支持蓝牙和wifi通信,未来更新软件,可拓展其他的一些上位机功能
- 上位机微信小程序(待后续更新软件支持!)
- 软硬件全部开源
- 后续会持续更新软件,加入蓝牙和wifi的应用,大家敬请期待吧。。。。。。。。。


项目背景
———————————————————————————————————————————————————————————
由于个人的兴趣爱好,在做之前几个电源项目时萌生了一个想法,想更系统的学习研究一下buck-boost开关电源,
于是就有了这个项目,希望本项目能够帮助像我一样对电源感兴趣的小伙伴们,为他们提供一个案例和研究方向。
由于本人基础薄弱,难免会有很多设计不合理的地方,希望小伙伴们指出讨论,希望大佬多多指点!!
PD与QC协议实现
———————————————————————————————————————————————————————————
利用CH543实现QC和PD协议,CH543D是一颗充电接口协议MCU,他集成了PD的Phy,协议部分需用户自己实现,
PD和QC协议部分代码由本人自行实现,这样可以保持一定的自主性,可以深度定制一些客制化的功能需求。
如下CH543系统框架,有小伙伴感兴趣的,可以阅读源代码,文章最后会把所有的源代码仓库例举出来,供大家学习交流
希望大佬们多多指教!!:

我把PD和QC协议实现部分,分为了如上几个层分别实现,最下面是物理层,已经有芯片厂商实现,
- 物理层
-
- D+/D-接口部分
主要是产生QC协议交换时的一些输出电压和读取D+/D-上面的电平,如下表是一些基于USB BC标准之上的
一些协议交互电压

-
- CC1,CC2接口部分
为PD协议提高物理通信接口,这部分同时还包含了BMC(Bi-phase Mark Code)编解码器通信接口,BMC是one-wire
传输接口。在TYPE-C PD传输速度被规定在300K±10%,传输格式如下图,每一个bit都需要在准位上先做一次转向,
当DATA为1时需要在一个单位时间内高低准位各转向一次,当DATA为0时则转向后需保持一个单位时间长度。

- 协议层
协议层分为两部分:1.是QC协议部分,2.是PD协议部分
- 应用层
应用层主要实现了I2C通信的处理逻辑,和上位机Buck-boost控制器进行信息的交互
Buck-Boost实现
———————————————————————————————————————————————————————————
如下是Buck-Boost控制系统的框图,分别有输入电压采样、输出电压\电流采样、HRPWM控制单元、增量式PI控制器、
DMA控制器和Buck-Boost模式处理几部分构成。

-
输入电压采样
对输入电压进行AD转换,能够提供最快2.5Msps的采样率。转换完成后触发DMA搬运数据
-
输出电压\电流采样
和输入采样AD转换一样。
-
HRPWM控制单元
HRPWM控制单元主要功能是实现PWM控制波形的产生,他能提供13pS的高分辨率PWM脉宽调节能力
-
增量式PI控制器
PI控制器是整个Buck-Boost处理的核心,他主要通过读取输出电压\电流和设置参考电压\电流,计算出一个误差信号,并产生一个控制量,
然后将这个控制量信息映射为对应的PWM占空比,驱动PWM输出波形,实现恒压和限流的目的,本设计中,使用了两个PI控制器,一个
用于恒压控制,另外一个用于限流控制。

-
DMA控制器
DMA控制器部分主要实现ADC处理模块的数据自动搬运到指定内存中的目的,为CPU分担数据搬运的工作,提高系统的数据处理效率
-
Buck-Boost模式处理
在本项目中Buck-Boost的各个工作模式的切换是一个不小的挑战,这部分也花了我大部分的时间,本设计将他们分为了4个工作模式,
分别是:Buck模式、Buck-Boost-Mix-UP模式、Boost模式和Buck-Boost-Mix-DW模式。
-
Buck模式
这个模式为传统的降压模式,当输入电压大于输出电压1V时,系统将切换到这个模式,这个模式的工作方式是:
固定Boost端的PWM输出4%的最小PWM占空比,维持高侧mos管的自举电容充电,通过调整Buck的PWM占空比来稳定输出电压,
如下图:

-
Buck-Boost-Mix-UP模式
这个模式为Buck和Boost的一种混合模式,当输入电压小于输出电压在1V以内时,系统将切换到这个模式,这个模式的工作方式是:
固定BUCK端的PWM输出85%的PWM占空比,通过调整BOOST的PWM占空比来稳定输出电压,
如下图:

-
Boost模式
这个模式为传统的升压模式,当输入电压小于输出电压1.2V左右时,系统将切换到这个模式,这个模式的工作方式是:
固定Buck端的PWM输出4%的最小PWM占空比,维持高侧mos管的自举电容充电,通过调整Boost的PWM占空比来稳定输出电压,
如下图:

-
Buck-Boost-Mix-DW模式
这个模式为Buck和Boost的一种混合模式,当输入电压大于输出电压在0.2V~1V以内时,系统将切换到这个模式,这个模式的工作方式是:
固定Boost端的PWM输出14%的PWM占空比,通过调整Buck的PWM占空比来稳定输出电压,
如下图:

硬件介绍
———————————————————————————————————————————————————————————
硬件分为两块板子,分别是功率板和显示板如下
- 硬件资源与尺寸标注


- 硬件原理框图
用户UI介绍
———————————————————————————————————————————————————————————
- LCD显示描述
-------
- 多功能旋转编码器描述
如下是本设计中使用到的旋转编码器,分别是逆时针旋转,顺时针旋转和中间向下按下,
它们分别代表了3个不同的按键。本项目中把逆时针旋转定义为CCW,顺时针旋转定义为CW,
中间按键定义为中间键(CENTER)。
下表是本项目中使用到的按键事件
| 按键事件 | 描述 |
| DOWN | 按键按下 |
| UP | 按键抬起 |
| SINGLE_CLICK | 单击 |
|
MULTI_CLICK
|
多击,如:双击,三击,四击等 |
| LP | 长按 |
| VLP | 长长按 |
| VVLP | 超长按 |
| HOLD | 按下不放 |
| CW | 顺时针旋转 |
| CCW | 逆时针旋转 |
按键功能描述
|
按键名称 |
前提条件 |
按键事件 |
触发功能 |
备注 |
|
CENTER |
开机状态 |
MULTI_CLICK=2 |
使能输出电压、输出限流的设定 |
当此功能触发后,对应可调节的选项会有一个外框 |
|
CENTER |
输出电压/限定流设定使能 |
MULTI_CLICK=2 |
切换选定输出电压和电流 |
|
|
CCW |
输出电压使能 |
逆时针旋转 |
减少输出电压 |
|
| CCW | 限定电流设定使能 | 逆时针旋转 | 减少输出限流 | |
|
CW |
输出电压使能 |
顺时针旋转 |
增加输出电压 |
|
| CW |
限定电流设定使能 |
顺时针旋转 |
增加输出限流 |
|
| CENTER | 开机状态 | SINGLE_CLICK | 循环地打开/关闭电源输出 | |
软件介绍
———————————————————————————————————————————————————————————
固件下载
———————————————————————————————————————————————————————————
mcu固件下载
1. 下载小华半导体的ISP下载工具(如下附件“HC32F334-固件下载工具.zip”有,点击下载安装)
2. 按如下接线接好USB转串口工具和目标板子,给板子上电,下图中标号2的位置是短接这两个网络,标号3是
短接一下NRST和GND使MCU复位进入ISP下载模式,(NRST短接后需释放,才能复位芯片进入ISP下载模式)。

3. 依次完成如下6个步骤,完成固件的下载
第2步是设置波特率,根据你的串口速度来,如果你的串口速度不快,可以设置低一些的波特率,
第5步只是工具告诉你的一种接线方式,可以作为参考,按上图接线就好

PD协议mcu固件下载
1. 先安装CH543的ISP下载工具(如下附件“CH543-ISP-下载工具.zip”有,点击下载解压后就可以用)
2. 按如下短接下载扩展口3V3和PD_UPG(下载过程中一直短接,直到下载成功,
注意:如果是空片没有下载过程序,无需这一步,插上USB口就可用下载程序)

3. 通过USB-C链接电脑,这时下载工具端的“设备列表”处应该会看到CH543设备
按如下5步配置好下载端参数配置,如下第3步是需要选择需要下载的固件文件。

4. 点击下载
显示mcu(BT/WiFi)固件下载
1. 下载W800的固件下载工具(如下附件“W800-固件下载工具.rar”中有)
2. 按如下接入USB转串口工具到目标板,标号2是短接W_BOOT到GND,是W800具备进入boot模式的条件,
标号3是短接W_RST到GND,使W800复位进入ISP下载模式。(W_RST短接后需释放,才能复位芯片进入ISP下载模式
注意:如果是空片没有下载过程序,无需这一步,插上串口就可用下载程序)。

3. 电脑端按如下步骤进行操作,完成下载固件,如下第2步需根据自己的串口传输速率来选择,如果你的串口速度低,
选了快速的波特率,可能导致无法下载,如果你不知道你的串口速率的情况下,建议就设置为115200,只是下载比较慢而已。

结构部件
———————————————————————————————————————————————————————————
1. 亚克力面板:2片
规定请看附件3D文件和2D文件
2.铜柱1: 4颗

3.铜柱2: 4颗

4. 铜柱3: 4颗

5. 螺丝:8颗

6. FPC排序:1条

其他
———————————————————————————————————————————————————————————
-------
项目当前已知问题!!
———————————————————————————————————————————————————————————
-------
性能参数展示
———————————————————————————————————————————————————————————
-------
其他附件
———————————————————————————————————————————————————————————
B站完整的制作过程和演示操作:【手撕USB可调电源-V5】

视频演示
———————————————————————————————————————————————————————————
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论