固态变压器DC/DC隔离级DAB变换器代码

频道:国际行情 日期: 浏览:64728

全球能源互联网核心节点赋能者-BASiC Semiconductor基本半导体之一级代理商倾佳电子(Changer Tech)是一家专注于功率半导体和新能源汽车连接器的分销商。主要服务于中国工业电源电力电子设备和新能源汽车产业链。倾佳电子聚焦于新能源、交通电动化和数字化转型三大方向,代理并力推BASiC基本半导体SiC碳化硅MOSFET单管,SiC碳化硅MOSFET功率模块,SiC模块驱动板等功率半导体器件以及新能源汽车连接器。

wKgZO2mWUVSAA6J_AEMYqped1cc135.png

倾佳电子杨茜致力于推动国产SiC碳化硅模块在电力电子应用中全面取代进口IGBT模块,助力电力电子行业自主可控和产业升级!

倾佳电子杨茜咬住SiC碳化硅MOSFET功率器件三个必然,勇立功率半导体器件变革潮头:

倾佳电子杨茜咬住SiC碳化硅MOSFET模块全面取代IGBT模块和IPM模块的必然趋势!

倾佳电子杨茜咬住SiC碳化硅MOSFET单管全面取代IGBT单管和大于650V的高压硅MOSFET的必然趋势!

倾佳电子杨茜咬住650V SiC碳化硅MOSFET单管全面取代SJ超结MOSFET和高压GaN 器件的必然趋势!

固态变压器(Solid State Transformer, SST)的 DC/DC 隔离级目前在学术界和工业界最通用的拓扑是双有源桥变换器(Dual Active Bridge, DAB)。它具有易于实现高频电气隔离、支持能量双向流动以及全功率范围内易于实现软开关(ZVS)等优点。

DAB 最经典、应用最广泛的控制策略是单移相控制(Single Phase Shift, SPS)。在 SPS 模式下,DAB 的原边全桥和副边全桥各自输出固定 50% 占空比的高频方波,通过控制这两个方波之间的**相位差(移相占空比 D)**来调节传输功率的大小和方向。

倾佳电子杨茜提供的 DAB 变换器代码编写指南,包含底层 DSP C语言实现、参数验证 Python 代码以及工程调试避坑指南。

1. 核心数学模型 (SPS控制)

在单移相控制下,DAB 的传输有功功率公式为: $$ P = frac{n V_1 V_2}{2 f_s L} D (1 - |D|) $$

V1​,V2​: 原边和副边直流侧母线电压

n: 变压器变比 (Nsec​/Npri​)

fs​: 开关频率

L: 变压器漏感 + 线路外接辅助电感

D: 移相占空比,定义为 D=π相移角度​。理论取值范围为 [−0.5,0.5](对应 −90∘∼90∘)。

D>0:原边超前副边,能量正向流动(原边传向副边)。

D<0:副边超前原边,能量反向流动(副边传向原边)。

D=±0.5 时达到理论最大传输功率。

2. 嵌入式 DSP 控制代码 (C语言)

在实际的数字控制中(如使用 TI C2000 系列 DSP 或 STM32),我们通常采用电压闭环控制:采集实际输出电压 → 经过 PI 控制器计算 → 输出移相比 D → 换算为定时器 Tick 数并更新 PWM 相位寄存器

以下代码通常运行在与 PWM 同频的**定时器中断服务函数(ISR)**中。

2.1 数据结构与 PI 控制器定义

C

#include < stdint.h >
#include < math.h >

// --- DAB 系统与硬件限制参数 ---
#define PWM_PERIOD_TICKS 1000   // PWM定时器周期计数值 (根据开关频率和系统时钟设定)
#define MAX_PHASE_SHIFT  0.45f  // 最大移相占空比 (理论0.5,留出裕量防止失控和死区重叠)
#define MIN_PHASE_SHIFT -0.45f  // 反向最大移相占空比

// --- PI 控制器结构体 ---
typedef struct {
    float V_ref;        // 目标参考电压 (V)
    float V_meas;       // 实际反馈采样电压 (V)
    float Kp;           // 比例系数
    float Ki;           // 积分系数
    float error;        // 当前误差
    float integral;     // 积分项
    float D_out;        // 输出:移相占空比 D (-0.5 ~ 0.5)
} PI_Controller;

