通常我们用的电压源型逆变器,是通过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) 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]位控制,上次已经提到。通过对相应的控制位清零可以使能比较寄存器的映射单元,默认情况下映射寄存器是使能的。
一周热门 更多>