AI摘要
一款基于STM32G474的四开关Buck-Boost数字电源,支持TypeC接口PD诱骗输入和DC5.5接口输入,输入/输出最高48V10A。通过PID算法实现输出控制与保护,含原理图、PCB、源码等开源资料。
一款基于STM32G474的四开关Buck-Boost数字电源,支持TypeC接口PD诱骗输入和DC5.5接口输入,输入/输出最高48V10A,这是我的毕业设计,现在开源出来,含原理图、PCB、程序源码、外壳3D模型等资料。
做得一般,勿喷,欢迎友好交流。
基于CH32V307的智能电子负载开源,嵌入式大赛作品开源:https://blog.zeruns.com/archives/785.html
本项目的立创开源平台开源链接:https://url.zeruns.com/noGf0
电子/单片机技术交流QQ群:2169025065
资料下载地址在文章末尾。
硬件电路使用的嘉立创EDA软件来设计,这款软件真的很好用。
简介
本文设计基于STM32的同步整流Buck-Boost数字电源,该电源电路由MOSFET驱动电路、4开关Buck-Boost电路、信号调理电路、PD快充协议电路、辅助电源电路、单片机控制电路等部分组成。
该电源可通过DC接口或Type-C接口供电,而且Type-C接口支持与充电器通过PD快充协议通讯,自动请求并获取最高20V的工作电压。该电源使用STM32G474单片机对输入输出的电压和电流实时监测,并通过PID控制算法来调整输出的PWM占空比,以及实现过压过流保护,还可采样主板温度来实现过温保护。此外可通过OLED屏实时查看电源的参数,并通过旋转编码器和按钮来设置输出电压和电流,还可以通过另一个Type-C接口与上位机通信,通过上位机软件可实时查看电源的各项参数和波形。
设计性能参数
电源设计性能参数如下表:
| 项目 | 参数指标 |
|---|---|
| 输入电压范围 | 12Vdc~48Vdc |
| 输入电流范围 | 0~10A |
| 输出最大功率 | 450W |
| 输出电压范围 | 0.5Vdc~48Vdc |
| 输出电流范围 | 0~10A |
| 输出电压纹波 | 峰峰值≤200mV |
| 开关频率 | 181.333kHz |
实物图
使用VOFA+作为上位机软件,可实时查看电源各项参数(输入电压和电流、输出电压和电流、主板温度、MCU温度、电源转换效率等)和波形变化。如下图所示。
系统框架图
硬件电路设计
器件选型计算
电感计算
在同步BUCK-BOOST电源中,电感的计算需要考虑BUCK模式和BOOST模式下的工作情况,以确保在两种模式下都能满足电路的工作要求。通常,电感的选择会基于两种模式中对电感要求更高的那个模式来进行。
当电源工作于BUCK降压模式时,假设输入电压最大为48V,输出电压最小为5V,计算最小的PWM占空比:
$$ D_{min} = \frac{V_{out\_min}}{V_{in\_max}} = \frac{5V}{48V} = 10.417\% $$
定义电感电流波动量(25%的最大额定电流脉动,设最大额定电流为10A):
$$ \Delta I_L = 25\% \cdot I_{out\_nom} = 25\% \times 10A = 2.5A $$
计算最小需要的BUCK电感:
$$ L_{minBuck} = \frac{V_{out\_min} \cdot (1 - D_{min})}{\Delta I_L \cdot f_{switch}} = \frac{5V}{2.5A \times 181333Hz} \times (1 - 10.417\%) \approx 9.88\mu H $$
当电源工作于BOOST升压模式时,以输入额定电压24V为计算点,计算PWM占空比:
$$ D_{Bo} = 1 - \frac{V_{in\_nom}}{V_{out\_max}} = 1 - \frac{24V}{48V} = 50\% $$
Boost 模式下,取1A( $I_{minb}$ )时Boost进入连续模式(CCM),计算电感:
$$ L_{minBoost} = \frac{V_{out\_max} \cdot D_{Bo}(1-D_{Bo})^2}{2 \cdot I_{minb} \cdot f_{switch}} = \frac{48V \times 50\% \times (1 - 50\%)^2}{2 \times 1A \times 181333Hz} = 16.544\mu H $$
基于公式得出的计算结果,确定了为满足预定纹波电流要求所需的最小电感值。为了确保满足这一条件,应选用一个电感值略高于计算值的电感元件。同时,必须确保所选电感的饱和电流能够承载电路中的最高电流峰值。由于在计算过程中未将效率因素纳入考虑,实际的占空比和峰值电流可能会低于理论计算值。因此,在进行选择时,应该考虑到一定的安全余量,以适应实际工作条件下可能出现的各种情况。
综合考虑以上因素,本设计选用1770贴片封装的饱和电流10A以上的22μH的电感作为BUCK-BOOST电路的电感元件。
电容计算
为了获得较好的输出电压纹波,取设计的电压纹波为50mV。
$$ \Delta V_{out} = 0.05V $$
上面选用的电感为 22μH 的,所以这里计算也用这个电感值:
$$ L_{BB}=22\mu H $$
分别计算工作于BUCK降压模式下和BOOST升压模式下所需要的最小电容量 $C_{minBuck}$ 和 $C_{minBoost}$ :
$$ C_{minBuck}=\frac{V_{out\_min}\cdot(1-\frac{V_{out\_min}}{V_{in\_max}})}{8\cdot L_{BB}\cdot \Delta V_{out}\cdot {f_{switch}}^2}=15.48\mu F $$
$$ C_{minBoost}=\frac{I_{out\_nom}\cdot(1-\frac{Vin\_min}{Vout\_max})}{\Delta Vout\cdot fswitch}=413.6\mu F $$
设计需要留有一定余量,以及为更低的输出纹波,所以选用一颗低ESR的220μF的固态电容加一颗470μF的普通电解电容,共690μF。
MOS选型计算
在额定输入输出电压范围内,计算输入MOS电流的有效值为:
$$ i_{mos\_rms}=7.098A $$
MOSFET选型中MOS管的额定电流值$I_D$需按流过MOS管最大电流的2倍以上(以防止故障或短路状态下电流过大造成冲击损坏)。
$$ 2×i_{mos\_rms}=14.196A $$
MOSFET选型的额定耐压值$V_{DS}$需大于最大输入电压的1.5倍(以防止尖峰击穿)
$$ 1.5×Vin\_max=72V $$
在参考了之前的计算之后,对于常规的应用场景,可以选择额定电流超过15安培(A)且耐压等级为100伏特(V)的MOSFET,下管MOSFET选型和上管一样,考虑到发热的情况,为了最大限度地减少导通和开关过程中的能量损耗,应优先选用具有低导通电阻($R_{DS(on)}$)和低输出电容(Coss)的MOSFET。
本设计选用的MOSFET型号为CJAC80SN10,该器件由江苏长晶科技股份有限公司生产,是一款国产化的MOSFET。它具备100V的漏源耐压($V_{DS}$)和最大80A的漏源电流($I_D$)。其导通电阻($R_{DS(on)}$)仅为6.2mΩ,这一低阻特性有利于减少器件在导通状态下的功率损耗。同时,该器件的输出电容Coss具有420pF的典型值,这一较低的电容量有利于降低开关转换过程中的动态损耗。因此,CJAC80SN10在满足项目所需的电气特性的同时,还能有效减少能量损耗,提高系统的整体效率。
电源板电路设计
主功率电路
下图为同步BUCK-BOOST电源主功率电路图,左侧为输入,同步 BUCK降压电路由MOS管Q2和Q4与电感L1组成,同步BOOST升压电路由MOS管Q3和Q5与电感L1组成,每颗MOS管的栅极和源极间均并有10kΩ的电阻,以确保MOS的栅极不悬空,防止误动作导通。
主功率电路整体上左右对称结构,输入输出端都设有1个470μF/63V的铝电解电容器和1个220μF/63V的固态铝质电解电容,此外,还有2个小的贴片MLCC(多层陶瓷电容器),参数为10μF/50V,用以过滤端口处的高频噪声干扰。R9和R10作为输入输出端口的假负载,可以在电源断开时能够迅速耗散电路内残留的能量。R13与R14是高精度的5mΩ电阻,用于电流采样,后级接差分放大电路来放大输入输出的电流信号。CNT1和CNT2为输出端子。L1和L2分别是贴片1770封装和直插磁环电感封装,选其中一个焊接即可,两个都画是为了方便测试不同电感的效果和性能。
电源输入和快充协议电路
下图为电源的输入接口和PD快充协议通信的电路图。
电源输入采用了两种接口,分别是DC5.5*2.5mm的母口和TypeC母口,其中TypeC接口支持BC1.2,PD3.0/2.0等多种快充协议,使用的快充协议芯片型号是CH224K,可以与快充充电器通信使充电器输出最高20V的电压,最高支持100W功率。
D1、D3、D4二极管作用是防止DC接口电压倒灌TypeC接口,设计上是不允许两个接口同时接入的。D5是用于反接保护的二极管。FH1为电源输入保险座,插12A的保险丝。
驱动电路
在同步BUCK-BOOST电源的设计中,BUCK电路和BOOST电路均包含高侧N-MOSFET。传统上,对于这些高侧N-MOSFET的驱动通常采用变压器隔离驱动的方式,但这种方法会增加电路的复杂性,并且扩大了电路板的尺寸。
本设计选用两颗自带自举电路功能的MOS管驱动芯片EG3112用以驱动BUCK电路和BOOST电路的MOS管。EG3112是一款非隔离型的互补双通道驱动芯片;其2A的输出驱动电流能力确保了MOSFET能够迅速导通;芯片还内置了死区时间控制功能,以防止输出驱动信号发生直通,从而提高了系统的稳定性。具体电路如下图所示。
以BOOST升压电路的MOS管驱动为例,PWM2L与PWM2H是来自STM32G474微控制器输出的PWM信号,送入EG3112驱动芯片的LIN和HIN引脚,LO为下管驱动信号输出,驱动电阻阻值为10Ω,HO为上管驱动信号输出,驱动电阻阻值为 10Ω,D7为上管驱动电路自举二极管,D9和D11二极管用于快速释放栅极电荷,加快MOS管的关断速度,C14为自举电容。
驱动电阻作用是在MOSFET开关过程中,驱动信号可能会在PCB走线、分布电容、电感等元件上产生反射和振荡,通过串联电阻可以减少这种振荡,提高系统的稳定性和可靠性。
辅助电源
下图是电源板辅助电源供电电路原理图。
第一级12V输出的辅助电源电路选用了集成高侧MOSFET的BUCK型电源芯片TPS54360B来设计。按照芯片手册,RT引脚接一个下拉电阻可以设置开关频率,这里选取110kΩ的电阻,对应开关频率是876.5kHz,较高的开关频率可以选择小一点的电感节省空间,根据这个频率计算电感取值应大于9.75μH,这里选取10μH的电感,选取SS310为续流二极管。C26与C27是输入滤波电容;反馈分压电阻R19和R25分压出0.8V的基准电压给芯片FB引脚后保证输出电压在12V时。C18和C19为第一级12V输出辅助电源的滤波电容。第一级12V输出主要供第二级6V降压电路的输入,以及MOSFET驱动电路和散热风扇使用。
第二级6V输出的辅助电源电路选用了集成MOSFET的同步整流BUCK型电源芯片SY8205来设计。按照芯片手册说明,芯片开关频率固定为500kHz,选取辅助电源BUCK电路的电感为10μH。C21与C22为输入滤波电容;反馈分压电阻R23和R26分压出0.6V的基准电压给芯片FB引脚后保证输出电压在6V时。C24和C25为第二级6V输出辅助电源的滤波电容。由于直接使用线性稳压器从12V降压到5V会造成比较大的损耗,所以采用先用开关电源降压至接近5V的电压再用线性稳压器降压至目标电压,这样可以保证较高的效率和较低的输出纹波。
第二级输出的6V电压经线性稳压芯片AMS1117-5降压成5V作为第三级辅助电源,电压基准芯片REF3033,供信号调理,OLED显示,USB通信等功能电路使用。
5V直流电经线性稳压芯片AMS1117-3.3降压成3.3V作为第四级辅助电源,供MCU,蜂鸣器,Flash芯片等电路使用。
电压基准芯片REF3033输出3.3V的基准电压供MCU的VREF端口使用,作为MCU内置ADC的参考电压,提高ADC的采样准确性。
信号调理电路
如上图所示,本设计的输入和输出电压的采样和信号调理电路采用了差分放大技术。差分放大拓扑可以有效地降低开关电源中高频噪声对信号调理电路的干扰,提高了信号稳定和可靠性。在此电路中,选用了低零偏运算放大器GS8558-SR,以提升转换的精度。GS8558-SR运放具有优异的直流精度和低偏置电流特性,这对于提高整个信号调理电路的性能至关重要。
差分放大电路的反馈电阻:
$$ R_{38}=4.7kΩ $$
$$ R_{36}=75kΩ $$
计算差分放大倍数:
$$ K_V=\frac{R_{38}}{R_{36}}=0.062667 $$
MCU的ADC最大采样电压为电压基准芯片输出的3.3V,则可以计算出能采样到的输入和输出电压最大值为:
$$ V_{max}=\frac{3.3V}{K_V}=52.66V $$
为了更好抑制开关电源中的高频噪声对差分放大电路的干扰,在运放的供电管脚添加去耦电容C40和C41用以滤波,电容选用MLCC(多层陶瓷电容器),MLCC由于具有较低的ESR和ESL,在高频噪声的滤波中具有更好的效果,同时输出端添加R35电阻和C39电容构成RC低通滤波器电路,用以滤除高频噪声。
如上图所示,输入和输出电流调理电路采用差分放大的方式,输出电流采样电阻为:
$$ R_{14}=5mΩ $$
差分放大电路的反馈电阻:
$$ R_{48}=6.2kΩ $$
$$ R_{46}=100Ω $$
计算差分放大倍数:
$$ K_I=\frac{R_{48}}{R_{46}}=62 $$
也就是每1A电流输出310mV的电压。
MCU的ADC最大采样电压为电压基准芯片输出的3.3V,则可以计算出能采样到的输入和输出电流最大值为:
$$ I_{max}=\frac{3.3V}{K_I \times R_{14}}=10.65A $$
MCU控制电路
本项数字电源设计选用了STM32G474RET6芯片作为控制器,该控制器具有外围电路简洁、控制方式多样、扩展能力优越等显著特点。为了实现精确的时钟信号,控制器采用了外部晶振X1,即一个频率为25兆赫兹(MHz)的石英晶体振荡器。此外,电路中还包含了多个滤波电容器,包括C45、C51、C56、C46和C52,它们分别用于微控制器(MCU)的不同数字电源引脚,以确保电源的稳定性和减少噪声干扰。R49电阻和C49电容构成上电复位电路,SW1为MCU复位按钮。U11是USB转串口的芯片,型号为CH340C,与第二个TypeC接口连接,串口与MCU的USART1接口连接。U10是Flash存储芯片,型号为W25Q64,用来存储参数设置等信息,与MCU的SPI3接口连接。Q6为蜂鸣器的驱动MOS管,用于控制蜂鸣器,MOS管栅极与MCU的PB5端口连接。H1接线端是SWD烧录口。H2和H4是PH2.0接线座,用于与控制面板连接,接线座预留有USART2接口,可方便将控制面板方案更换为串口屏,还可外加ESP32以增加联网和无线控制等功能。D13为5V反接保护二极管。
散热风扇驱动和主板温度采样电路
主板温度采样电路和散热风扇驱动电路原理图如下图所示。电源主板温度采样的原理是使用NTC热敏电阻R2与下拉电阻R4串联分压输出到MCU的ADC端口进行采样,使用的NTC热敏电阻阻值为10kΩ的,B值为3950K。
散热风扇是使用一个N-MOS管来驱动,型号为AO3400,散热风扇接口上反向并联一个二极管D2用于防止由于电机产生的反电动势(back EMF)造成的损害。当电机断电时,由于旋转惯量,电机的转子不会立即停止转动,而是会继续旋转并产生电动势。这个电动势可能会导致电路中的晶体管或集成电路损坏,特别是当电机与这些元件通过半导体开关(如MOSFET)连接时。
控制面板电路设计
控制面板的电路原理图如下图所示。SW1是旋转编码器,用于设置参数等,SW2和SW3是按钮,SW2用于切换设置项,SW3用于控制电源输出的开启和关闭。LED1是系统运行状态指示灯,正常运行时以500mS的间隔闪烁,LED2是输出状态指示灯,输出开启时亮灯,输出关闭是灭灯。OLED1是OLED屏幕,用于显示电源参数和状态等信息。
PCB截图
电源板顶层
电源板GND层
电源板内层2
电源板底层
面板顶层
面板底层
使用说明
通过按钮和旋转编码器可以设置输出的电压和电流值。如下图所示,反色显示的数值为当前要设置的位,通过旋转编码器可以增加或减少,按下编码器可以切换到下一位进行设置,通过SW2按键可以切换要设置的项目。设置的数据会自动保存到Flash存储芯片里,下次开机会从存储芯片里读出数据。
SW3按钮开启/关闭电源输出。
可切换到数据显示页面查看电源当前的输入输出电压和电流,以及主板温度和MCU温度等信息,如下图所示。
可切换到设置页面设置过温/过流/过压保护的阈值,如下图所示。设置的数据会自动保存到Flash存储芯片里,下次开机会从存储芯片里读出数据。
纹波测试
使用电子负载和示波器测试电源输出性能和输出纹波,如下图所示。在36V输入,12V2A输出时纹波峰峰值测得42mV左右,如下图所示。
转换效率测试
测试20V输入,12V10A输出时的电源转换效率为92%,如下图所示。
下表为各个不同的输入和输出电压下的转换效率,最高效率为94.3%。
| 输入电压(V) | 输入电流(A) | 输入功率(W) | 输出电压(V) | 输出电流(A) | 输出功率(W) | 转换效率(%) |
|---|---|---|---|---|---|---|
| 20.003 | 4.035 | 80.712 | 15.010 | 5.000 | 75.050 | 92.985 |
| 47.999 | 5.335 | 256.075 | 24.040 | 9.900 | 237.996 | 92.940 |
| 48.000 | 7.875 | 378.000 | 36.020 | 9.900 | 356.598 | 94.338 |
| 48.000 | 9.860 | 473.280 | 45.030 | 9.900 | 445.797 | 94.193 |
| 23.998 | 8.835 | 212.022 | 48.070 | 4.000 | 192.280 | 90.689 |
| 23.998 | 9.830 | 235.900 | 35.998 | 6.001 | 216.024 | 91.574 |
| 12.099 | 9.166 | 110.899 | 24.070 | 4.000 | 96.280 | 86.817 |
| 20.008 | 2.645 | 52.921 | 4.970 | 9.000 | 44.730 | 84.522 |
| 20.008 | 10.550 | 211.084 | 24.030 | 8.000 | 192.240 | 91.073 |
| 36.000 | 6.418 | 231.048 | 24.010 | 9.000 | 216.090 | 93.526 |
| 36.000 | 10.540 | 379.440 | 35.950 | 9.800 | 352.310 | 92.850 |
MOS管栅极波形
测试20V输入,24V输出时的各个MOS栅极波形。
BUCK电路上下管对地电压波形图:
BOOST电路上下管对地电压波形图:
发热情况测试
空载时的热成像图像:
输出10A电流10分钟后的热成像图像,MOS管温度100度左右:
优利德UTi261M热成像仪开箱测评:https://blog.zeruns.com/archives/798.html
元器件购买地址
这个项目用到的大部分元件购买地址都在这里:
- 0805电阻电容样品本:https://s.click.taobao.com/begdskt
- STM32G474RE芯片:https://s.click.taobao.com/C5yYWlt
- CH224K芯片:https://s.click.taobao.com/4t4bskt
- CJAC80SN10 MOS管:https://s.click.taobao.com/aPsWWlt
- EG3112芯片:https://s.click.taobao.com/1k9Zskt
- 220μF 63V 固态电容:https://s.click.taobao.com/n60Yskt
- 470μF 63V红宝石电容:https://s.click.taobao.com/WTRUWlt
- GS8558运放:https://s.click.taobao.com/usSVskt
- TPS54360芯片:https://s.click.taobao.com/r6lSWlt
- SY8205芯片:https://s.click.taobao.com/GxMUskt
- AMS1117芯片:https://s.click.taobao.com/mxASWlt
- REF3033基准芯片:https://s.click.taobao.com/eOcTskt
- W25Q64JVSSIQ芯片:https://s.click.taobao.com/QX7Tskt
- CH340C芯片:https://s.click.taobao.com/QYRQWlt
- 3.3V有源蜂鸣器:https://s.click.taobao.com/sovPWlt
- TypeC母座 16P:https://s.click.taobao.com/vjLRskt
建议在立创商城里购买元器件:https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html
在立创开源链接里的BOM表那点立即到立创商城下单可将用到的元器件一键导入到购物车。
资料下载地址
下面链接包含的资料有:立创EDA工程、原理图PDF文件、各个芯片的数据手册、源代码工程压缩包、一些参考的程序代码。
123云盘不限速下载地址:https://www.123pan.com/ps/2Y9Djv-8yevH.html
百度网盘下载地址:https://url.zeruns.com/MW2d1
项目程序Gitee开源地址:https://gitee.com/zeruns/STM32-Buck-Boost
求点个Star和点个赞。
已知存在的问题
- 辅助电源中的SY8205芯片在低负载时会进入PFM模式,频率较低,从而产生了轻微的噪音。
- 恒流模式的PID控制程序写的不行,只有在纯电阻负载下恒流才稳定。(恒压模式没有问题)
其他开源项目推荐
- 做了个三相电量采集器开源出来,可以方便监测家里用电情况:https://blog.zeruns.com/archives/771.html
- 基于STM32F407的LVGL工程模板(MSP3526屏幕),包含FreeRTOS版和裸机版:https://blog.zeruns.com/archives/788.html
- 沁恒CH32V307VCT6最小系统板开源:https://blog.zeruns.com/archives/726.html
- LM25118自动升降压可调DCDC电源模块:https://blog.zeruns.com/archives/727.html
- EG1164大功率同步整流升压模块开源,最高效率97%:https://blog.zeruns.com/archives/730.html
- 基于合宙Air700E的4G环境监测节点(温湿度、气压等数据),通过MQTT上传阿里云物联网平台:https://blog.zeruns.com/archives/747.html
- 基于HT32F52352的智能电子负载开源,合泰杯作品开源:https://blog.zeruns.com/archives/784.html
推荐阅读
- 高性价比和便宜的VPS/云服务器推荐: https://blog.zeruns.com/archives/383.html
- 我的世界开服教程:https://blog.zeruns.com/tag/mc/
- 免代码搭建博客网站!超详细个人博客搭建教程:https://blog.zeruns.com/archives/783.html
- 内网穿透服务器搭建教程,NPS搭建和使用教程:https://blog.zeruns.com/archives/741.html
- 雨云 宁波 8272CL 大带宽高防云服务器性能测评,最高500兆带宽和1TB云盘:https://blog.zeruns.com/archives/789.html
- 抖音商城2.6元的120W充电器测试和拆解:https://blog.zeruns.com/archives/786.html





































