完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32 TIM高级定时器的互补PWM支持插入死区时间,本文将介绍如何计算以及配置正确的死区时间。
什么是死区时间? PWM是脉冲宽度调制,在电力电子中,最常用的就是整流和逆变。这就需要用到整流桥和逆变桥。 对三相电来说,就需要三个桥臂。以两电平为例,每个桥臂上有两个电力电子器件,比如IGBT。大致如下图所示; 这两个IGBT不能同时导通,否则就会出现短路的情况,从而对系统造成损害。 那为什么会出现同时导通的情况呢? 因为开关元器件的tdon和tdoff严格意义并不是相同的。 所以在驱动开关元器件门极的时候需要增加一段延时,确保另一个开关管完全关断之后再去打开这个开关元器件,通常存在两种情况; 上半桥关断后,延迟一段时间再打开下半桥; 下半桥关断后,延迟一段时间再打开上半桥; 这样就不会同时导通,从而避免功率元件烧毁;死区时间控制在通常的单片机所配备的PWM中都有这样的功能,下面会进一步介绍。 相对于PWM来说,死区时间是在PWM输出的这个时间,上下管都不会有输出,当然会使波形输出中断,死区时间一般只占百分之几的周期。但是当PWM波本身占空比小时,空出的部分要比死区还大,所以死区会影响输出的纹波,但应该不是起到决定性作用的。 另外如果死区设置过小,但是仍然出现上下管同时导通,因为导通时间较短,电流较小,不足以烧毁,此时会导致开关元器件发热严重,所以选择合适的死区时间尤为重要; 数据手册的参数 这里看了一下NXP的IRF540的数据手册,栅极开关时间如下所示; 然后找到相关的tdon,tdff,tf 的相关典型参数; tdon:门极的开通延迟时间 tdoff:门极的关断延迟时间 tr:门极上升时间 tf:门极下降时间 下面是一个IGBT的数据手册; 下图是IGBT的开关属性,同样可以找到 tdon, tdff, tr, tf 等参数,下面计算的时候会用到; 如何计算合理的死区时间? 这里用tdead表示死区时间,因为门极上升和下降时间通常比延迟时间小很多,所以这里可以不用考虑它们。则死区时间满足; Tdoffmax :最大的关断延迟时间; Tdonmin :最小的开通延迟时间; Tpddmax :最大的驱动信号传递延迟时间; Tpddmin :最小的驱动信号传递延迟时间; 其中 Tdoffmax 和 Tdonmin 正如上文所提到的可以元器件的数据手册中找到; Tpddmax 和 Tpddmin 一般由驱动器厂家给出,如果是MCU的IO驱动的话,需要考虑IO的上升时间和下降时间,另外一般会加光耦进行隔离,这里还需要考虑到光耦的开关延时。 STM32中配置死区时间 STM32的TIM高级定时器支持互补PWM波形发生,同时它支持插入死区时间和刹车的配置。 直接看参考手册里的寄存器TIMx_BDTR,这是配置刹车和死区时间的寄存器; 可以看到死区时间DT由UTG[7:0]决定,这里还有一个问题是 TDTS是什么? 在TIMx_CR1的寄存器可以得知, tDTS由TIMx_CR1寄存器的CKD决定;如果这里配置成00,那么 tDTS 和内部定时器的频率相同,为8M; 结合代码做一下计算;系统频率为72M,下面是时基单元的配置; PWM的频率是16K,注意这里的PWM是中央对齐模式,因此配置的时钟频率为32K; 下面时刹车和死区时间,BDTR寄存器的配置,因此这里的CK_INT为32M 例:若TDTS = 31ns(32MHZ),可能的死区时间为: 0到3970ns,若步长时间为31ns; 4000us到8us,若步长时间为62ns; 8us到16us,若步长时间为250ns; 16us到32us,若步长时间为500ns; 如果需要配置死区时间 1000ns,系统频率72,000,000Hz,那么需要配置寄存器的值为; 直接写成宏定义的形式 用示波器验证了一下,结果正确; |
|
|
|
STM32 TIM高级定时器的互补PWM支持插入死区时间,本文将介绍如何计算以及配置正确的死区时间。
什么是死区时间? PWM是脉冲宽度调制,在电力电子中,最常用的就是整流和逆变。这就需要用到整流桥和逆变桥。 对三相电来说,就需要三个桥臂。以两电平为例,每个桥臂上有两个电力电子器件,比如IGBT。大致如下图所示; 这两个IGBT不能同时导通,否则就会出现短路的情况,从而对系统造成损害。 那为什么会出现同时导通的情况呢? 因为开关元器件的tdon和tdoff严格意义并不是相同的。 所以在驱动开关元器件门极的时候需要增加一段延时,确保另一个开关管完全关断之后再去打开这个开关元器件,通常存在两种情况; 上半桥关断后,延迟一段时间再打开下半桥; 下半桥关断后,延迟一段时间再打开上半桥; 这样就不会同时导通,从而避免功率元件烧毁;死区时间控制在通常的单片机所配备的PWM中都有这样的功能,下面会进一步介绍。 相对于PWM来说,死区时间是在PWM输出的这个时间,上下管都不会有输出,当然会使波形输出中断,死区时间一般只占百分之几的周期。但是当PWM波本身占空比小时,空出的部分要比死区还大,所以死区会影响输出的纹波,但应该不是起到决定性作用的。 另外如果死区设置过小,但是仍然出现上下管同时导通,因为导通时间较短,电流较小,不足以烧毁,此时会导致开关元器件发热严重,所以选择合适的死区时间尤为重要; 数据手册的参数 这里看了一下NXP的IRF540的数据手册,栅极开关时间如下所示; 然后找到相关的tdon,tdff,tf 的相关典型参数; tdon:门极的开通延迟时间 tdoff:门极的关断延迟时间 tr:门极上升时间 tf:门极下降时间 下面是一个IGBT的数据手册; 下图是IGBT的开关属性,同样可以找到 tdon, tdff, tr, tf 等参数,下面计算的时候会用到; 如何计算合理的死区时间? 这里用tdead表示死区时间,因为门极上升和下降时间通常比延迟时间小很多,所以这里可以不用考虑它们。则死区时间满足; Tdoffmax :最大的关断延迟时间; Tdonmin :最小的开通延迟时间; Tpddmax :最大的驱动信号传递延迟时间; Tpddmin :最小的驱动信号传递延迟时间; 其中 Tdoffmax 和 Tdonmin 正如上文所提到的可以元器件的数据手册中找到; Tpddmax 和 Tpddmin 一般由驱动器厂家给出,如果是MCU的IO驱动的话,需要考虑IO的上升时间和下降时间,另外一般会加光耦进行隔离,这里还需要考虑到光耦的开关延时。 STM32中配置死区时间 STM32的TIM高级定时器支持互补PWM波形发生,同时它支持插入死区时间和刹车的配置。 直接看参考手册里的寄存器TIMx_BDTR,这是配置刹车和死区时间的寄存器; 可以看到死区时间DT由UTG[7:0]决定,这里还有一个问题是 TDTS是什么? 在TIMx_CR1的寄存器可以得知, tDTS由TIMx_CR1寄存器的CKD决定;如果这里配置成00,那么 tDTS 和内部定时器的频率相同,为8M; 结合代码做一下计算;系统频率为72M,下面是时基单元的配置; PWM的频率是16K,注意这里的PWM是中央对齐模式,因此配置的时钟频率为32K; 下面时刹车和死区时间,BDTR寄存器的配置,因此这里的CK_INT为32M 例:若TDTS = 31ns(32MHZ),可能的死区时间为: 0到3970ns,若步长时间为31ns; 4000us到8us,若步长时间为62ns; 8us到16us,若步长时间为250ns; 16us到32us,若步长时间为500ns; 如果需要配置死区时间 1000ns,系统频率72,000,000Hz,那么需要配置寄存器的值为; 直接写成宏定义的形式 用示波器验证了一下,结果正确; |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:40 , Processed in 0.655858 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号