
【活动获奖作品】MP9928-ESP32C3 降压型便携数控电源
简介
本项目设计了一款以ESP32-C3 MCU为控制器、采用MP9928 BUCK降压型拓扑进行电压变换的数控电源。主要面向12V/15V/20V PD诱骗 或 12-24V DC电源供电的情况。
简介:本项目设计了一款以ESP32-C3 MCU为控制器、采用MP9928 BUCK降压型拓扑进行电压变换的数控电源。主要面向12V/15V/20V PD诱骗 或 12-24V DC电源供电的情况。开源协议
:CC BY-NC-SA 4.0
描述
本项目已获得官方评选特等奖 MPS芯源广场 - 嘉立创EDA开源硬件平台
已更新第二代,详见:#第十届立创电赛#ESP32-C3·MPQ4263 迷你可调电源
零、实物图片&写在前面



写在前面:
首先感谢嘉立创和MPS对于本次征集令活动的支持,提供一次很好的机会、得到了知识学习与实践锻炼,同时也看到了不少同类型作品,视野和思路都大大拓展了。再次感谢!
本人机械出身、本科接触电子类竞赛并主要负责硬件设计任务,没有太多的功率电力电子、软件开发经验。因此在设计上较为保守、存在不少纯个人经验的设计。可能在大佬眼里该项目存在较大的缺陷和优化空间,项目纯属抛砖引玉,同时也只是满足个人的一点小爱好,欢迎讨论、提出建议。
受制于个人软件水平,硬件不能发挥最佳性能。欢迎各位大佬在此基础上进行改进、二次开发!
但请遵守CC BY-NC-SA 4.0开源协议!不欢迎倒爷、贩子随意进行商用!!!
项目日志
- 2025/07/04 前置MP9928验证工程测试通过(未开源)
- 2025/07/21 该项目首次开源
- 2025/07/26 修正部分问题、添加实机测试视频
- 2025/08/08 更正CCM/AAM下拉电阻
一、基本特性
- 设备尺寸:L72.3 x W58.8 x H23.0 mm(不含编码开关、脚垫和香蕉母座)
- 输入电压VIN:12V ~ 24V
- 输出电压VOUT:0.8V ~ VIN(理想) / 2.5V ~ (VIN-0.5V)(软件)
- 输出电流IOUT:0 ~ 5A(硬件) / 0 ~ 4.5A(软件) (设计较为保守)
- 最大设计功率:100W (设计较为保守)
- 控制精度:0.1V / 0.1A (设计较为保守)
- 输出精度:0.01V / 0.01A
说明:
- 输入电压过低时无法使能MP9928,系统无输出;电压过高时可能系统可能无法正常工作(高于辅助DC-DC电源有效输入);
- 测试过程中发现输出在2.5V ~ (VIN-0.5V)部分线性度较好,因此软件限制该段为输出范围;
- 测量精度可达小数点后3位,但受制于TFT尺寸、控制效果的原因,软件仅保留小数点后2位显示、小数点后1位输出控制。
二、机械结构

设备的接口布局如上图所示。
其中,DC_IN与TYPE-C_IN用于电源输入,有效输入范围为11.5V ~ 24V。

电源的所有构成组件如上图所示。除PCB上元器件外所有零件明细见下表:
| 零件名称 | 数量 | 获取方式 | 备注 |
|---|---|---|---|
| 上壳 | 1 | 3D打印 | 本项目中采用拓竹A1 Aliz PETG耗材打印,见附件。 |
| 下壳 | 1 | 3D打印 | 本项目中采用拓竹A1 Aliz PETG耗材打印,见附件。 |
| 散热块 | 1 | CNC | 本项目中采用嘉立创CNC加工,见附件。 |
| 1.53"TFT屏幕 | 1 | - | 插接 0.5mm间距 12P。 |
| M3x10mm铜柱 | 4 | - | 最好配1mm垫片x4,实测没有也行。 |
| M4弹簧垫片 | 2 | - | - |
| 4mm香蕉母座 | 2 | - | 连接螺纹M4,需要带螺母。 |
详细机械装配结构见下文。
嘉立创CNC每月免费打样:https://www.jlc-cnc.com/ac/ACUHiDI0/CP5SzoAs
三、系统结构
3.1 硬件框架

3.2 电源框架

