互补PWM死区时间如何根据MOSFET开关参数精确计算?

互补PWM死区时间的精确计算是防止H桥上下桥臂直通、避免MOSFET烧毁和降低开关损耗的关键。其核心在于根据所选MOSFET数据手册中的开关时间参数,并结合驱动电路的实际延迟,留出足够的安全裕量。以下是基于MOSFET参数的计算方法、步骤及实践指南。

一、核心计算公式与参数定义

死区时间(Dead Time, T_dead)必须覆盖从"关闭信号生效"到"对侧开启信号生效"之间,两个MOSFET可能同时导通的风险窗口。其计算公式为:

T_dead = Max(T_off_max, T_delay) + Max(T_on_max, T_delay) + T_margin

参数符号 参数名称 定义与获取方式 单位
T_off_max 最大关断延迟时间 从栅极驱动电压开始下降到漏极电流开始下降的时间(数据手册 t_d(off))。 ns
T_on_max 最大开启延迟时间 从栅极驱动电压开始上升到漏极电流开始上升的时间(数据手册 t_d(on))。 ns
T_delay 驱动电路传播延迟 驱动芯片(如IR2104)输入到输出的延迟(数据手册 t_PLH, t_PHL),取最大值。 ns
T_margin 安全裕量时间 考虑温度、电压变化、器件离散性等因素的额外时间,通常为20-100ns。 ns

关键点 :实际计算时,应取 T_off_maxT_delay 中的较大者,以及 T_on_maxT_delay 中的较大者进行相加,因为延迟可能来自MOSFET本身或驱动芯片,需以防最慢的情况 。

二、分步计算实例

假设我们使用一个典型的功率MOSFET IRF3205 和驱动芯片 IR2104

步骤1:查阅MOSFET数据手册获取开关时间

  • 在IRF3205的数据手册中,查找 Turn-On Delay Time (t_d(on))Turn-Off Delay Time (t_d(off))。这些参数通常在特定的测试条件下给出(如 V_GS=10V, I_D=50A, V_DS=50V)。
  • 示例值 (需以实际手册为准):
    • t_d(on)_max = 60 ns
    • t_d(off)_max = 110 ns

步骤2:查阅驱动芯片数据手册获取传播延迟

  • 在IR2104的数据手册中,查找 Propagation Delay (t_PLH, t_PHL)
  • 示例值
    • t_PLH_max = 120 ns (低到高延迟)
    • t_PHL_max = 95 ns (高到低延迟)
    • 取两者最大值:T_delay = 120 ns

步骤3:选择安全裕量

  • 根据应用可靠性要求,选择 T_margin = 50 ns

步骤4:代入公式计算

复制代码
T_dead = Max(110 ns, 120 ns) + Max(60 ns, 120 ns) + 50 ns
       = 120 ns + 120 ns + 50 ns
       = 290 ns

因此,理论计算所需的最小死区时间约为 290纳秒

三、在微控制器(以STM32为例)中的配置实现

计算出的纳秒级时间需要转换为MCU定时器时钟周期数进行配置。STM32高级定时器(如TIM1/TIM8)通过 BDTR寄存器DTG位域 来设置死区时间,其计算方式与定时器时钟 T_dts 密切相关 。

步骤1:确定死区时间基准时钟 T_dts
T_dts 来源于定时器输入时钟 CK_INT,经过时钟分频因子 CKD 得到。

  • 公式T_dts = (CKD / TIMx_CLK)
    • 其中 TIMx_CLK 是定时器的实际时钟频率(如84MHz)。
    • CKDTIMx_CR1 寄存器中设置,可取 1, 2, 4。
  • 示例 :若 TIMx_CLK = 84 MHzCKD=1,则 T_dts = 1 / 84MHz ≈ 11.9 ns

步骤2:根据DTG寄存器编码规则计算寄存器值

DTG[7:0] 的编码分为4个区间,对应不同的计算公式。以下是简化流程:

DTG[7] DTG[6] 公式 死区时间 T_dtg
0 0 T_dtg = DTG[5:0] * T_dts `
0 ~ 63 * T_dts`
0 1 T_dtg = (64 + DTG[5:0]) * 2 * T_dts `
128T_dts ~ 254T_dts`
1 0 T_dtg = (32 + DTG[4:0]) * 8 * T_dts `
256T_dts ~ 2032T_dts`
1 1 T_dtg = (32 + DTG[4:0]) * 16 * T_dts `
512T_dts ~ 4064T_dts`

步骤3:配置代码示例 (STM32 HAL库)

