其他
干货 | 炸机后才去注意PWM的死区时间
什么是死区时间?
PWM
是脉冲宽度调制,在电力电子中,最常用的就是整流和逆变。这就需要用到整流桥和逆变桥。IGBT
。大致如下图所示;IGBT
不能同时导通,否则就会出现短路的情况,从而对系统造成损害。上半桥关断后,延迟一段时间再打开下半桥; 下半桥关断后,延迟一段时间再打开上半桥;
数据手册的参数
NXP
的IRF540
的数据手册,栅极开关时间如下所示;:门极的开通延迟时间 :门极的关断延迟时间 :门极上升时间 :门极下降时间
IGBT
的数据手册;IGBT
的开关属性,同样可以找到,,,等参数,下面计算的时候会用到;如何计算合理的死区时间?
:最大的关断延迟时间; :最小的开通延迟时间; :最大的驱动信号传递延迟时间; :最小的驱动信号传递延迟时间;
MCU
的IO
驱动的话,需要考虑IO
的上升时间和下降时间,另外一般会加光耦进行隔离,这里还需要考虑到光耦的开关延时。STM32中配置死区时间
TIM
高级定时器支持互补PWM
波形发生,同时它支持插入死区时间和刹车的配置。8M
;#define PWM_PRSC ((u8)0)
#define PWM_PERIOD ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))))
/* Time Base configuration */
TIM1_TimeBaseStructure.TIM_Prescaler = 0x0;
TIM1_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1;
TIM1_TimeBaseStructure.TIM_Period = PWM_PERIOD;
TIM1_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2;
16K
,注意这里的PWM是中央对齐模式,因此配置的时钟频率为32K
;CK_INT
为32M#define DEADTIME_NS ((u16) 500) //in nsec; range is [0...3500]
#define DEADTIME (u16)((unsigned long long)CKTIM/2 \
*(unsigned long long)DEADTIME_NS/1000 000 000uL)
TIM1_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
TIM1_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1;
TIM1_BDTRInitStructure.TIM_DeadTime = DEADTIME;
TIM1_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
TIM1_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;
TIM1_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Disable;
Hz
,那么需要配置寄存器的值为;*(unsigned long long)DEADTIME_NS/1000 000 000uL)
想要深入了解物联网全栈设计? 储备必要知识技能?扫码报名安森美半导体全栈物联网应用大赛吧!
● 提交创意有机会赢30-100元京东卡;
● 入围大赛每人最多得6块板子:低功耗蓝牙5、温度/环境/惯性/地磁/环境光等传感器评估板任性选;
● 实现创意赢2000-15000奖金;
● 6位资深技术大牛实时技术加持。
推荐阅读
在公众号内回复您想搜索的任意内容,如问题关键字、技术名词、bug代码等,就能轻松获得与之相关的专业技术内容反馈。快去试试吧!
由于微信公众号近期改变了推送规则,如果您想经常看到我们的文章,可以在每次阅读后,在页面下方点一个「赞」或「在看」,这样每次推送的文章才会第一时间出现在您的订阅列表里。
或将我们的公众号设为星标。进入公众号主页后点击右上角「三个小点」,点击「设为星标」,我们公众号名称旁边就会出现一个黄色的五角星(Android 和 iOS 用户操作相同)。