// 实例化 PI 控制器 (假设设定输出 400V)
PI_Controller dab_pi = {
    .V_ref = 400.0f,    
    .Kp = 0.05f,        // 需根据实际硬件传递函数整定
    .Ki = 0.002f, 
    .integral = 0.0f,
    .D_out = 0.0f
};

2.2 闭环控制中断服务函数

C

// DAB 电压闭环控制函数 (运行在定时中断中,频率通常为开关频率)
void DAB_Control_ISR(void) {
    // 1. 读取硬件 ADC 采样值并转换为电压 (需替换为实际底层函数)
    dab_pi.V_meas = Read_ADC_Voltage();

    // 2. 计算误差
    dab_pi.error = dab_pi.V_ref - dab_pi.V_meas;

    // 3. PI 积分计算与抗积分饱和 (Anti-windup)
    dab_pi.integral += dab_pi.error * dab_pi.Ki;
    if (dab_pi.integral > MAX_PHASE_SHIFT)  dab_pi.integral = MAX_PHASE_SHIFT;
    if (dab_pi.integral < MIN_PHASE_SHIFT)  dab_pi.integral = MIN_PHASE_SHIFT;

    // 4. 计算 PI 总输出 (即移相占空比 D)
    dab_pi.D_out = (dab_pi.Kp * dab_pi.error) + dab_pi.integral;

    // 5. 整体输出限幅
    if (dab_pi.D_out > MAX_PHASE_SHIFT)  dab_pi.D_out = MAX_PHASE_SHIFT;
    if (dab_pi.D_out < MIN_PHASE_SHIFT)  dab_pi.D_out = MIN_PHASE_SHIFT;

    // 6. 软启动与斜率限制 (防止D剧烈跳变导致变压器偏磁炸机)
    // dab_pi.D_out = Slew_Rate_Limiter(dab_pi.D_out);

    // 7. 更新 PWM 移相寄存器
    Update_PWM_PhaseShift(dab_pi.D_out);
    
    // 8. 清除中断标志位 (依具体 MCU 而定)
    // Clear_Interrupt_Flag();
}

2.3 底层 PWM 移相配置逻辑 (基于 TI C2000 思路)

DAB 的 PWM 配置非常关键。通常将原边全桥(如 EPWM1, EPWM2)设为主模块(Master),固定相位 0 并发出同步信号(SYNC);将副边全桥(如 EPWM3, EPWM4)设为从模块(Slave),接收 SYNC 并修改相位寄存器(TBPHS)。

C

void Update_PWM_PhaseShift(float phase_duty) {
    // 1. 将移相占空比 D [-0.5, 0.5] 转换为定时器的计数值 (Ticks)
    // 注意:如果是增减计数模式 (Up-Down),相移180度(D=0.5)对应的Tick数正好是PWM_PERIOD_TICKS
    // 所以相移 Ticks = |D| * 2 * PWM_PERIOD_TICKS
    uint16_t phase_ticks = (uint16_t)(fabsf(phase_duty) * 2.0f * PWM_PERIOD_TICKS);
    
    // 2. 写入副边 PWM 模块的相位寄存器
    EPwm3Regs.TBPHS.bit.TBPHS = phase_ticks; 
    EPwm4Regs.TBPHS.bit.TBPHS = phase_ticks;
    
    // 3. 设定同步时的计数器方向 (决定是超前还是滞后)
    if (phase_duty >= 0) {
        // 正向传输 (V1 -> V2):副边滞后于原边
        // 同步发生时,让计数器向下计数(TB_DOWN),产生滞后效果
        EPwm3Regs.TBCTL.bit.PHSDIR = TB_DOWN; 
        EPwm4Regs.TBCTL.bit.PHSDIR = TB_DOWN;
    } else {
        // 反向传输 (V2 -> V1):副边超前于原边
        // 同步发生时,让计数器向上计数(TB_UP),产生超前效果
        EPwm3Regs.TBCTL.bit.PHSDIR = TB_UP;
        EPwm4Regs.TBCTL.bit.PHSDIR = TB_UP;
    }
}

3. 参数验证与仿真 (Python 代码)

