0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

两个IGBT为什么会出现同时导通的情况呢?

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2021-01-13 16:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是死区时间?

数据手册的参数

如何计算合理的死区时间?

STM32中配置死区时间

什么是死区时间?

PWM是脉冲宽度调制,在电力电子中,最常用的就是整流和逆变。这就需要用到整流桥和逆变桥。

对三相电来说,就需要三个桥臂。以两电平为例,每个桥臂上有两个电力电子器件,比如IGBT。大致如下图所示;

0351cc30-51b1-11eb-8b86-12bb97331649.png

这两个IGBT不能同时导通,否则就会出现短路的情况,从而对系统造成损害。

那为什么会出现同时导通的情况呢?

因为开关元器件的和严格意义并不是相同的。

所以在驱动开关元器件门极的时候需要增加一段延时,确保另一个开关管完全关断之后再去打开这个开关元器件,通常存在两种情况;

上半桥关断后,延迟一段时间再打开下半桥;

下半桥关断后,延迟一段时间再打开上半桥;

这样就不会同时导通,从而避免功率元件烧毁;死区时间控制在通常的单片机所配备的PWM中都有这样的功能,下面会进一步介绍。

038bcf70-51b1-11eb-8b86-12bb97331649.png

互补PWM的死区时间

相对于PWM来说,死区时间是在PWM输出的这个时间,上下管都不会有输出,当然会使波形输出中断,死区时间一般只占百分之几的周期。但是当PWM波本身占空比小时,空出的部分要比死区还大,所以死区会影响输出的纹波,但应该不是起到决定性作用的。

另外如果死区设置过小,但是仍然出现上下管同时导通,因为导通时间非常非常短,电流没有变得很大,不足以烧毁系统,那此时会导致开关元器件发热严重,所以选择合适的死区时间尤为重要,过大过小都不行。

数据手册的参数

这里看了一下NXP的IRF540的数据手册,栅极开关时间如下所示;

03c54c8c-51b1-11eb-8b86-12bb97331649.png

IRF540

然后找到相关的,,,的相关典型参数;

0437389c-51b1-11eb-8b86-12bb97331649.png

典型参数

:门极的开通延迟时间

:门极的关断延迟时间

:门极上升时间

:门极下降时间

下面是一个IGBT的数据手册;

046dab84-51b1-11eb-8b86-12bb97331649.png

IGBT

下图是IGBT的开关属性,同样可以找到,,,等参数,下面计算的时候会用到;

04c05c12-51b1-11eb-8b86-12bb97331649.png

开关属性

如何计算合理的死区时间?

这里用表示死区时间,因为门极上升和下降时间通常比延迟时间小很多,所以这里可以不用考虑它们。则死区时间满足;

:最大的关断延迟时间;

:最小的开通延迟时间;

:最大的驱动信号传递延迟时间;

:最小的驱动信号传递延迟时间;

其中和正如上文所提到的可以元器件的数据手册中找到;和一般由驱动器厂家给出;

如果是MCU的IO驱动的话,需要考虑IO的上升时间和下降时间,另外一般会加光耦进行隔离,这里还需要考虑到光耦的开关延时。

STM32中配置死区时间

STM32的TIM高级定时器支持互补PWM波形发生,同时它支持插入死区时间和刹车的配置。

直接看参考手册里的寄存器TIMx_BDTR,这是配置刹车和死区时间的寄存器;

04f2be0a-51b1-11eb-8b86-12bb97331649.png

TIMx_BDTR

可以看到死区时间DT由**UTG[7:0]**决定,这里还有一个问题是是什么?在TIMx_CR1的寄存器可以得知,由TIMx_CR1寄存器的CKD决定;

如果这里配置成00,那么和内部定时器的频率相同,为8M;

061171fa-51b1-11eb-8b86-12bb97331649.png

CKD

结合代码做一下计算;系统频率为72M,下面是时基单元的配置;

#definePWM_FREQ((u16)16000)//inHz(N.b.:patterntypeiscenteraligned) #definePWM_PRSC((u8)0) #definePWM_PERIOD((u16)(CKTIM/(u32)(2*PWM_FREQ*(PWM_PRSC+1))))TIM_TimeBaseStructInit(&TIM1_TimeBaseStructure); /*TimeBaseconfiguration*/ 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;

PWM的频率是16K,注意这里的PWM是中央对齐模式,因此配置的时钟频率为32K;

下面时刹车和死区时间,BDTR寄存器的配置,因此这里的CK_INT为32M

#defineCKTIM((u32)72000000uL)/*Siliconrunningat72MHzResolution:1Hz*/ #defineDEADTIME_NS((u16)500)//innsec;rangeis[0...3500] #defineDEADTIME(u16)((unsignedlonglong)CKTIM/2 *(unsignedlonglong)DEADTIME_NS/1000000000uL)TIM1_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Enable; 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;

例:若TDTS = 31ns(32MHZ),可能的死区时间为:0到3970ns,若步长时间为31ns;4000us到8us,若步长时间为62ns;8us到16us,若步长时间为250ns;16us到32us,若步长时间为500ns;

如果需要配置死区时间 1000ns,系统频率72,000,000Hz,那么需要配置寄存器的值为;