四、交互逻辑
4.1 按键交互逻辑
| 按键 | 行为 | 调整 |
|---|---|---|
| KEY1 | 单击 | 输出开关 |
| KEY2 | 双击 | 设置启用 |
| KEY2 | 单击 | 对象切换 |
| 编码器 | 顺时针 | 数值增大 |
| 编码器 | 逆时针 | 数值减小 |
4.2 上位机逻辑
本项目中上位机使用串口通信,为进行多控制量的调整,使用标准Json格式进行编码。
Key与Value对照表如下:
| 对象 | Key | Value类型 | 单位 | 范围 |
|---|---|---|---|---|
| 恒压PID参数 | "VKpid_p" (i, d同) | float | - | 0 ~ 655.35 |
| 恒流PID参数 | "IKpid_p" (i, d同) | float | - | 0 ~ 655.35 |
| 目标输出电压 | "VSET" | float | 1.0V | 2.5 ~ (VIN-0.5) |
| 目标输出电流 | "ISET" | float | 1.0A | 0 ~ 4.5 |
| 输出状态 | "OUT" | bool | - | 0 / 1 |
例如要设置目标输出电压为12V、输出电流为1A、输出状态为1,则编码为:
{"VSET":12, "ISET":1, "OUT":1}\n
设备会在接收到上位机数据后返回相同的信息。
4.3 TFT显示逻辑

- 屏幕上部显示输入电压与输出状态。
输入电压保留1位小数。当电压低于11.2V时,判断输出处于异常状态;低于11.2V、高于4.5V时显示“LOW”;低于4.5V时显示“NONE”。
输出状态在无输出时显示“WAIT”,当输出模式为恒压时显示“CV”,若输出电流超过设置值时进入恒流模式,显示“CC”。 - 屏幕中部显示输出电压、输出电流和输出功率。显示保留2位小数。
- 屏幕下部显示设置电压和电流,设置精确到一位小数。当双击编码器KEY2时进入选择状态,在待设置数值下显示横线;单机编码器KEY2切换设置输出电压或输出电流。
五、硬件设计思路
5.1 电源主拓扑与选型
本人在先前的开源项目中设计过Buck-Boost扑的升降压数控电源,体积较大、空间利用率不够高 (现在看来之前做的就是一坨) 。因此本项目希望设计一个体积较小、能满足常用低压供电要求的数控电源。为了减少器件的使用、减小对于输入电源电流大小的依赖,故选择Buck拓扑结构 (实际设计下来并没有少太多元件,之后可能考虑再做一个升降压输出、更小体积电源)。
为了使输出有更大的功率,采用外置MOS型方案。经过挑选,选择了MPS芯源的MP9928作为本项目的Buck控制器。后续设计过程中发现该方案和正点原子的DP100相同,本项目设备的体积也和DP100差不多 (但本项目设备显示屏幕更大)。
5.2 电源框架设计
本项目电源框架如3.2中所示。
在输入方面,为了兼顾便携和通用性,设置了TYPE-C_IN和DC_IN两个输入。其中TYPE-C_IN主要方便使用支持PD协议的快充充电头或者充电宝进行供电,具有便携性;而DC_IN则是为了更好地适配常见的DC电源,通用性更佳。为了缩小体积,DC输入未做输入过压保护和缓启动保护 (画图的时候忘了),因此谨慎对待DC输入电源。TYPE-C_IN输入采用CH224A PD诱骗芯片请求电压,可通过I2C总线设置需要请求的电压。原计划采用CH224K,并使用两个IO配置CFG2、CFG3电平来实现不同电压的请求,但设计过程中(Power板打样之后)发现ESP32-C3 IO数量不足以而外分配两个出来用于电压请求,因此只能更换具备I2C功能的CH224A/CH224Q,并与INA226共用一个I2C总线(但实测若无法请求到目标电压,会自动向下请求可请求的最高电压,也就是说折腾了这一圈都白折腾了,直接用电阻配置请求20V电压就行了)。
电源输入后需要对输入电压进行判断以避免输入电压过低带来的一系列问题。其中,MP9928通过分压来使能,根据手册中描述,MP9928需要达到1.22V + 130mV才能正常使能,本项目设置最小有效输入电压为约11.5V,得到分压电阻分别为15K、1K。同时,通过LMV358运放对输入电压进行适当的缩放,并借助ESP32-C3内置ADC对输入电压进行采样,以进行软件上的判断与保护。
主Buck拓扑元件选型参照MP9928手册进行,本项目的选型非常保守。其中,本项目中设置ILIM阈值为25mV、采样电阻为5mR,即最大输出电流限制为5A(硬件),若有更高需求可酌情增大限制。关于ILIM配置请参照MP9928手册P5、P8。
除了主拓扑外,本项目还设计了两个Buck拓扑降压的辅助电源,输出电压分别为3.3V和10V。其中,3.3V辅助电源用于为LMV358、INA226以及无USB_JTAG输入情况下的Control板供电;而10V电源用于为MP9928和输出控制开关的栅极驱动器供电。对于3.3V辅助电源,当Control板USB_JATG有输入时控制PMOS关断,有输入时开通,从而在合适的时候使用Power板的3.3V辅助电源供电。对于10V辅助电源,参照MP9928手册 "Connecting VCC2 pin to external power supply will reduce power dissipation and thus increases efficiency." ,使用外部电源能够提高MP9928的转换效率;并且对于输出控制开关而言,IO的3.3V不足以使其完全开通(NMOS)/关断(PMOS)。
输出检测本项目使用INA226完成。INA226能够自动完成总线电压、采样电阻差分电压的采样,进而计算得到输出电流与输出功率,并存放在寄存器中。通过I2C总线能够进行读取INA266内部寄存器的电压、电流、功率值。
输出控制采用低端控制的方案,通过控制OUT-端的接地开关来控制输出。该方案的优势在于简单、成本较低、电平逻辑与正常相同;但劣势在于关断时OUT+对地仍有电压。为了获得更好地开关效果,使用TF0211C-USQ栅极驱动器驱动输出控制NMOS。
5.3 控制结构设计
本项目中,需要MCU控制的主要目标有:
- CH224A的请求电压VIN
- MP9928的输出电压VOUT
- MP9928的输出电流IOUT
- OUT- NMOS的开关(输出状态)
需要采集的目标有:
- 输入电压VIN
- 输出电压VOUT/输出电流IOUT/输出功率POUT
对于控制目标,CH224A的请求电压采用I2C总线写入寄存器实现;MP9928的输出电压/电流通过干涉反馈FB实现;输出状态的控制通过予以栅极驱动0/1电平实现。
对于采集目标,输入电压采样如上文所属通过内置ADC实现;输出信息的采集通过I2C总线读取INA226的内部寄存器实现。
这里介绍一下MP9928的输出控制和输入电压VIN的采集。