在写底层 C 代码、确定电感 L 选型之前,必须先用 Python 或 MATLAB 跑一下数学模型,确认你的硬件参数是否能满足目标传输功率。

Python

import numpy as np
import matplotlib.pyplot as plt

# --- DAB 硬件参数配置 ---
V1 = 750.0        # 原边直流电压 (V)
V2 = 400.0        # 副边直流电压 (V)
n = 750 / 400     # 变压器变比 N1/N2
fs = 100e3        # 开关频率 100 kHz
L = 40e-6         # 串联漏感 + 辅助电感 (40 uH)

# --- 传输功率计算 ---
def dab_power(D):
    # D: 移相占空比 (-0.5 到 0.5)
    P_max_theoretical = (n * V1 * V2) / (2 * fs * L)
    return P_max_theoretical * D * (1 - np.abs(D))

# 生成移相角 -0.5 到 0.5 的数组
D_array = np.linspace(-0.5, 0.5, 500)
Power_array = dab_power(D_array)

# --- 绘图与分析 ---
plt.figure(figsize=(9, 5))
plt.plot(D_array, Power_array / 1000, label='Transferred Power (kW)', color='#1f77b4', linewidth=2)
plt.axhline(0, color='black', linewidth=1)
plt.axvline(0, color='black', linewidth=1)

# 标记最大功率点 (D = 0.5)
P_max = dab_power(0.5) / 1000
plt.plot(0.5, P_max, 'ro')
plt.annotate(f'Max Power: {P_max:.2f} kW', xy=(0.5, P_max), xytext=(-80, -20), 
             textcoords='offset points', arrowprops=dict(arrowstyle="->"))

plt.title("DAB Transferred Power vs. Phase Shift Ratio (SPS)")
plt.xlabel("Phase Shift Ratio D (-0.5 to 0.5)")
plt.ylabel("Power (kW)")
plt.grid(True, linestyle='--')
plt.legend()
plt.show()

print(f"该硬件参数下理论最大传输功率: {P_max:.2f} kW")

4. 工业级 SST DAB 开发的“避坑指南”

如果您要把这段代码运行在真实的物理高压硬件上,仅有上述基础代码是绝对不够的,极易发生“炸机”。实际工程代码必须加入以下高级策略:

死区效应与极性反转补偿 (Dead-time Compensation): H 桥上下管必须添加死区以防直通。但在轻载时(移相角极小,往往与死区时间处于同一量级),死区会导致输出交流方波的极性反转,造成严重的电压畸变,使实际传输功率严重偏离理论公式。代码对策:根据采样到的高频电感电流极性,在软件中动态进行死区时间前馈补偿。

高频变压器直流偏磁抑制 (DC-Bias Prevention): 器件导通压降不一致、驱动延时不对称,或者代码中移相角 D 的剧烈跳变,都会导致变压器伏秒不平衡,累积直流偏磁电流,导致磁芯瞬间饱和炸机。代码对策:除了硬件串联隔直电容外,软件算法中必须引入斜率限制(Slew Rate Limiter),严禁移相角突变;高级算法还会采集原边高频电流的直流分量,微调占空比(不再死守 50.0%)进行主动纠偏。

缓启动状态机 (Soft Start): 上电瞬间,副边输出电容电压为 0,相当于输出短路。如果直接运行闭环 PI,积分器会瞬间拉满导致毁灭性的浪涌电流。代码对策:编写状态机,在启动阶段将 Vref​ 从 0 缓慢爬升(Ramp-up)至目标电压,或限制 D 从极小值逐渐放开。

多重移相控制 (EPS / DPS / TPS): SPS 控制的致命弱点是:当 SST 前后级电压不匹配 (V1​=nV2​) 或系统处于轻载时,会产生极大的无功回流功率,增加电流有效值并丢失软开关 (ZVS)。进阶的 DAB 往往会升级为双重移相 (DPS) 或 三重移相 (TPS)。这意味着代码不仅要控制原副边 H 桥之间的移相,还要在原/副边 H 桥内部的左右半桥之间引入内移相角(使得方波变成三电平阶梯波)。此时 PI 控制器的输出将接入一个复杂的多目标优化数学模型或查表(LUT)中,以求取不同移相角的最佳组合。

  • 随机文章
  • 热门文章
  • 热评文章