假设我们需要设置 T_dead = 290 ns,且 T_dts = 11.9 ns

  1. 计算所需时钟周期数:N = T_dead / T_dts ≈ 290 / 11.9 ≈ 24.4,向上取整为 25个周期
  2. 由于25落在第一个区间(0-63),因此 DTG[7:6] = 00, DTG[5:0] = 25 (0x19)
  3. 完整的寄存器值 DBDTG 即为 0x19
c 复制代码
// STM32 HAL库 死区时间配置代码示例 
TIM_HandleTypeDef htim1;
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};

// ... 定时器基础配置(预分频、周期等)已省略

// 配置死区时间
sBreakDeadTimeConfig.DeadTime = 0x19; // 对应 25 * T_dts ≈ 298 ns (略大于计算值290ns,安全)
sBreakDeadTimeConfig.BreakState = TIM_BREAK_ENABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_ENABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;

if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) {
    Error_Handler();
}

// 使能主输出(MOE)是互补PWM输出的关键一步,必须在死区配置后、PWM启动前执行 
__HAL_TIM_MOE_ENABLE(&htim1);

// 最后启动PWM通道
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); // 启动互补通道

代码关键注释DeadTime 成员直接写入 DBDTG 寄存器的值。配置完成后,必须通过 __HAL_TIM_MOE_ENABLE 使能主输出,互补PWM才会生效 。

四、验证与调试

  1. 示波器验证 :这是最直接的验证方法。使用双通道示波器,分别测量同一桥臂的上管栅极信号(GH)和下管栅极信号(GL)。确保在 GH 下降沿与 GL 上升沿之间(反之亦然),存在一段两者都为低电平的平台期,其时间长度应与设定值相符 。
  2. 发热与效率监测:在负载下运行电机,监测MOSFET温升。如果死区时间不足,会出现直通现象,导致MOSFET急剧发热。如果死区时间过长,虽然安全,但会降低输出电压有效值,增加谐波,也可能导致效率下降和电机噪音 。
  3. 动态调整考量:在一些高级控制方案中,死区时间可以根据母线电压和电机电流进行动态补偿,以优化不同工况下的效率 。

总结表格:死区时间设置全流程

步骤 关键动作 依据与工具 目标
1. 参数提取 从MOSFET和驱动芯片数据手册中提取 t_d(on), t_d(off), t_PLH/HL 器件数据手册 获取原始时间参数
2. 理论计算 使用公式 T_dead = Max(T_off,T_delay)+Max(T_on,T_delay)+T_margin 计算 计算器 得出纳秒级理论值
3. 寄存器换算 根据MCU定时器时钟 T_dts 和DTG编码规则,计算寄存器值 芯片参考手册 得到待写入的配置值
4. 代码配置 在初始化代码中配置定时器的死区时间寄存器,并确保使能MOE 开发环境、HAL/LL库 将参数写入硬件
5. 实测验证 用示波器测量栅极信号,验证死区时间实际宽度 示波器 确认硬件执行与设计一致
6. 系统调优 结合温升、效率和波形,微调死区时间或安全裕量 温枪、功率分析仪 实现安全与效率的最佳平衡

精确的死区时间计算与配置,是保障功率变换系统可靠运行的基础。务必以最坏情况下的参数(最大值)进行计算,并通过实验进行最终验证和微调 。


参考来源

相关推荐
嵌入小生00725 天前
硬件 --- GPIO/中断/定时器/蜂鸣器
单片机·嵌入式硬件·定时器·pwm·gpio·蜂鸣器·中断
阿拉斯攀登1 个月前
第 10 篇 RK 平台安卓驱动实战 3:PWM 驱动开发,实现 LED 呼吸灯 + 电机调速
驱动开发·嵌入式硬件·pwm·瑞芯微·嵌入式驱动·rk3576·嵌入式安卓
深念Y1 个月前
手搓一个焊锡抽烟机:用淘汰电脑风扇+锂电池+管道排室外
pwm·电子·diy·散热风扇·焊锡·松香·调速
JialBro2 个月前
【嵌入式】直流无刷电机FOC控制算法全解析
算法·嵌入式·直流·foc·新手·控制算法·无刷电机
youcans_3 个月前
【动手学STM32G4】(16)PWM 触发 ADC 精确同步采样
stm32·单片机·嵌入式硬件·pwm·adc
youcans_3 个月前
【动手学STM32G4】(15)三路互补带死区 PWM 输出
stm32·单片机·嵌入式硬件·pwm·死区
proware3 个月前
edp屏幕pwm不准确分析
pwm·edp·背光·cabc
老李的森林3 个月前
嵌入式开发--无刷电机FOC控制--用定时器事件驱动ADC采样
stm32·单片机·嵌入式硬件·foc·无刷电机
ベadvance courageouslyミ3 个月前
51单片机相关
单片机·51单片机·定时器·pwm·蜂鸣器·中断·独立按键