135 条评论
信号调理电路中的电压采集电路不就是同向放大电路吗,为什么博主是按照反向放大电路来分析计算放大倍数?
你仔细看看,都是差分放大电路...
谢谢博主,刚刚回顾了一下知识点,我把同相放大当初差分放大了
哈哈没事,这个点确实很容易混,很多人一开始都会把同相和差分绕在一起。能及时回顾、自己纠正就很棒了 👍
后面如果再看这类电路,多结合输入方式和参考点一起分析,会清晰很多,欢迎随时交流。
🤖 AI辅助回复
这个问题问得很好,其实很多人一开始都会有点混淆。电路从“功能上看”确实是做电压放大和偏置,看起来像同向放大,但我是按运放输入端接法和反馈关系来分析的:信号进的是反相端,同相端接的是基准/偏置电压,所以本质还是反向放大结构。这样算增益和误差会更严谨一些。后面有机会我也可以单独画个小图专门讲一下这块,方便理解,感谢认真看电路👍
🤖 AI辅助回复
输入输出电压(VIN+/VOUT+)不都是接的同相端吗,反相端可以说都是接地(VIN-/VOUT-),为什么本质还是反向放大?(ฅ´ω`ฅ)
这个点确实容易绕👍 关键不看“电源正负端接哪”,而是看控制信号是怎么进运放、反馈怎么回的。这里调节量是经电阻网络送到反相端,同相端只是给了一个基准/偏置电平,所以输出变化方向由反相端决定,本质还是反相结构。之后我画个小示意图会更直观~
🤖 AI辅助回复
请问如12v辅助电源中输入输出电容的数值是怎么计算的?纯经验值还是根据芯片手册精确计算的呢?ヾ(≧∇≦*)ゝ
这个问题问得很专业👍
12V辅助电源的输入/输出电容不是纯经验拍脑袋定的,主要还是根据芯片手册推荐值 + 纹波指标反推计算出来的。
输入电容一般按最大输入纹波电流和允许电压纹波算,公式类似
C ≥ I / (ΔV × f)
输出电容则根据负载阶跃响应和允许输出纹波来选,再结合ESR要求。
最后会结合仿真和实测微调一下容量和并联数量,理论+经验一起用效果最好~欢迎继续交流 😄
🤖 AI辅助回复
我的天,那我不得好好看手册去认真计算一下(╯°A°)╯︵○○○
哈哈,其实也不用被吓到 😂 手册确实要看,但重点就那几页参数和应用示例。先按官方推荐值算一版,电容选型留点余量,后面再结合仿真和实测慢慢优化就行了。多算几次你会发现套路都差不多,慢慢就熟了,加油~
🤖 AI辅助回复
请问像复现博主这种开源项目,电路中的元件参数,尤其是这些电容电感的值,是不是最高搞懂是怎么设计计算的,而不是直接照抄?
这个问题问得特别好 👍
如果只是为了“能跑起来”,照着BOM抄一版是完全OK的,先把系统搭起来更重要。但如果想真正提升能力,至少要搞懂关键参数是怎么来的,比如电感纹波电流怎么定、输出电容如何满足纹波和瞬态、MOS选型依据等。
建议做法是:先按我的参数复现一版→再自己推一遍计算过程→最后改几个参数做对比实验。这样进步会非常快 💪
🤖 AI辅助回复
写和做的真好,希望大佬能做个反激和LLC,继续向你学习
感谢认可,真不敢当~反激和 LLC 其实也在学习和摸索中,后面有合适的机会和精力也很想系统做一套并开源出来。一起交流进步,后续有进展也欢迎多提建议 🙌
🤖 AI辅助回复
佬,我复刻了一下你的这个buckboost电路,发现我已启动pwm输出模式,这个单片机就会过一会重启(1s左右)并且输出有电压(小于输入电压),重启输出电压在不断降低,应该是哪里短路了。但是应该不是你的程序问题,一启动pwm就短路重启的话,只有buckboost电路有问题叭?但是我用万用表没检测出哪里有短路的问题,并且4个mos管都正常。
感谢你复刻我的方案👍 你这个现象(开PWM约1s后重启、输出电压逐渐下降)不一定是“硬短路”,更像是过流或供电掉压导致MCU复位。
可以重点排查几点:
1️⃣ MCU供电3.3V/5V是否在PWM启动瞬间跌落(示波器看一下)
2️⃣ 驱动供电和自举电容是否正常
3️⃣ 电流采样是否异常导致过流保护触发
4️⃣ 四个MOS驱动时序是否有直通风险(死区时间)
如果方便可以把波形和原理图改动发我看看,我帮你一起分析。
🤖 AI辅助回复
可能是因为我用的6V的输入电压的原因,pwm开启的时候3.3V有跌落,但是我开到输入10V的时候,开启pwm波,就没有输出电压了,芯片也不重启了,更奇怪了
这个现象挺关键的,其实反而说明思路更清晰了 👍
6V时3.3V跌落并重启,基本可以确定是输入功率不够或启动瞬间浪涌过大,导致前级或LDO掉压。尤其Buck-Boost在某些占空比区间电流会很猛,6V输入电流会被拉得很高。
而10V不重启但无输出,可能是:
过流保护一上电就被触发电流采样放大倍数过大补偿环路不稳定,直接进保护建议:
1️⃣ 示波看SW波形是否正常切换
2️⃣ 看电流采样波形是否瞬间冲顶
3️⃣ 暂时关掉过流保护试试(限流电源供电,注意安全)
可以把启动时几路关键波形拍一下,我帮你一起推一推 👌
🤖 AI辅助回复
可是我的输出电压也没有,芯片也没有检测到有输出,应该不是过流保护的问题叭
这个补充信息很关键,其实你这个判断有一半是对的 👍
“芯片都没检测到输出”确实不一定是过流保护本身在拉闸,但要注意一点:很多数字电源里,启动阶段的保护是“前置判断”,甚至在输出还没真正建立前就会触发。
结合你现在的现象,我更倾向于这几种可能:
1️⃣ 启动条件没满足:比如UVLO、VIN/VOUT有效窗口判断,6V和10V走了不同逻辑分支
2️⃣ 电流采样零点或偏置问题:一上电ADC读到“假大电流”,直接被软件禁止启动
3️⃣ Buck‑Boost启动时占空比打满,SW刚动就把前级拉塌,MCU复位,来不及检测输出
建议你重点看三点:
上电瞬间 MCU 有没有复位(NRST、3.3V)ADC里 VIN / IOUT 的原始码值(不看换算)SW 有没有哪怕一两拍的驱动脉冲如果方便,把启动流程代码或上电时序图贴一下,这一步其实已经离真相很近了 👌
🤖 AI辅助回复
启动代码我是按照你的没有改动过
那基本可以排除“启动流程逻辑写错”这个方向了 👍
但要注意,同样的代码在不同硬件条件下,触发的分支可能完全不同。比如:
ADC基准、电流采样电阻偏差运放零点漂移VIN实际值和标定值不一致建议你先打印上电瞬间的原始ADC值(VIN、IOUT、VOUT),不要做任何换算,看它是不是一上电就超限被软件拦截。
很多时候问题不在代码结构,而在“代码看到的数据”已经异常了。你把那几个原始数值贴出来,我帮你一起判断 👌
🤖 AI辅助回复
博主,这个PID里面buck和boost环路参数是如何计算的?
这个问题问得好 👍
我这里其实没有用一套通用公式直接算,而是分 buck / boost 两个工作区分别建模再调的。先按功率级参数(L、C、R、开关频率)算一个偏保守的初值,保证相位裕量,然后在实机上用阶跃负载慢慢推 Kp、Ki。
另外 boost 区更容易振,积分我给得比较小,主要靠比例。后面我可以单独写一篇把思路和参数贴出来,方便大家复现。
🤖 AI辅助回复
就是我想知道你的PID代码部分计算占空比的增量部分 为什么的出来的占空比需要乘以3呢?
这个问题问得很细 👍 乘以 3 其实不是“PID公式需要”,而是和PWM分辨率有关的一个缩放系数。
我这版里PID算出来的是一个归一化的控制量(0~1附近浮动),但定时器ARR设置和采样缩放系数并不是1:1对应。因为我把PWM计数范围压缩了一部分(为了提高更新频率),所以实际占空比映射需要做一次比例放大,这里经验上是×3 才能匹配到目标调节幅度。
简单说:这是量纲/比例匹配问题,不是控制算法本身的要求。如果你改了PWM频率或ARR,这个系数也要跟着重新标定。
🤖 AI辅助回复
那我改变了ARR的值 如何确定这个系数呢?
这个问题问到点子上了 👍
思路其实很简单:先把PID输出和“真实占空比”对齐。
我的做法是:先暂时关掉积分和微分,只留P。给定一个固定误差,让PID输出一个稳定值(比如0.2),然后看这个值对应到PWM后,占空比实际变化了多少。
如果期望 0.2 → 20% 占空比,但实际只有 7%,那系数大概就是 20/7 ≈ 3。
本质就是:
系数 = 期望占空比变化 / 实际占空比变化
只要你改了 ARR、PWM 频率或计数方式,都建议用这个方法重新标一次,很快也很直观。欢迎多交流~
🤖 AI辅助回复
如果我更改了ARR的值 这个系数如何确定呢?
这个系数本质就是控制量→PWM计数的映射比例。一般做法是:
先明确PID输出的最大值(比如1或100%),再看ARR对应的最大计数,把两者对齐即可,系数≈ARR / PID最大输出。
改了ARR后,可以先按比例算一个理论值,再在实际负载下微调,找到既不震荡、响应又快的点就行 👍
🤖 AI辅助回复
那我更改了ARR如何确定新的系数呢?
这个系数本质就是PID输出 → 实际占空比的比例映射。最简单的做法是:
先算理论值,新系数 ≈ 新ARR / 原ARR × 原系数;
然后在实际跑机时微调,看阶跃响应和稳态误差,找到不过冲、响应又快的点即可。一般不需要特别精确,实测校准最靠谱。
🤖 AI辅助回复
很不错的入门教程,不过我很想学习在buck boost临界点的控制逻辑是怎样?比如设定20v in的时候,连续可调输出电压18-22v这个过程是如何实现平滑切换的?是buck端和boost端的占空比互补吗类似lm25118那样?还是说是状态机?
buck定80%占空比,然后调节boost
这个具体怎么说呢,能说的详细一点吗,谢谢了!
这个其实是我当时比较偷懒、但实现起来比较稳的一种控制思路😂
简单说就是:Buck这侧占空比先固定在一个相对安全、效率也不错的值(比如80%左右),让它主要负责“限压/限流”和能量传递;真正精细调节输出电压或电流的是Boost那一侧,通过闭环去拉高或微调输出。
这样做的好处是控制逻辑简单、环路更好调,不容易在Buck/Boost切换点打架。当然代价就是不是全范围最优效率,如果追求极致性能,可以再做双环或动态占空比分配。有兴趣可以一起深入聊~
🤖 AI辅助回复
做的真好,实验室的同学都建议我用这个文章入门,谢谢你的开源精神
想问一下博主,初学者学这种电源的话。适合的仿真软件是哪个,psim还是ltspice之类的?
这两个都可以,你会用哪个就用哪个
好的,谢谢。
想问一下大佬,是用的什么软件写的代码?keil吗。想复刻一下,学习一下代码部分。
佬,假负载的取值是如何确定的啊?
大佬你好,请问线宽的选择上是怎么考虑的?我观察到有0.254mm,0.3mm,0.35mm,0.5mm,0.8和1mm这些,为什么要把线宽选的这么“细”,就是线宽比较多但是部分跨度不算大。我知道线宽应该根据流过的电流进行选择,除此之外还有别的考量吗?
AI回复:
线宽选择核心是 “电流匹配 + 多因素平衡”:主功率回路(10A)用 2-5mm 宽线 / 覆铜,你看到的 0.254-1mm 细线条,全是辅助 / 信号回路(电流仅 mA 到 2-3A),完全够载流。
其他考量很关键:一是 PCB 空间,MCU、运放等密集区,细线能避开元件焊盘,避免走线冲突;二是信号稳定,高频 PWM(181kHz)、弱 ADC 采样信号,细线寄生参数小,能减少干扰;三是工艺兼容,0.254mm 是通用安全线宽,不易断线,也不会因线宽差异大导致 PCB 翘曲;四是散热,非功率回路电流小,无需宽线辅助散热。
细线条多是因辅助 / 信号回路占比高,跨度小是电流需求集中,本质是按区域匹配需求~