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

倾佳电子杨茜致力于推动国产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)中,以求取不同移相角的最佳组合。
- 随机文章
- 热门文章
- 热评文章
- 云南:闯出高质量跨越式发展新路
- 欧拉董玉东:更加彻底地ALL IN女性赛道
- 省油口碑好的亚洲龙和智能科技感强的君越艾维亚怎么选?
- 配置更高 动力更强!2024款奥迪Q4 e-tron发布:售41.2万起
- 开特股份超额配售270万股 本次发行募集资金净额约为1.23亿元
- 新门派峨眉!《剑侠世界:起源》峨眉论剑资料片今日8点上线
- 太阳能(000591):中节能太阳能股份有限公司监事会议事规则
- 强生(JNJ.US)10亿美元引进口服多肽积极试验结果公布