逻辑延时环节(DLD)
-
-
- 前言
- 问题
- 课件上的DLD
- 尝试仿真
- 新问题的出现
- 结论
-
前言
最近一个月围绕着三大课设转圈,生活极其无聊烦闷。但在完成课设中偶尔有一些想法想记录一下,不一定对,仅供参考。有空我都会记录一下做课设的一些简单的想法。下面将要介绍的是运动控制系统课设的一个小东西。
问题
相信大家在学运动控制系统中直流脉宽调速系统中,会碰到逻辑延时环节(下称DLD)。这个东西应该会更早的在电力电子的教材里出现。DLD是用于对互补的PWM方波进行微小的延时,防止H桥桥臂直通现象的出现。
H桥所造成直通示意图如下:
当红色箭头给的触发脉冲形式如下时,将会造成两个IGBT同时开通而造成直通现象:
如果施加在同一桥臂的脉冲如上面所示,会发现存在某一时刻两个方波都处于5V高电平,这个时候两个IGBT就会开通。
课件上的DLD
为了解决这个问题,很自然的想法就是如果能在每个方波的上升沿都稍微延迟一点点,就是上升沿有一个很小的死区时间,在这个时间上升沿不跳变,而是等到另一个方波完全跳变为低电平时,才跳变为高电平,这样就可以避免这种现象。
不妨把两个方波命名为1和2,此时方波1为高,方波2为低。过程如下:
- 方波1跳变为低。
- 方波2等待方波1跳变为低,再跳变为高。
- 方波2跳变为低。
- 方波1等待方波2跳变为低,再跳变为高。
- 循环。。。
可见,向下跳变的时刻是精确的,而被延时了的是方波的上升沿。
我认为课件上的DLD就是使用这个想法设计的,电路如下:
从上图可见有四路信号,分别经过一个与非门。与非门的两个输入端同时接相同的信号时,相当于对信号取非。原始输入信号为u1u_1u1,下面是各路信号的过程:
- u1u_1u1 取非后为 u1′u'_1u1′,直通到下一个与非门。
- u1u_1u1 取非后为 u1′u'_1u1′,若u1′u_1'u1′ 为上升沿处,则需要对经过电阻对电容充电,需要大概2倍时间常数跳变为高电平;若u1′u'_1u1′为下降沿,电容经二极管直接放电,会得到很陡的下降沿。
- u1u_1u1经过两次非门,出来后还是它本身,然后重复信号1的过程。
- 重复信号2的过程。
尝试仿真
结合我实际题目的数据试一下用Simulink仿真一波,已知输入的方波为8kHz,仿真电路图如下:
因为输入方波的周期为125μs125mu s125μs,不妨令上升沿的跳变时间为3倍时间常数,令其为6μs6mu s6μs,那么有 RC=2μsRC = 2mu sRC=2μs, 不妨令C=2μF,R=2ΩC = 2mu F, R = 2 OmegaC=2μF,R=2Ω 。仿真的时候记得设置一下下面这个地方:
solver类型可选变步长或者定步长,如果针对变步长,最好设置Max step size为比较小的值,而且右边的两个tolerance都设置小一点。若是定步长,则取一个较小的步长,起码得比方波的一个周期小上10~100倍。
仿真结果:
先不说这个波形是否达到互补的要求,首先它的边缘陡度就有问题,按理说阻容的时间常数非常小,而且经二极管放电的回路所需放电时间就更小了,因此无论是上升沿还是下降沿都应该有很好的陡度。我们再看一下电容正极端的电压波形:
很明显,充电时间和放电时间都远远比我们预想的大,必然在充电和放电回路上都存在一个我们忽视了的大电阻。很自然的,我们想到逻辑门的输出阻抗,检查与非门参数发现,其输出电阻为25Ω25Omega25Ω。
如何解决这一个问题呢?有两个方法,但实际上只有一个。
- 直接改simulink器件的output resistance,设为0。
- 电压跟随器降低输出阻抗。
首先,第一个方法看似简单,但实际操作上不可行,逻辑门电路必然存在一定的输出阻抗,除非有技术能把它做得很低。但实际上更常见的方法是使用增加电路的方法降低输出阻抗,比如使用电压跟随器,这个电路作为缓冲电路有高输入阻抗,低输出阻抗的特性,可以把输出阻抗做的很低,我们尝试假如电压跟随器改进。
这时可以改动运放的输出电阻了,电压跟随器的输出电阻可以做的很低:
这个时候我们再查看电容正端的波形:
从这个波形看,我们可以知道我们离成功不远了。
新问题的出现
然而我们以为成功的时候,信心满满地点击输出PWM的示波器,却发现如下结果:
立即发现,这个波形延时的地方不对。我在上面提到过,要延时的是上升沿部分,而精确的是下降沿。但我们发现,这里刚好相反,下降沿反而有一段延时时间,导致正好两个方波都有交叠的地方。
其实大家再次分析我在上面写的信号变化过程,就会发现问题所在。当信号上升沿被延时后,却和未延时的信号作与非操作,出来的信号上升沿被延时的部分反而变成了下降沿的拖尾,这就是出现上面问题的原因。
其实我们只需要做一个很小的改动,不是说与非门引起的问题吗?我们改成与门不就好了?我们立即尝试一下:
果不其然,我们就成功了。不过对死区时间的精确设置,还有待讨论。。。