全球能源互聯網核心節點賦能者-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 #include // --- 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)中,以求取不同移相角的最佳組合。
-
變換器
+關注
關注
17文章
2165瀏覽量
112482 -
SiC
+關注
關注
32文章
3720瀏覽量
69378 -
固態變壓器
+關注
關注
1文章
86瀏覽量
3437
發布評論請先 登錄
62mm半橋SiC模塊設計固態變壓器 (SST) DAB的工程落地
固態變壓器DC/DC隔離級DAB變換器代碼
評論