通常我们用的电压源型逆变器,是通过IGBT、MOSFET等开关管的切换,用单极性或者双极性的脉冲波形来模拟正弦波,如图所示:
这里的基本原则是等面积,即冲量不变的原理。在逆变器直流母线电压固定的情况下,脉冲波的幅值已经确定,使用改变占空比的方法,即对应改变输出基波的幅值。最常用的载波PWM的基本原理,一般都是三角形载波和调制波波形,如正弦波、马鞍波等进行比较,在相交点产生开关状态的切换。三角载波的频率一般在kHz基波,相当于时间域里的一个函数,一般用硬件电路来实现才能保证较好的精度和时域特性。
在TI C2000及类似的电机控制用的DSP出现之前,通常的DSP并不含有专门的PWM产生电路,此时载波的产生以及和调制波的比较工作一般由模拟电路、专门的PWM芯片或者CPLD/FPGA/ASIC/ASSP来实现;由模拟电路搭建的速度很高,但是存在温度漂移等问题;专用的PWM芯片一般只有2路左右的输出,若要控制一个三相逆变器需要多片配合,CPLD/FPGA相对灵活,但是在对成本敏感的系统中仍是不小的开支,ASIC/ASSP则在大公司的产品中才可能采用。TI的C2000系列带有至少12路的PWM输出,并且PWM是专用的外设,其输出PWM等功能并不需要消耗CPU资源,因此极大地方便了系统的设计。
从2407、2812到28335,PWM外设也从事件管理器EV演变到增强的PWM模块,即ePWM。EV中的六路PWM采用同一个载波,且实际只有三个独立,三个互补的输出;而在ePWM中,每个PWM管脚都可以独立地进行配置,当然也可以在同步状态下运行,增强了设计的灵活性。下面是ePWM的一个简要框图描述:
1. 时钟预定标:这个模块在28335大部分的外设中都有,其输入是SYSCLKOUT,预定标的作用是对SYSCLKOUT时钟信号进行分频,从而控制外设的时钟频率。其输出是TBCLK时钟信号,即每个ePWM模块的时间基准(time base,即TB),它被ePWM外设的所有子模块使用,控制计数器的更新速率。
2. 16位的时间基准计数器(TBCTR):16位的时基计数器,其输入有时基信号TBCLK,在ePWM之间用来同步的EPWMxSYNCI 信号,周期寄存器的值(即周期值),其输出有两个,一个是EPWMxSYNCO用来输出同步信号,另一个则是计数值与周期值比较的结果,并送入逻辑处理模块。
3. 比较逻辑处理:处理输入的比较结果,并生成相应的逻辑状态。
4. 动作限定模块(action qualifier):判断逻辑的转换是否满足要求,并转换为对应的PWM开关状态,通常为EPWMxA和EPWMxB。
5. 死区模块:对PWM的开关变化加入死区时间,以防止变流器上下桥臂的开关管过流击穿损耗。死区通常有单边死区和双边死区,单边死区即只对开通开关管的脉冲施加死区,双边死区则对所有的脉冲变化加入死区时间,即延时开通,提前关断,这些都可以在死区模块的寄存器中进行配置。
6. PWM斩波环节(chopper):这部分是可选的,通常用来产生高频PWM载波信号,在一般的逆变器中不需要用到,在高频的开关数字电源中作用很大。
7. 事件触发模块(trip zone):主要是用来处理外部返回的故障信号的,例如在变频器过流时,保护电路返回的故障信号反馈到TZ模块,此时强制PWM管脚为高阻状态,则停止输出,并且可以运行设计的保护程序等。
在ePWM模块中,定时/周期操作经常被广泛使用。例如,设定一个定时周期,然后每次计数到周期值时触发一些特定的事件;或者由某个事件触发计数操作,用来捕获某个事件的时间、脉冲个数等。ePWM的周期由时间基准周期寄存器和时间基准计数器的运行方式共同决定。时间基准计数器具有三种运行方式:
1. 连续增计数: 对应下图中的第一种模式,是一种非对称的波形。在该模式下,时间基准计数器从零开始增加,直到等于TBPRD的值,然后计数器复位到0,重复上述过程。
2. 连续减计数:对应下图中的第二种模式,同样也是一种非对称的波形。在该模式下,钟基准计数器从TBPRD始减小,直到等于0,然后计数器复位到TBPRD,重复上述过程。
3. 连续增减计数:对应下图中的第三种模式,是一种对称的波形。在连续增减计数模式下,时钟基准计数器从零开始增加,直到等于TBPRD的值,然后开始减计数,直到等于0,然后重复上述过程。这种波形的形状是等腰三角形,在使用载波方法实现PWM波形输出时最常用到。
图中,三角形的顶点的纵坐标值一般为周期值,横坐标值则代表一个三角波持续多少个周期时间。时间基准寄存器的值可被立即刷新,或者在本次计数结束之后再刷新,由TBPRD寄存器的值决定:.
1. 如果TBCTL[PRDLD]=0,使能映射寄存器,任何读写操作将针对映射寄存器,在时间基准计数器归零时,将映射寄存器中内容装载到当前寄存器
2. 如果TBCTL[PRDLD]=1,禁止映射寄存器,任何读写操作将直接作用于当前寄存器。
28335上的ePWM引入了很多增强的特性,从而使得我们可以更加灵活的进行组合配置,产生更复杂的PWM控制逻辑。例如,引入了基于事件基准的相位寄存器TBPHS。在对各个PWM进行单独控制的时候,TBPHS的值并无作用,但是,如果我们想把各个ePWM的三角形载波之间建立角度上的联系,则我们可以使用TBPHS寄存器,例如下面的例子:
多个ePWM模块之间可以存在一个精确的相位差,在一些特殊的电力电子拓扑结构中特别有用。例如在大功率的应用中,对于移相变压器、多绕组变压器等,其输入有多个整流单元,相位互差特定的角度,此时我们就可以使用TBPHS寄存器来调整它们之间载波的相位差;而且因为是相对于同一个时间基准来计数,其精度也较高。在这种使用情况下,一般将一相ePWM做为主模块,其时钟信号作为同步源,其余几相ePWM做为从模块,其时钟信号使用同步源与TBPHS的和或者差;当然,主同步信号也可以使用外部的时钟信号,这是ePWM的灵活之处所在。
TBPHS的计算方法为:
以周期值TBPRD = 600为例,则在TBPHS = 200时,相位差为:
200/600 X 360° = 120°
每当计数值=周期值时,主模块产生同步信号,则TBPHS = 200就被加载到从模块的计数寄存器TBCTR中,从而使得从模块的计数总是超前主模块120°。使用这种方法,即使是变频的情况,只要知道具体的频率,仍然可以实现固定角度的相位差(当然最多会有一个TBPRD时间的延时)。
前两个寄存器包含很多的控制位,所以可以对其中的位进行独立的读/写操作,而后三个寄存器中的内容只代表一个数值,所以不存在单独的位读/写操作。想用好ePWM的强大功能,首先要正确配置各个控制寄存器的功能。下面首先描述TBCTL各个位的含义。
15-14:FREE_SOFT描述了仿真器控制DSP芯片的情况下,仿真暂停时ePWM的运行方式(例如在CCS里面点击了一下halt按钮)。
00:在下次时间基准计数器增或减后停止
01:当计数器完成一个周期后停止:
对于増计数,当计数值TBCTR=周期值TBPRD时停止
对于减计数,当TBCTR=0x0000时停止
对于增减计数,当TBCTR=0x0000时停止
10或者11:自由运行,即不受仿真暂停状态的影响,即使是在CCS里面按下了暂停,ePWM的相关功能仍然在运行。
13:PHSDIR 相位方向控制位,用来决定同步后增减计数器的计数方向,在増计数或减计数模式下此位被忽略
0:同步事件发生后,减计数
1:同步事件发生器,増计数
12~10:CLKDIV 基准时钟分频位,TBCLK=SYSCLKOUT/(CLKDIV×HSPCLKDIV)
000~111(k):分频系数为 2的k次方
9~7 HSPCLKDIV 高速基准时钟分频位,TBCLK=SYSCLKOUT/(CLKDIV×HSPCLKDIV)
000:分频系数为1
001~111(k):分频系数为2×k
比较功能子模块主要通过两个寄存器产生两路独立的比较事件:
(1) CTR=CMPA:时间基准计数器的值等于比较寄存器A的值(TBCTR=CMPA)
(2) CTR=CMPB:时间基准计数器的值等于比较寄存器B的值(TBCTR=CMPB)
对于增计数和减计数模式,比较事件在一个计数周期内出现一次。对于增减计数模式,如果比较值在0x0000~TBPRD之间,则比较事件在一个周期内出现两次,如果比较值为0x0000或TBPRD,则比较事件在一个周期内出现一次。这些产生的事件都被送到动作限定子模块AQ中,用来产生需要的动作,例如PWM信号的翻转等。
每路ePWM的比较功能子模块在控制上相对而言比较容易,包含了两个存储比较值的寄存器即EPwmxRegs.CMPA和EPwmxRegs.CMPB,CMPx寄存器中的值始终与时间基准计数器TBCTR中的值做比较,当两者相等时,比较功能子模块将产生一次“TBCTR=CMPB”事件,并输送到功能限定子模块AQ中,从而产生相应的动作。另外有一个包含位控制的控制寄存器EPwmxRegs.CMPCTL.all,其各位的定义为
15~10: 目前用作保留位
9: SHDWBFULL,即CMPB映射寄存器满状态标志位
0:CMPB映射寄存器未满
1:CMPB映射寄存器满,此时CPU的写操作将会覆盖原来的值
8: SHDWAFULL CMPA映射寄存器满状态标志位
0:CMPA映射寄存器未满
1:CMPA映射寄存器满,此时CPU的写操作将会覆盖原来的值
7: 目前用作保留位
6: SHDWBMODE CMPB寄存器工作模式选择
0:使用映射模式,读写操作将直接作用于CMPB映射寄存器
1:使用立即模式,读写操作将直接作用于CMPB当前寄存器
5: 目前用作保留位
4: SHDWAMODE CMPA寄存器工作模式选择
0:使用映射模式,读写操作将直接作用于CMPA映射寄存器
1:使用立即模式,读写操作将直接作用于CMPA当前寄存器
3~2: LOADBMODE 决定CMPB映射寄存器何时向当前寄存器装载数据
00:在TBCTR=0时装载
01:在TBCTR=TBPRD时装载
10:既在TBCTR=0时装载,也在TBCTR=TBPRD时装载
11:禁止装载
1~0: LOADAMODE,决定CMPA映射寄存器何时向当前寄存器装载数据CMPA及CMPB寄存器都有相应的映射单元,分别通过CMPCTL[SHDWAMODE]位及CMPCTL[SHDWBMODE]位控制,上次已经提到。通过对相应的控制位清零可以使能比较寄存器的映射单元,默认情况下映射寄存器是使能的。
为了简便起见,采用下图所示的图形来表示AQ模块中EPWMxA/xB的各种动作。
ePWM动作限定子模块AQ有4个寄存器,分别是两个控制寄存器AQCTLAB、软件强制寄存器AQSFRC、连续软件强制寄存器AQCSFRC。AQ控制寄存器的A、B的位的含义一样,区别只是在于分别按照EPWMxA、EPWMxB的关系对应,它们的含义为:
ePWM动作限定子模块AQ除了两个控制寄存器之外,还有软件强制寄存器AQSFRC、连续软件强制寄存器AQCSFRC。名字里只有一个“连续”的差别,那它们都是实际功能有什么区别呢?先看寄存器内容:
软件强制寄存器AQSFR各位的含义是
一周热门 更多>