(出处:BV1oC4y1V7k1 ;更多信息:https://oshwhub.com/carele/ESP32-S3-digital-power-supply )
如上图所示,通过构建上述电阻网络能够进行干涉MP9928的输出。DC-DC的输出电压和干涉电压构成一个截距为最大输出电压、斜率为负的一阶函数。通过构建函数的计算可以很容易地得到干涉输入与输出之间的数学关系。更多信息请参考我在ESP32-S3数控电源项目中的介绍。
本项目中实际的干涉与输出采样如下图所示:

但对于ESP32-C3,其并不内置DAC,无法直接进行可控的电压输出。因此本项目采用PWM输出+低通滤波器的方案,构成一个伪DAC的形式,通过控制PWM的占空比控制输出电压。这样弥补了ESP32-C3没有DC的缺陷,但是若PWM频率与低通滤波器截至频率不当可能在输入中引入噪声。本项目中低通滤波器截止频率选择为1kHz、PWM输出频率为4kHz,占空比为12bit。PWM通过ESP32自带的ledc PWM控制器输出,而低通滤波器则通过LMV358构建有源低通滤波器。
而对于输入电压VIN远大于ADC的有限范围,因此需要对其进行缩放,缩放通过LMV358运放实现。由于同相比例放大电路只能进行1+n倍的放大,但为了避免使用多个运放和需要负电压供电的情况,项目中使用分压+同相比例放大电路的形式进行缩放,将输入电压VIN衰减为原来的1/10再进行采集。
衰减后的电压直接使用analogreadmillivolts()函数进行读取,该函数能够直接读取电压的mV结果,不需要进行量程转换;并且相较于analogread()直接读取ADC的原始数据,其读出结果经过出厂校准,更佳准确。
5.4 MCU IO配置
本项目所需的IO如下表所示:
| 项目 | IO名 | IO数量 | 备注 |
|---|---|---|---|
| SPI | SCK / MOSI / D/C / RSE | 4 | 若要使用硬件SPI需要使用特定引脚 |
| I2C | SCL / SDA | 2 | - |
| USB | USB_D+ / USB_D- | 2 | 固定为IO19 / IO18 |
| VADC | - | 1 | 需要ADC1 |
| OCTRL | - | 1 | - |
| VSIG | - | 1 | 需要支持ledc |
| KEY1 | - | 1 | 为方便烧录选择IO9 BOOT |
| 编码器开关 | KEY2 / KEYA / KEYB | 3 | - |
如上表所示,共需要15个IO,ESP32-C3共有22GPIO可用。其中,使用内部Flash时GPIO12-17用于与封装内Flash通讯,不建议作其他用途;而GPIO11用于给内部Flash供电,若使用外部Flash且用外部供电,该管脚才能用作GPIO。为了减少元器件数量(不使用外部Flash),本项目选用ESP32-C3FN4/ESP32C3-FH4(内部带有Flash的型号),因此GPIO11-17均不可用。然后会发现 丸辣!IO一滴都不剩啦! (这也是设计时不使用CH224K的主要原因),因此需要按照所需功能对IO进行合理分配。
最后分配IO表如下所示:
| 项目 | IO名 | IO号 | 备注 |
|---|---|---|---|
| SPI | SCK / MOSI / D/C / RSE | 6 / 7 / 4 / 5 | 使用软件SPI |
| I2C | SCL / SDA | 20 / 21 | 使用硬件I2C |
| USB | USB_D+ / USB_D- | 19 / 18 | 固定为IO19 / IO18 |
| VADC | - | 0 | ADC1_CH0 |
| OCTRL | - | 3 | - |
| VSIG | - | 1 | - |
| KEY1 | - | 9 | 与BOOT功能共用引脚 |
| 编码器开关 | KEY2 / KEYA / KEYB | 2 / 8 / 10 | - |
六、PCB设计思路
本项目的设计顺序为:首先设计Power板原理图→大致设计Control板原理图→设计Power板PCB→修正Control板原理图→设计Control板PCB。
由于Control板元器件比较少,没有太多需要注意的地方,并且电源类项目对于功率部分设计要求更为严格,因此将主要关注Power板的设计。
DC-DC的PCB设计需要关注布局,高频环路的的面积需要尽可能小。PCB的布局可以参考MP9928手册中的布局设计(如下图所示)。


为了使布局更加紧凑,PCB设计中将上管旋转了90°。
七、程序设计思路
7.1 软件整体结构

软件整体结构如上图所示。
setup()函数中完成初始化并启动定时器timer1(对应中断服务函数onTimer1()),然后进入主循环loop()。
在定时器中断服务函数onTimer1()中,进行系统的状态更新(输入状态、输出状态、设置状态)、采样刷新(输入电压采样)、控制刷新(PWM占空比、开关状态),并定义一个bool型变量用于在相邻两次中断中交替进行TFT刷新和串口刷新任务(实测发现TFT刷新无法与串口刷新同时进行,刷新TFT会导致串口任务大量堆积,因此分时调用)。
在主循环中进行INA226值的读取(主要由于在中断服务函数中读取会导致看门狗跑飞,推测I2C读取所需时间过长、超过一个定时器周期)、按键刷新(KEY1、KEY2)、编码器刷新(Enc - KEYA/KEYB)以及每隔15s更新一次非易失性存储(NVS)。
7.2 各模块设计介绍
7.2.1 TFT显示
本项目中,采用TFT_eSPI.h库进行显示驱动。使用方法较为简单,通过相应的函数绘制需要的文字、图形等即可实现。值得注意的是:
-
需要根据设备情况在
User_Setup.h中更新对应设置
该库的正确调用需要在User_Setup.h设置对应的引脚、驱动型号、频率等参数,注意看注释说明。 -
刷新采用缓冲区的形式刷新
在之前的ESP32-S3数字电源项目中,同样使用了TFT_eSPI.h库。在之前的使用中发现刷新会出现频闪的情况,但没有找到解决方法(属于是学习不够到位)。在本次项目的设计过程中,发现了缓冲区的形式能够避免频闪情况。
通过createSprite()函数能够创建Sprite对象(缓冲区)。在后续的刷新中,可以对缓冲区内容进行更新,更新后再一次性发送缓冲区中的内容,避免频闪情况的出现。较为简单的形式是将整个屏幕创建为一个缓冲区,只对这个缓冲区进行编辑-发送。
7.2.2 非易失性存储NVS
NVS是ESP32中的一种功能,其能够将Flash中的部分区域划分为NVS,可在其中存取数据,这些数据不像RAM中的数据一样,不会在掉电后丢失。能够用来存储一些运行中可能会更改的、需要永久保留的重要设置信息(例如本项目中的PID参数、电压电流设置)。
通过nvs_flash_init()能够在Flash中划分出一定区域作为NVS,nvs_set_xx系列函数进行写入、nvs_get_xx系列函数进行读取,即可实现非易失存取。
NVS的储存形式为键值对,与Json的形式类似,对“键”进行命名,并在对应“键”存入“值”。
需要注意的是,ESP32-C3的NVS中只能存储整数型、以\0结尾的字符串以及可变长度的二级制数据。因此,例如PID设置参数这样的浮点型数据,需要转换成整数类型进行存储。
7.2.3 PID控制
本项目中的电压与电流输出的控制采用了PID控制的形式。PID使用的是理想的增量型PID,有数学式如下:
输入PID参数、当前和前1-2时刻的误差值以及采样周期,即可得到控制量的变化量。
将PID封装为函数:
float PID_compute(float Vek, float Vek_1, float Vek_2, float Kp, float Ki, float Kd) {
float delta_duty;
float Pterm = (Vek - Vek_1);
float Itrem = Vek;
float Dterm=( Vek - 2*Vek_1 +Vek_2);
delta_duty = Kp*( Pterm + Ts/Ki*Itrem + Kd/Ts*Dterm );
return delta_duty;
}
值得一提的是,在本项目中输出电压VOUT的控制并不只是依赖PID控制(恒压模式)。当处于输出状态,并且VSET发生变化时,将根据占空比-输出电压关系计算一个占空比值,再进行PID控制。占空比与电压存在有数学关系,图像如上5.3中图像所示。
由此可以计算得到较为准确的占空比值,之后再通过PID进行微调修正使输出更加准确。
要强调的是,这样的输出模式不宜叠加较大的PID控制效果,即Kp需要设置一个较小的值。
而恒流模式由于输出与负载有关,并不能通过单一的函数确定占空比与输出关系,因此仅采用PID控制调节输出。
7.2.4 CH224A、INA226写入/读取
以上两个对象通过I2C总线进行通讯。CH224A设置请求电压值只需要通过I2C总线向其寄存器写入特定值;INA226需要向其寄存器中写入采样电阻值,并从寄存器中读取总线电压与差分电压值。
由于CH224A只要向寄存器写入一位数据,因此只要使用Wire.h库进行简单操作;而INA226需要进行多次写入、读取操作,调用针对INA226封装好的库函数更加轻松,因此使用INA226.h库来完成被测量读取的任务。
7.2.5 按键、编码器
按键与编码器是本系统进行人机交互的主要工具。其中,按键相关功能通过调用OneButton.h库实现;编码器数值调节功能通过调用AiEsp32RotaryEncoder.h库实现。
其中,AiEsp32RotaryEncoder.h库中可以实现滚轮编码器的变速控制,即滚轮滚的越快、数值变化越快,其通过setAcceleration()函数实现。这样能够使得大量程变化的调整速度更快。
八、性能测试
8.1 输出精度
输出电压测量采用DM40C万用表测量,设置电压与输出电压情况如下:

从上表可以看出,输出较为准确,偏差均低于1%。但其中也存在明显问题,每个输出电压均存在约0.025V的电压偏移。若将实际输出-0.025V,可以得到下表:

修正后的输出电压几乎不存在误差。
后续调试中发现,通过增大PID中I项(积分项)系数能够消除累积误差(上述电压偏移)。效果如下表所示:

可看出设备输出精度较好,仅在小数点后3位存在较小偏差,误差均小于0.1%。
8.2 电压跟随
为测试设备电压设置与电压输出的跟随性能,本项目使用串口同时输出电压设置值VSET与电压输出值VOUT(采样时间间为100ms),通过观察两者的重合程度来体现跟随能力。通过观察下图,发现两条曲线的重合程度较高,电压设置与电压输出跟随效果较好。但是,在进行电压下调时,存在较为明显的过冲情况。

为减小电压输出时过冲的情况,对PID参数进行一定调整。发现调整后的过冲情况明显有所缓解,并且面临更极端的电压下调情况,仍能保持较好的效果。可见调整PID参数可以使输出效果更佳。

8.3 电源纹波
目前组里较好的示波器不在我手里,另一台老示波器噪声巨大,只能暂时使用DM40C测试纹波。将通道设置为交流,观察信号峰峰值。当输出为12V无负载情况时,纹波约有60mV:

8.4 负载测试
由于没有电子负载,使用几个20Ω水泥电阻并联作为负载进行测试,测试结果如下表所示。

可以看出在小功率输出的情况下,系统转换率较低;但在大功率输出的情况下,系统转换率较高,能够达到90+%。这是由于设备自身也需要一定耗能,固定的能耗拉低了小功率输出时的转换率,若无视此部分损耗,则系统输出转换率较为可观。

借用了其他组的电子负载测试电源输出性能。由于暂时没有大功率DC电源,因此使用65W充电器作为输入进行简单测试。负载设置为恒电阻模式,设置为3Ω,理论输出为4A、48W。仪器侧实际负载为2.8Ω、输出11.77V、4.162A、48.9W;设备测实际输出12V、4.17A、50.11W。输出和电子负载间有一条较长的连接线,推测存在的线阻影响了设备侧和仪器侧输出信息的一致性。

(输入忘测了,之后如果测了再补上转化率。)
九、整体装配
本项目设备的零件清单见第二章节,本章节介绍设备的装配细节。

装配需要由下自上进行。顺序为:
下壳→散热块→Power板→铜柱(垫片)→M3螺丝→香蕉母座(螺母、弹簧垫片)→Control板→上壳→M3螺丝
- 在本项目中,为了使设备有良好的散热,设计了一块散热块(需要采用CNC加工)。散热块安装前需要在每一个凸起处涂抹导热硅脂,用于将MOS管、电感、控制器和CH224A的热量传导至散热块上,每个凸起对应器件如下图:

- 由于没有增加防呆设计,装配时需要区分散热块的安装方向。有凹槽的两侧需要靠近香蕉母座,其用于容纳PCB焊接端子的插脚 (安装前务必剪短PCB焊接端子的插脚,若无可能由于与散热块造成短路!!!)。

- 装配中需要注意螺母和弹簧垫片的位置关系。使用弹簧垫片的目的在于紧锁香蕉母座与PCB焊接端子并减小香蕉母座与PCB焊接端子的接触电阻。螺母的加入压缩了弹簧垫片,使螺纹间摩擦力增大达到紧锁效果。

- 上壳侧面开口在上部有45°倒角,在安装Control板时,请斜置PCB,先将编码器放入开口中,并对准排针,然后在排针侧下压扣紧。

另外,若要减小下壳与接触面的摩擦,可以增加防撞胶粒作为脚垫。

十、当前仍存在的问题
-
输出电压偏移
如8.1中所示,实际输出电压比设置电压偏移约0.025V。
已通过调整PID参数解决 - 2025/7/19 -
上电瞬间存在尖峰(MOS管短暂开通)
起初认为输出控制IO在开通瞬间处于float状态,栅极驱动器将该状态认为高电平,使得处于输出状态;当MCU初始化后输出低电平,则栅极驱动器驱动MOS关断。
根据以上分析,在OCTRL上增加下拉电阻希望解决问题,但实际增加下拉电阻后仍存在上电尖峰。因此推测是MCU启动时IO默认为高电平,直到初始化后才输出低电平,该情况无法仅通过下拉电阻解决。
后续考虑增加与门电路与延时信号。当上电一定时间后,与门一端延时信号输入为高电平,另一端OCTRL输入才能有效。 -
待机状态仍存在0.8V电压(电压)
待机时对反馈电阻网络输入进行置1处理,理论上此时输出电压应当为0V,但实际输出与保持相同电压,不能做到完全到达0V的状态。
后续考虑采用双MOS管控制输出状态的方案。在OUT+端也添加一个PMOS,使其在待机时能够切断OUT+与Buck输出的连接,令香蕉母座与内部电源处于无连接的状态。

- 恒流模式下若设置电压跳变会产生输出尖峰
该尖峰的产生是由于先前控制逻辑为:设置电压变化后根据线性关系计算新设置电压对于占空比,并写入控制。但该逻辑没有考虑到恒流模式下控制量不应随设置电压变化。
已解决。通过将恒流/恒压模式判断语句提前,若恒流则不进行调整、沿用PID控制;恒压则执行原逻辑。(2025/7/26)
但是恒流模式下PID控制存在超调(下图的小尖峰),可以寻求更好的PID参数使输出变得更加丝滑。

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