直接写成宏定义的形式;

#defineDEADTIME(u16)((unsignedlonglong)CKTIM/2 *(unsignedlonglong)DEADTIME_NS/1000000000uL)

示波器验证了一下;具体如下图所示;

0641edee-51b1-11eb-8b86-12bb97331649.jpg

原文标题:炸机后才去注意PWM的死区时间

文章出处:【微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19134

    浏览量

    404031
  • IGBT
    +关注

    关注

    1291

    文章

    4452

    浏览量

    264405

原文标题:炸机后才去注意PWM的死区时间

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FreeRTOS_SMP_Example_S32K358_2xCores示例配置并实现了一SMP项目,两个核心的中断频率比较高时报故障,怎么解决?

    我参考FreeRTOS_SMP_Example_S32K358_2xCores示例配置并实现了一 SMP 项目。RTD6.0.0但是,当我的两个核心的中断频率比较高时,会出现种故障
    发表于 03-30 08:23

    变频器同时带动2同型号电机速度不一致的解决方法

    在工业自动化控制系统中,变频器驱动多台电机的应用场景十分常见。然而,当使用一台变频器同时带动台同型号电机时,经常会出现台电机转速不一致的问题。这种
    的头像 发表于 03-06 17:24 2794次阅读

    曙光存储连续斩获两个行业奖项

    近期,曙光存储连续斩获两个行业奖项,自研技术产品在国产突破、AI行业应用等方面的成果获得广泛关注。
    的头像 发表于 01-15 16:28 2725次阅读

    激光雷达点云为什么会出现吸点现象?

    相信各位在开车时一定遇到过这么一场景,有一很小的障碍物在车前,当障碍物非常靠近车辆时,你在驾驶位置上是完全看不到的,这就是俗称的“盲区”。对于激光雷达来说,也会出现类似的问题,当障碍物离激光雷达足够近时,它也
    的头像 发表于 12-31 16:28 3629次阅读

    FreeRtos 能否同时使用两个 CPU?

    情况下,CM0 更愿意专门用于管理外设。 - 是否有在 CM0 和 CM4 中同时运行代码的简单示例或教程? - FreeRtos 能否同时使用两个 CPU?
    发表于 11-11 08:28

    STGSH80HB65DAG汽车级IGBT技术深度解析与应用指南

    STMicroelectronics STGSH80HB65DAG 650V 80A HB系列IGBT具有两个IGBT和二极管,采用紧凑、坚固的表面贴装封装。 STMicroelectronics
    的头像 发表于 10-25 16:30 3163次阅读
    STGSH80HB65DAG汽车级<b class='flag-5'>IGBT</b>技术深度解析与应用指南

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash?

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash,有一norflash被模拟成U盘,会在中断中操作spi。
    发表于 09-26 06:18

    基本半导体连获两个行业奖项

    近日,基本半导体凭借在碳化硅模块领域的突出表现,连获“国产SiC模块TOP企业奖”和“年度优秀功率器件产品奖”两个行业奖项。
    的头像 发表于 09-05 16:31 1237次阅读

    如何平衡IGBT模块的开关损耗和通损耗

    IGBT模块的开关损耗(动态损耗)与通损耗(静态损耗)的平衡优化是电力电子系统设计的核心挑战。这种损耗存在固有的折衷关系:降低通损耗通常需要提高载流子浓度,但这会延长关断时的载流
    的头像 发表于 08-19 14:41 3084次阅读

    普源MHO5000如何破解IGBT老化测试难题

    一、IGBT的老化测试挑战 1.1 老化现象及其影响 IGBT作为电力电子系统的核心器件,在长期使用中不可避免地会出现老化现象。其性能衰变主要体现在开关速度变慢、通压降增大、阈值电压
    的头像 发表于 07-01 18:01 2063次阅读
    普源MHO5000如何破解<b class='flag-5'>IGBT</b>老化测试难题

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断? 这样设计的原理是什么?
    发表于 06-17 06:30

    看到STM8L152用两个IO用两个或非门检测两个通断,是什么原理?

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断? 这样设计的原理是什么?
    发表于 06-12 06:25

    stm32f407无法配置定时器2为全部dma怎么解决?

    本人使用定时器2配置为4通道的dma捕获时,出现stream6和stream7这两个对应的通道无法同时存在,在都配置的情况下,只要这
    发表于 06-11 06:49

    使用STM32捕获PWM时同时捕获2通道时会出现捕获的频率值不准确,是什么原因导致的?

    在使用STM32F103芯片的2定时器捕获2路PWM波时,当2路信号同时输入时,会出现捕获的频率不准确,但是分开一路一路的输入捕获时,捕获的PWM频率是正确的,这是什么原因导致的
    发表于 05-14 06:24

    使用STM32捕获PWM时同时捕获2通道时会出现捕获的频率值不准确是什么原因导致的?

    在使用STM32F103芯片的2定时器捕获2路PWM波时,当2路信号同时输入时,会出现捕获的频率不准确,但是分开一路一路的输入捕获时,捕获的PWM频率是正确的,这是什么原因导致的
    发表于 04-27 08:39