双向 DC-DC 电源(Bidirectional DC-DC Converter)是一种能够在两个直流电压等级之间进行能量双向流动的电力电子变换装置。它集升压(Boost)和降压(Buck)功能于一体,广泛应用于新能源储能系统、电动汽车、电池化成设备以及 UPS 系统中。
一、 核心工作原理与分类
双向 DC-DC 的核心思想是:同一电路既能实现 Buck(高压向低压供电),又能实现 Boost(低压向高压回馈能量) 。
根据输入输出之间是否有电气隔离,主要分为两大类:
1. 非隔离型双向 DC-DC
- 特点:结构简单、成本低、效率高,但输入与输出共地,没有电气隔离。
- 最常见拓扑 :双向同步 Buck-Boost 变换器 。
- 降压模式 (Buck):高压侧开关管进行 PWM 斩波,低压侧开关管常通(或同步整流),能量从高压流向低压。
- 升压模式 (Boost):低压侧开关管进行 PWM 斩波,高压侧开关管常通(或同步整流),能量从低压流向高压。
2. 隔离型双向 DC-DC
- 特点:安全性高,可以实现电压匹配和电气隔离,但结构复杂,成本较高。
- 最常见拓扑 :双有源桥 (Dual Active Bridge, DAB) 。
- 由全桥逆变、高频变压器、全桥整流以及串联谐振电感组成。
- 通过控制两侧全桥的移相角,可以精确地控制功率的大小和方向。
二、 主流拓扑详解
1. 双向同步 Buck-Boost(12V/24V 与 48V 系统互转)
这种拓扑相当于把两个同步整流 Buck 电路背靠背连在一起,共用一个电感。
- 正向(Buck) :开关管 Q1Q_1Q1 工作,Q2Q_2Q2 关断(体二极管续流或同步整流)。
- 反向(Boost) :开关管 Q2Q_2Q2 工作,Q1Q_1Q1 关断。
- 应用:汽车 48V 轻混系统(48V 锂电与 12V 铅酸互充)、电池备份系统。
2. 双有源桥 DAB(高压动力电池与低压辅助电源)
DAB 是目前中大功率隔离型双向电源的绝对主力。
- 工作原理 :通过高频变压器传递能量。调节初级侧和次级侧 H 桥输出方波的相位差 (δ\deltaδ),即可控制能量的流向和大小。相位差为正,能量正向传输;为负,则反向传输。
- 优势:软开关技术(ZVS 零电压开通),开关损耗极低,适合高频化(100kHz - 500kHz),功率密度极高。
- 应用:电动汽车车载充电机(OBC)、直流微电网、固态变压器。
三、 核心控制
双向电源的难点不在于硬件拓扑,而在于如何平滑、稳定地在双模式间切换。
-
电压电流双闭环控制
- 外环(电压环):维持一侧母线的电压稳定(例如保持低压侧 12V 母线恒定)。
- 内环(电流环):快速跟踪电流指令,限制电感电流,实现恒流充电或放电。
- 模式切换:当外环输出的电流参考值为正时,系统工作在 Boost 模式;为负时,工作在 Buck 模式。通过模拟电路或数字算法可以无缝切换。
-
移相控制 (Phase-Shift Control)
- 主要用于 DAB 拓扑。通过调节单移相 (SPS)、扩展移相 (EPS) 或双移相 (DPS) 来控制传输功率。
- 目标是在全负载范围内实现所有开关管的 ZVS(零电压软开关),最大限度提升效率。
四、 基于 STM32 的数字控制实现
现代双向 DC-DC 几乎全部采用 数字控制(DSP 或 MCU) ,因为模拟控制难以实现复杂的保护逻辑和灵活的模式切换。结合你之前对 STM32 和电机控制的兴趣,使用 STM32G4 系列 (内置高精度定时器 HRTIM 和运放比较器)或 STM32F3/H7 系列 是绝佳选择。
1. 硬件架构设计
- 主控:STM32G474 (推荐,自带 HRTIM 完美支持多相移相控制)。
- 功率器件:低压侧用低导通电阻的 MOSFET(如 40V/60V NexFET),高压侧可用 100V/150V MOSFET 或 SiC MOSFET(碳化硅,适合高频)。
- 驱动电路:隔离驱动(如 TI 的 UCC21520 光耦隔离驱)或非隔离半桥驱动(如 IR2184)。
- 电流/电压采样:使用 shunt 电阻 + 差分放大电路,信号送入 STM32 的内部运放(OPAMP)或高速 ADC。
2. 核心软件逻辑 (STM32 固件)
c
// 伪代码:双向 Buck-Boost 数字控制主循环
void main() {
HAL_Init();
SystemClock_Config();
MX_ADC1_Init(); // 初始化 ADC 采样电压电流
MX_HRTIM1_Init(); // 初始化高精度定时器产生 PWM
MX_COMP_Init(); // 初始化比较器用于硬件过流保护
// 启用 ADC 注入组中断(用于峰值电流模式控制)
HAL_ADCEx_InjectedStart_IT(&hadc1);
while (1) {
// 1. 读取传感器数据 (通过 DMA 或中断)
float v_high = Read_High_Voltage();
float v_low = Read_Low_Voltage();
float i_indutor = Read_Inductor_Current();
// 2. 模式判定与状态机
// 例:高压母线电压掉电 -> 切换到 Buck 模式,由低压电池给高压端供电
if (v_high < V_HIGH_MIN_THRESHOLD) {
power_mode = BUCK_MODE;
}
// 例:高压母线电压正常且有富余 -> 切换到 Boost 模式,给低压电池充电
else if (v_high > V_HIGH_MAX_THRESHOLD && v_low < V_LOW_FULL) {
power_mode = BOOST_MODE;
}
// 3. 双闭环 PID 计算
float voltage_error = target_voltage - v_low;
float current_ref = PI_Voltage_Loop(voltage_error);
float current_error = current_ref - i_indutor;
float pwm_duty = PI_Current_Loop(current_error);
// 4. 更新 PWM 占空比 (根据模式选择控制 Q1 或 Q2)
if (power_mode == BUCK_MODE) {
HRTIM_SlaveSetCompare(BUCK_TIMER, BUCK_CHANNEL, pwm_duty);
} else {
HRTIM_SlaveSetCompare(BOOST_TIMER, BOOST_CHANNEL, pwm_duty);
}
HAL_Delay(1); // 控制环路频率 1kHz - 10kHz
}
}
// ADC 中断回调:实现峰值电流模式控制或快速保护
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc) {
float current = HAL_ADC_GetValue(hadc);
if (current > OVER_CURRENT_LIMIT) {
// 硬件级别的快速关断 PWM
HRTIM_WaveformOutputStop(&hhrtim1, HRTIM_OUT_MASK_ALL);
}
}
参考代码 双向DCDC电源 www.youwenfan.com/contentcsu/70211.html
五、 总结与选型建议
- 小功率、低成本、非隔离需求 (如 12V/24V 系统):首选 同步 Buck-Boost,控制简单,用普通的 STM32F103 + 半桥驱动即可搞定。
- 大功率、高安全、需隔离需求 (如光伏、储能、电动汽车):必选 双有源桥 (DAB),配合 STM32G4 的 HRTIM(高精度定时器)来实现多通道移相 PWM 控制。