互补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_max和T_delay中的较大者,以及T_on_max和T_delay中的较大者进行相加,因为延迟可能来自MOSFET本身或驱动芯片,需以防最慢的情况 。
二、分步计算实例
假设我们使用一个典型的功率MOSFETIRF3205和驱动芯片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 nst_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_dtsT_dts来源于定时器输入时钟CK_INT,经过时钟分频因子CKD得到。
- 公式:
T_dts = (CKD / TIMx_CLK)- 其中
TIMx_CLK是定时器的实际时钟频率(如84MHz)。 CKD在TIMx_CR1寄存器中设置,可取 1, 2, 4。
- 其中
- 示例:若
TIMx_CLK = 84 MHz,CKD=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。
- 计算所需时钟周期数:
N = T_dead / T_dts ≈ 290 / 11.9 ≈ 24.4,向上取整为25个周期。 - 由于25落在第一个区间(0-63),因此
DTG[7:6] = 00,DTG[5:0] = 25 (0x19)。 - 完整的寄存器值
DBDTG即为0x19。
// 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才会生效 。
四、验证与调试
- 示波器验证:这是最直接的验证方法。使用双通道示波器,分别测量同一桥臂的上管栅极信号(
GH)和下管栅极信号(GL)。确保在GH下降沿与GL上升沿之间(反之亦然),存在一段两者都为低电平的平台期,其时间长度应与设定值相符 。 - 发热与效率监测:在负载下运行电机,监测MOSFET温升。如果死区时间不足,会出现直通现象,导致MOSFET急剧发热。如果死区时间过长,虽然安全,但会降低输出电压有效值,增加谐波,也可能导致效率下降和电机噪音 。
- 动态调整考量:在一些高级控制方案中,死区时间可以根据母线电压和电机电流进行动态补偿,以优化不同工况下的效率 。
总结表格:死区时间设置全流程
| 步骤 | 关键动作 | 依据与工具 | 目标 |
|---|---|---|---|
| 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. 系统调优 | 结合温升、效率和波形,微调死区时间或安全裕量 | 温枪、功率分析仪 | 实现安全与效率的最佳平衡 |
精确的死区时间计算与配置,是保障功率变换系统可靠运行的基础。务必以最坏情况下的参数(最大值)进行计算,并通过实验进行最终验证和微调 。
参考来源
- BLDC ESC 无刷直流电子调速器简介
- STM32高级定时器实现:两路互补PWM输出,精准死区时间控制
- STM32高级定时器PWM互补输出与死区时间管理实战
- STM32F407高级定时器互补PWM死区时间配置与实战计算指南
- STM32高级定时器实战:互补PWM输出与死区时间精确配置指南
- STM32F4高级定时器互补PWM死区时间精准计算与实战配置
