ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

基于STM32G4 HRTIM的四开关Buck-Boost双向DC-DC数字电源设计与实现

基于STM32G4 HRTIM的四开关Buck-Boost双向DC-DC数字电源设计与实现 1. 为什么选择四开关Buck-Boost而不是传统方案做双向DC-DC电源绕不开一个核心问题输入电压和输出电压谁高谁低。电池供电场景里电池电压从满电到放空可能从4.2V掉到3.0V而负载端可能稳定需要5V也可能需要3.3V。这种输入输出交叉、且需要能量双向流动的场景传统方案要么用SEPIC/Cuk效率一般、无源器件多要么用两套单向变换器背靠背器件翻倍、成本高要么用带变压器的隔离方案体积大、设计复杂。四开关Buck-BoostFour-Switch Buck-Boost简称FSBB恰好卡在一个很舒服的位置它用四个开关管和一个电感就能实现升降压双向运行而且输入输出同极性、无隔离、效率高。更关键的是它天然适合数字化控制——四个管子的驱动时序、模式切换、电流方向控制全部可以交给MCU来协调。我这次选STM32G4系列核心原因就是它内置的HRTIMHigh Resolution Timer高分辨率定时器。HRTIM的PWM分辨率可以做到184ps级别取决于主频和倍频配置这对开关电源来说意义重大。普通定时器在100kHz开关频率下占空比调节精度大概只有0.1%左右而HRTIM能把精度提升一到两个数量级直接改善输出电压纹波和动态响应。再加上G4系列有内置的运放、比较器、DAC做数字电源环路时外围电路能省一大截。这个项目适合谁看如果你已经玩过STM32的GPIO和定时器想往数字电源方向深入或者你在做毕业设计、项目开发需要一套能跑起来的双向DC-DC方案再或者你单纯想搞明白HRTIM到底怎么用在电源里——那这篇内容应该能帮到你。下面我会从整体设计思路、硬件关键细节、HRTIM配置、控制环路实现、实测问题排查几个维度把整个项目拆开讲。2. 四开关Buck-Boost的拓扑本质与工作模式拆解2.1 拓扑结构长什么样四开关Buck-Boost的功率级结构其实很对称。左侧两个开关管记为Q1、Q2组成一个桥臂右侧两个开关管Q3、Q4组成另一个桥臂电感L跨接在两个桥臂的中点之间。输入电容在左侧输出电容在右侧。Vin ──┬── Q1 ──┬── L ──┬── Q3 ──┬── Vout │ │ │ │ Cin Q2 Q4 Cout │ │ │ │ Vin- ──┴────────┴───────┴────────┴── Vout-这个结构看起来像两个同步Buck面对面拼在一起。实际上它的工作逻辑也确实可以这样理解左侧桥臂负责把输入电压斩波成方波电感储能右侧桥臂负责把电感的能量整流输出。能量从Vin到Vout时Q1/Q2是主动桥臂Q3/Q4做同步整流能量反向流动时Q3/Q4变成主动桥臂Q1/Q2做同步整流。2.2 三种工作模式Buck、Boost、Buck-BoostFSBB最核心的控制逻辑就是模式切换。根据输入输出电压关系它有三种稳态工作模式Buck模式Vin VoutQ4常关Q3常通或者做同步整流Q1/Q2组成同步Buck。这时候电感电流在开关周期内是单向的正向右侧桥臂不参与斩波。Boost模式Vin VoutQ1常通Q2常关Q3/Q4组成同步Boost。电感电流方向不变但能量传递方式变了。Buck-Boost模式Vin ≈ Vout四个管子都参与开关。这是最复杂的模式也是FSBB区别于普通Buck或Boost的关键。在这个区域控制策略有很多变种常见的有单电感电流双向运行Q1/Q4同时开关Q2/Q3同时开关互补或者采用三模式切换纯Buck、纯Boost、以及过渡区Buck-Boost我实际调试下来在Vin和Vout接近的区域如果直接硬切模式输出电压会有明显的扰动。所以我的做法是设置一个过渡带比如|Vin - Vout| 1V时进入Buck-Boost模式用占空比同时调节两个桥臂让能量平滑过渡。2.3 双向能量流动怎么实现双向的核心在于电感电流的方向控制。当能量从Vin流向Vout时电感电流平均值为正当能量反向时电感电流平均值为负。在同步整流架构下电流反向流动是自然的——只要右侧桥臂的同步整流管在电感电流过零后继续导通电流就会反向。但这里有个坑如果直接用同步整流让电流自由反向轻载时效率会变差因为反向电流会带来额外的导通损耗和环流。我的做法是引入电流方向检测用采样电阻或者电感DCR检测电感电流当检测到电流方向与期望方向相反且超过阈值时关闭对应的同步整流管进入二极管整流模式或者叫非同步模式。STM32G4内置的比较器和运放可以快速响应这个过零检测延迟控制在几十纳秒级别。2.4 为什么不用专用电源芯片有人会问TI、ADI都有现成的四开关Buck-Boost控制器比如LT8390、TPS55288为什么还要用STM32HRTIM自己搭原因有几个。第一专用芯片的环路补偿是模拟的参数固定想改控制策略很麻烦。第二专用芯片通常只支持单向或者固定方向双向需要额外逻辑。第三也是最重要的——用MCU做数字控制你可以实时监控输入输出电压电流、做复杂的模式切换逻辑、实现恒压恒流恒功率多种模式、甚至跑PID之外的先进控制算法。对于需要通信、数据记录、故障保护的场景MCU方案灵活太多。当然代价是开发难度高不少尤其是HRTIM的配置和环路调试。下面我会把这块讲透。3. 硬件设计关键细节与器件选型3.1 功率管选型为什么我最终用了IRF540N标题里提到了IRF540这确实是个经典选择。IRF540N的耐压100V、导通电阻44mΩ典型值、电流33ATO-220封装价格便宜好买。对于低压场景比如12V-24V输入、5V-20V输出、几安培电流它完全够用。但选功率管不能只看这几个参数。我实际选型时会重点看参数为什么重要IRF540N表现Vds耐压决定最高输入电压100V留足余量Rds(on)决定导通损耗44mΩ10V可接受Qg总栅极电荷决定驱动损耗和开关速度约70nC中等Coss输出电容影响开关损耗和死区约250pF一般体二极管反向恢复影响同步整流效率一般需注意死区IRF540N是逻辑电平兼容的吗不是。它的Vgs(th)在2V-4V之间但要想达到44mΩ的Rds(on)需要Vgs10V。所以驱动电路必须能提供10V以上的栅极电压。我用的是半桥驱动芯片比如IR2104或者UCC27211自举电容供电能输出10-12V的驱动电压。如果你要做的电压更高、电流更大可以考虑IRF320555V/110A、或者更现代的GaN/SiC器件。但IRF540N作为入门和中等功率场景性价比很高。3.2 电感选型不是越大越好电感是FSBB的核心储能元件。选电感主要看三个参数电感量、饱和电流、直流电阻。电感量决定了电流纹波。在Buck模式下电流纹波ΔI (Vin - Vout) × D / (L × fsw)其中D Vout/Vin。在Boost模式下ΔI Vin × D / (L × fsw)D 1 - Vin/Vout。我设定的开关频率是200kHz输入12V、输出5V、满载3A。Buck模式下D0.417ΔI (12-5)×0.417/(L×200k)。如果选L22μHΔI ≈ 0.66A大约是满载电流的22%比较合理。如果选L10μHΔI ≈ 1.46A纹波太大输出电容压力大。如果选L47μHΔI ≈ 0.31A纹波小但电感体积大、DCR高、动态响应慢。所以22μH是个折中。饱和电流要大于峰值电流Ipeak Iout ΔI/2 3 0.33 3.33A。留一倍余量选饱和电流6A以上的电感。DCR要尽量小我选的是一体成型电感DCR约30mΩ满载导通损耗约0.27W可以接受。注意电感选型时一定要看饱和电流是在什么温度下测的。很多电感标称饱和电流是25°C下的温度升高后饱和电流会下降20%-30%。电源满载跑起来电感温度可能到80°C以上所以余量要留够。3.3 输入输出电容纹波和动态响应的关键输入电容主要承受开关管斩波产生的脉冲电流。在Buck模式下输入电流是脉冲的需要电容提供低阻抗回路。输出电容则要吸收电感电流纹波维持输出电压稳定。电容选型核心看两个参数容值和ESR等效串联电阻。输出纹波大致由两部分组成容值引起的纹波ΔVc ΔI/(8×fsw×C)ESR引起的纹波ΔVesr ΔI×ESR。我输出用两颗220μF的固态电容并联ESR约10mΩ。ΔI0.66A时ΔVesr 0.66×0.01 6.6mVΔVc 0.66/(8×200k×440μ) ≈ 0.94mV。总纹波不到10mV实测下来差不多。输入电容我用了两颗100μF固态电容加一颗10μF陶瓷电容。陶瓷电容负责高频固态电容负责中低频。这里有个经验陶瓷电容的容值会随直流偏压下降标称10μF的X5R电容在12V偏压下可能只剩5μF。所以陶瓷电容要选耐压高一些的或者多颗并联。3.4 采样电路电流和电压怎么测数字电源的闭环控制依赖准确的采样。我用了三种采样输出电压采样电阻分压后接STM32的ADC。分压电阻选精度1%的比如100kΩ和20kΩ分压比6:1输出20V时ADC看到3.33V在3.3V量程内。分压电阻旁边并联一个100nF电容做RC滤波截止频率约1.6kHz能滤掉开关噪声但不会太影响动态响应。电感电流采样我用的是采样电阻方案。在电感回路中串一个5mΩ的采样电阻用STM32G4内置的运放做差分放大增益设为20倍。5mΩ×3A×20 300mVADC能准确采集。采样电阻的功耗是3A²×5mΩ 45mW可以接受。也可以用电感DCR采样省掉采样电阻的损耗但DCR随温度变化大需要温度补偿精度不如采样电阻。对于需要精确电流控制的场景我建议还是用采样电阻。输入电压采样同样电阻分压用于模式判断和输入欠压保护。实操心得采样电阻的布局非常关键。差分走线要尽量靠近运放输入端远离功率回路。我第一版PCB把采样电阻放在电感正下方结果开关噪声耦合严重电流波形全是毛刺。后来把采样电阻移到电感侧面差分线用地线包围噪声立刻降下来了。4. HRTIM配置STM32G4数字电源的核心武器4.1 HRTIM是什么为什么电源设计离不开它HRTIM全称High Resolution Timer是STM32G4系列以及部分F3、H7特有的高分辨率定时器。它和普通定时器最大的区别是普通定时器计数时钟就是系统时钟比如170MHz而HRTIM内部有一个倍频锁相环能把等效计数频率推到4.6GHz以上从而实现184ps的时间分辨率。184ps是什么概念在200kHz开关频率下一个周期是5μs。普通定时器170MHz计数一个周期850个计数占空比调节步进是1/850 ≈ 0.118%。HRTIM等效4.6GHz计数一个周期23000个计数占空比步进是1/23000 ≈ 0.0043%。精度提升了27倍。这对电源意味着什么输出电压的调节精度直接受占空比精度影响。在Buck模式下Vout Vin × D如果D的调节精度是0.118%12V输入时输出电压的量化误差约14mV。如果精度提升到0.0043%量化误差只有0.5mV。对于需要高精度输出的场景这个差别是决定性的。4.2 HRTIM的架构Master和Timer A-EHRTIM内部有一个Master定时器和5个独立的TimerA到E。每个Timer有独立的计数器和比较寄存器可以输出两路互补PWM带死区。Master定时器可以同步所有Timer也可以作为全局周期基准。对于四开关Buck-Boost我用了Timer A和Timer BTimer A输出Q1/Q2的互补PWM左侧桥臂Timer B输出Q3/Q4的互补PWM右侧桥臂Master定时器设定开关周期同步A和B每个Timer有四个比较寄存器CMP1到CMP4。CMP1通常设定占空比CMP2设定死区或者用于特殊时序。我用了CMP1和CMP3来分别控制上升沿和下降沿实现非对称PWM输出。4.3 死区时间设置不能太大也不能太小死区时间是半桥电路必须的。同一桥臂的上下管不能同时导通否则输入直接短路瞬间大电流烧管。死区就是在上下管切换之间插入的一段“都不导通”的时间。死区太小直通风险高死区太大体二极管导通时间长损耗增加。IRF540N的开关时间开通延迟约10ns上升时间约30ns关断延迟约25ns下降时间约20ns。考虑驱动芯片的延迟和器件分散性我设了200ns死区。200ns死区在200kHz下占周期的4%会略微降低有效占空比范围但安全。实测下来200ns死区时体二极管导通损耗约0.3W满载可以接受。如果你用开关更快的管子比如GaN死区可以降到50ns甚至更低。HRTIM的死区配置很灵活。每个Timer有独立的上升沿死区和下降沿死区寄存器可以分别设置。我设的是上升沿和下降沿都是200ns。4.4 关键代码HRTIM初始化和PWM配置下面是HRTIM初始化的核心代码基于STM32 HAL库但HRTIM部分我直接操作寄存器因为HAL的HRTIM封装不够灵活// HRTIM时钟使能 RCC-APB2ENR | RCC_APB2ENR_HRTIM1EN; // HRTIM全局配置 HRTIM1-sCommonRegs.CR 0x00000000; HRTIM1-sCommonRegs.ISR 0xFFFFFFFF; // 清除所有中断标志 // 配置Master定时器周期 // 假设HRTIM时钟170MHz倍频32倍后等效5.44GHz // 200kHz周期 5us5.44GHz × 5us 27200个计数 HRTIM1-sMasterRegs.MPER 27200 - 1; HRTIM1-sMasterRegs.MCMP1R 27200 / 2; // 50%占空比基准 // 配置Timer A左侧桥臂 HRTIM1-sTimerxRegs[0].TIMxCR 0x00000000; HRTIM1-sTimerxRegs[0].TIMxCR | HRTIM_TIMCR_CONT; // 连续模式 HRTIM1-sTimerxRegs[0].TIMxCR | HRTIM_TIMCR_PREEN; // 预装载使能 HRTIM1-sTimerxRegs[0].TIMxCR | HRTIM_TIMCR_SYNC; // 同步到Master // Timer A周期与Master一致 HRTIM1-sTimerxRegs[0].PERxR 27200 - 1; // 配置比较寄存器CMP1决定占空比 HRTIM1-sTimerxRegs[0].CMP1xR 27200 / 2; // 初始50% // 配置输出TA1和TA2互补 HRTIM1-sTimerxRegs[0].TIMxCR | HRTIM_TIMCR_DACSYNC; HRTIM1-sTimerxRegs[0].OUTxR 0x00000000; HRTIM1-sTimerxRegs[0].OUTxR | HRTIM_OUTR_IDLES1; // 空闲状态TA1高 HRTIM1-sTimerxRegs[0].OUTxR | HRTIM_OUTR_FAULT1; // 故障时TA1低 // 死区配置200ns // 死区寄存器值 200ns × 5.44GHz 1088 HRTIM1-sTimerxRegs[0].DTxR 1088; HRTIM1-sTimerxRegs[0].DTxR | (1088 16); // 上升沿和下降沿死区 // 使能输出 HRTIM1-sTimerxRegs[0].OENR | HRTIM_OENR_TA1OEN | HRTIM_OENR_TA2OEN; // 启动HRTIM HRTIM1-sMasterRegs.MCR | HRTIM_MCR_TACEN; // Timer A计数使能 HRTIM1-sMasterRegs.MCR | HRTIM_MCR_SYNC; // 同步启动这段代码里最关键的是周期和比较值的计算。HRTIM的等效计数频率 170MHz × 32 5.44GHz。200kHz周期对应5μs计数27200。占空比50%时CMP1 13600。实际运行时PID计算出的占空比duty0到1之间写入CMP1的值就是duty × 27200。HRTIM硬件会自动比较输出PWM。4.5 模式切换的HRTIM配置Buck模式和Boost模式下四个管子的开关逻辑不同。我用HRTIM的预装载和输出使能来实现模式切换Buck模式Timer A正常输出互补PWMTimer B的Q3常通、Q4常关。具体做法是设置Timer B的CMP1为周期值Q3一直导通或者直接关闭Timer B输出用GPIO强制Q3高、Q4低。Boost模式Timer B正常输出互补PWMTimer A的Q1常通、Q2常关。Buck-Boost模式Timer A和Timer B都输出PWM但相位关系需要调整。我用的策略是Q1和Q4同相Q2和Q3同相这样电感两端电压在开关周期内对称电流纹波最小。模式切换时我先把目标模式的CMP值预装载好然后在Master定时器的更新事件时切换输出使能确保切换发生在周期边界避免脉冲异常。踩过的坑早期版本我在PID中断里直接改CMP寄存器结果偶尔出现占空比跳变导致的输出电压尖峰。后来改成在HRTIM的更新中断里统一更新CMP值问题解决。HRTIM的预装载机制保证了新值在下一个周期生效不会在当前周期中途改变。5. 数字控制环路从ADC采样到PID输出5.1 控制环路整体架构整个控制环路跑在STM32G4上流程是这样的HRTIM在周期开始时触发ADC采样通过HRTIM的ADC触发输出ADC转换完成后触发DMA把结果搬到内存DMA传输完成中断里执行PID计算PID输出写入HRTIM的CMP寄存器下一个周期生效这个流程的关键是时序对齐。ADC采样时刻要避开开关噪声。我通常把采样点设在开关管导通的中点这时候电流纹波在平均值附近噪声最小。STM32G4的ADC采样率很高12位下可达4Msps200kHz开关频率下每个周期有足够时间完成采样和计算。我用的是ADC1和ADC2同步采样一个采输出电压一个采电感电流。5.2 PID参数整定从理论到实测数字PID的离散形式我用的是位置式u(k) Kp × e(k) Ki × Σe(j) Kd × [e(k) - e(k-1)]其中e(k) Vref - Vout(k)。参数整定我走了不少弯路。一开始按理论计算Kp 0.1Ki 100Kd 0。结果输出电压振荡频率约2kHz。分析下来是Ki太大积分饱和导致超调。后来改用临界比例度法先把Ki和Kd设为0逐渐增大Kp直到系统等幅振荡。实测Kp0.5时开始振荡振荡周期约0.5ms。然后按Ziegler-Nichols公式Kp0.3Ki2000Kd0.0001。这次响应快了很多但仍有轻微超调。最终我手动微调Kp0.25Ki1500Kd0.00005。阶跃响应上升时间约200μs超调小于5%稳态误差几乎为零。这个参数在12V转5V、3A负载下表现稳定。实操心得PID参数和开关频率、电感、电容都相关。如果你改了电感或电容PID要重新整定。另外电流环和电压环的带宽要拉开通常电流环带宽是电压环的5-10倍否则两个环会互相干扰。5.3 抗积分饱和不能忽略的细节积分项在启动和负载突变时会累积很大的值导致输出饱和。我的做法是积分限幅积分项累加值限制在±0.5范围内输出限幅PID输出限制在0.05到0.95之间留出死区余量积分分离当误差大于阈值比如0.5V时暂时关闭积分只用PD快速响应这三招下来启动时输出电压平滑上升没有过冲。负载从0.5A突加到3A时电压跌落约150mV恢复时间约300μs。5.4 电流方向控制与双向切换双向运行的核心是电流方向。我设定了两种运行状态正向Vin→Vout电压环输出正占空比电感电流为正。当检测到电感电流反向且超过-0.2A时关闭右侧同步整流管进入二极管模式。反向Vout→Vin电压环输出负占空比或者切换到反向控制逻辑电感电流为负。这时候左侧桥臂做同步整流右侧桥臂主动斩波。方向切换的触发条件我设了两个一个是外部命令通过UART或按键一个是自动检测——当Vout超过设定值且持续一段时间自动进入反向模式把能量回馈到输入。实测下来方向切换时输出电压会有约200mV的扰动持续约500μs。如果对扰动敏感可以在切换时先降功率切换完成后再恢复。6. 实测问题排查与避坑经验6.1 常见问题速查表现象可能原因排查方法解决方法上电烧管死区不足或驱动异常示波器看上下管栅极波形增大死区检查驱动供电输出电压振荡PID参数不当观察振荡频率降低Kp或Ki重新整定轻载效率低同步整流反向电流测电感电流波形启用过零检测关闭反向同步整流ADC采样噪声大采样时刻不对对比不同采样点的波形调整采样时刻到导通中点模式切换时输出跌落切换逻辑太硬观察切换瞬间波形增加过渡带平滑切换HRTIM无输出时钟或使能配置错误检查HRTIM寄存器确认时钟使能、输出使能、计数使能电感发热严重饱和或DCR大测电感电流是否饱和换大饱和电流、低DCR电感输入电流纹波大输入电容不足测输入电流波形增加陶瓷电容并联6.2 最坑的三个问题第一个坑HRTIM输出死活不出来。我检查了所有配置寄存器周期、比较值、死区都对但示波器上就是没波形。后来发现是HRTIM的时钟使能位没置位——RCC_APB2ENR_HRTIM1EN。这个位在参考手册里写得很清楚但我当时看的是旧版手册漏掉了。加上之后立刻正常。第二个坑ADC采样值跳变。输出电压采样值在±50mV范围内随机跳。一开始以为是ADC噪声加了滤波电容也没用。后来用示波器看ADC输入引脚发现开关噪声耦合很严重。原因是采样分压电阻离功率电感太近。把分压电阻移到板子另一侧噪声从50mV降到5mV。第三个坑满载时电感啸叫。3A负载时电感发出可听噪声。查下来是开关频率在轻载和满载之间跳变进入了音频范围。我的做法是固定开关频率为200kHz不启用频率调制。如果一定要用频率调制比如为了EMI要确保频率不低于20kHz。6.3 调试工具和步骤调试数字电源示波器是必须的。我用的是一台100MHz带宽、2通道的示波器配合电流探头。关键波形要看上下管栅极电压看死区和驱动是否正常电感电流看纹波、饱和、方向输出电压看纹波、动态响应开关节点电压看振铃和尖峰调试步骤我总结为先不焊功率管只焊驱动电路用信号发生器给HRTIM等效信号测驱动输出焊上功率管输入接低压比如3V空载测试看开关波形逐步升高输入电压加轻载观察输出电压加满载整定PID测试双向切换测试保护功能过流、过压、欠压每一步都要确认波形正常再往下走不要跳步。我见过有人直接上满载结果炸管炸了一片。7. 源码结构与仿真验证7.1 代码组织整个工程我按功能分成了几个模块hrtim.cHRTIM初始化和PWM更新adc.cADC采样和DMA配置pid.cPID计算和参数管理mode.c模式判断和切换逻辑protect.c过流、过压、欠压保护main.c主循环和状态机主循环是一个简单的状态机初始化→待机→软启动→正常运行→故障处理。软启动用2ms时间把输出电压从0升到设定值避免启动冲击。7.2 仿真验证在打板之前我用PLECS做了仿真。PLECS的电力电子模型很准能模拟开关损耗和热效应。仿真里我验证了三种模式的稳态波形模式切换的动态过程PID参数的效果满载和轻载的效率仿真和实测的偏差主要在寄生参数上。仿真里电感是理想的实测电感有DCR和寄生电容导致效率比仿真低3-5个百分点。但趋势和波形基本一致仿真对参数选择很有帮助。如果你没有PLECS也可以用LTspice或者PSIM。LTspice免费模型库也全就是开关电源仿真速度慢一些。7.3 源码获取与移植源码我放在GitHub上了搜索项目名就能找到。代码基于STM32CubeIDE开发用了HAL库做基础配置HRTIM和ADC部分直接操作寄存器。移植到其他STM32G4型号时主要改时钟配置和引脚定义HRTIM和ADC的逻辑不用动。如果你用的是STM32F3系列也有HRTIM需要注意F3的HRTIM版本和G4略有不同主要是倍频系数和寄存器地址有差异。参考手册里都有详细说明。8. 效率优化与热设计8.1 效率实测数据我在12V输入、5V输出、3A负载下测了效率负载效率主要损耗0.5A88%开关损耗为主1A92%开关导通2A94%导通为主3A93%导通电感DCR轻载效率偏低是因为开关损耗固定输出功率小的时候占比高。如果轻载效率重要可以降低开关频率或者进入突发模式Burst Mode。但突发模式会增大输出纹波看应用需求取舍。8.2 热设计要点满载3A时主要发热器件是四个MOS管和电感。IRF540N的导通损耗3A² × 44mΩ 0.4W每管四个管共1.6W。开关损耗约0.5W。电感DCR损耗3A² × 30mΩ 0.27W。总损耗约2.4W效率约93%。PCB布局上MOS管下面铺铜散热电感选大尺寸的。实测满载运行10分钟MOS管表面温度约65°C电感约55°C在安全范围内。如果环境温度高或者需要长时间满载要加散热片或者选更低Rds(on)的管子。经验热设计不能只看稳态。启动瞬间和负载突变时瞬时损耗可能是稳态的好几倍。我一般按稳态损耗的1.5倍来设计散热。9. 这个方案还能怎么扩展这套四开关Buck-Boost的数字控制框架扩展性很强。我后续打算做几个方向加入恒流模式现在只有恒压加一个电流环就能做恒流充电。对电池充电场景很有用。多相并联单相3A如果要做更大电流可以用两相或四相交错并联。HRTIM有5个Timer足够驱动多相。交错并联还能降低输入输出纹波。通信接口STM32G4有CAN-FD和USB可以加通信做远程监控和参数配置。我打算加一个CAN接口把电压电流数据实时上传。先进控制算法现在用的是PID可以试试模型预测控制或者滑模控制。G4的算力170MHz Cortex-M4带FPU跑这些算法绰绰有余。更高电压换100V以上的MOS管和驱动输入可以做到48V甚至更高。但要注意爬电距离和安规。这套东西从硬件到软件都是开放的你可以按自己的需求改。我踩过的坑基本都写在上面了希望能帮你少走弯路。电源设计这东西理论看再多不如实际焊一块板子调一调波形一出来什么问题都清楚了。
返回列表