3pwm vs 6pwm
三相桥需要6个开关管。控制6个开关管需要控制器输出六路pwm信号。
这将占用单片机6个 IO 口。考虑到 pwm 信号控制的开关管中,上下管是交替导通的。也就是所谓的互补。 因此在一些场景下,也可以使用 3pwm 模式控制6个开关管。 3pwm的信号控制3个上管,对应的下管控制信号由一个反相电路生成。
咋一看,似乎节约了3个IO引脚。诞生 3pwm模式有一个重要功能无法实现,就是让6个开关管全关。
因此为了表示这个全关状态,实际上需要额外增加一路 EN 信号。因此 3pwm 模式需要使用4个引脚。
听上去不错,在实现相同功能的情况下,节约了2个引脚。
但是,我想说的是,如果有条件,千万不要使用 3pwm 模式。
死区时间控制
理想是丰满的,现实是骨感的。现实中的开关管,并不总是能立即导通/关闭。
导通和关闭都需要一定的时间发生。如果上管关信号给出的时候,立即给出下管开信号,或者下管关信号给出的时候立即给出上管开信号,也就如使用反相器电路做的那样,则会导致上下管会在某个时间里处于同时打开的状态。
这会导致严重的短路。
所以,互补的pwm信号比如插入死区时间。所谓死区时间,就是在上下管切换开启的时候,中间插入两个管子都关闭的时间。以保证实际的管子不会出现同时打开的情况。
在 3pwm 模式,死区时间需要由硬件设计达成。一般是通过在反相器电路里插入延时实现。
在现实世界中,一般是使用集成了死区时间控制的栅极驱动器芯片达成目的。
但是,栅极驱动器的死区控制是死的。一旦选定,就无法更改了。
因此,为了电路的灵活调整需要,最好是在单片机里控制 pwm 信号的死区时间。
这就宣判了 3pwm 模式的死刑。
死区时间设置多大
在 MOS 管的手册里,会给出 4 个 delay time。分布是开通延时,上升延时。关闭延时,下降延时。
并且这4个时间还会给出 最小值,典型值,和最大值。
单片机pwm输出配置的死区时间 = 最大关闭延迟+最大下降延时 - 最小开通延迟 - 栅极驱动器的最小死区时间。
如果为负,就无需设置死区时间了。
之所以突然要考虑死区这个问题,是因为最近我开始将变频器给高压化。而高压的 MOS管,其导通延时大大增加。目前选定的一款 MOS, 耐压650V,导通内阻 < 300mΩ,价格不到1元一片。 如此低廉的价格,伴随的是高达450nS的关闭延迟,高达 2000pF 的寄生电容。
经过计算,发现需要800nS 的死区时间。而栅极驱动器的 死区时间是 200nS。。可见如果不在软件上插入死区时间,必然会炸管。
谢天谢地,我在把 mos 管焊到板子上的前一天突然刷到一个up他做变频器炸管的视频。由此我联想到自己那块jlc刚刚送来还未来得及焊接的板子会不会也炸管。 要是 220v 下炸管,威力可比12v 下的高不知道多少倍了。
经过仔细的研究后果然发现,死区时间不够。
而之前做 12v 的变频器的时候,压根没在软件里配置死区时间,也没问题。是因为用到的低压MOS管,管子的关闭时间都在 100nS上下,经过栅极驱动那 200nS 的死区后,软件里根本无需配置死区,而且我还嫌栅极驱动的死区太大了呢。
果不其然,今天把 MOS焊接好,软件修改好。终于一次验证通过。把家里220v的电机驱动起来了。
从此我也可以面对高电压的电路设计啦!
:)
Comments