在实验的一开始,我对(AQ)和(DB)都进行了设置,发现不管怎样设置比较动作都没有办法得到互补的PWM波;后来禁用死区,得到了互补的PWM波。从这里得知,在MATLAB中产生PWM波,(DB)的设置对PWM波的极性是有影响的,但具体是如何影响的,从简单的几个波形并没有办法得到结论。因此,在后面我对每一种参数的设置对产生的代码和波形的影响进行了一一的观察。
一、AQ的设置
ePWM模块主要的参数分为如图的下面几个部分,其中General中主要对应的是28335中的TB模块,ePWMA和ePWMB主要对应的是CC和AQ,其他的部分如其名依次对应。
图1.主要的参数以及General参数
General中参数如上面示,从其字面意思可以直观的理解。
ePWMA和ePWMB模块的参数如下图所示,红色框出的部分主要是比较器的设置,对应28335的CC,包括比较器A、B的单位选择、比较值的来源(通过输入口或内部提供)、比较初始值(通过输入);下半部分是比较动作设置,对应28335的AQ,不论是ePWMA还是ePWMB都包含六个counter等于zero、PRD、CAU、CAD、CBU、CBD。
图2. ePWMA和ePWMB的参数
由于ePWMA和ePWMB都包含CAU、CAD、CBU、CBD四个比较动作,经过分析可知,产生互补的PWM波有以下两种设置方法:
1. 仅使用一个比较值(包括设置了CMPA、禁用CMPB,CPMA、CPMB均设置值、但仅用一个),可以在ePWMA和ePWMB中,都设置CAU、CAD的动作,两个部分的CBU、CBD均不动作(Do nothing)。如上面的图中的设置就是使用这种方法产生互补的PWM波。
2. 使用两个比较值,则在ePWMA中设置动作CAU、CAD,在ePWMB中设置动作CBU、CBD,两者的动作相反。同样也可在ePWMA中设置动作CBU、CBD,在ePWMA中设置动作CBU、CBD,两者动作相反。
二、DB的设置
对应上面的互补的PWM波的产生方法,死区的产生也具有两种方法:
1. CMPA=CMPB,或者仅使用一个比较值,可以使用死区发生器(DB)来设置死区的大小。下面将对死区参数的设置进行具体的介绍。
2. CMPA和CMPB设置不同的比较值,当比较匹配时,通过控制比较动作来产生死区。这种方法不需要使用DB模块。
图3.死区产生方法1
下面几个图表示的是DB的参数设置框图:
图4.DB参数设置
如上图4所示,单独选择Use deadband for ePWMA或Use deadband for ePWMB主要的参数有四个:死区延时的极性(Positive or negative)、RED/FED的信号源(ePWMA or ePWMB)、死区值来源(外部输入或内部提供)以及死区值。Use deadband for ePWMA和Use deadband for ePWMB全部选择的参数有所变化,死区极性为:AH、AL、AHC、ALC,这与28335中是对应的。
这里,死区延时的极性(Positive or negative)、RED/FED的信号源(ePWMA or ePWMB)对产生的PWM波的极性是有影响的,对应于28335的死区的寄存器——IN_MODE、POLSEL、OUT_MODE是有影响,但其规律比较复杂。为了搞清楚这几个参数对产生的代码及波形的影响,下面对各种情况进行了分析,以找到规律。
1. 仅选择Use deadband for ePWMA /ePWMB
产生的代码:
EPwm1Params.DBCTL_OUT_MODE = 2;
EPwm1Params.DBCTL_IN_MODE = 1;
EPwm1Params.DBCTL_POLSEL = 1;
EPwm1Params.DBRED = 10.0;
EPwm1Params.DBFED = 0.0;
可以产生互补波形,B有RED,相当于A的提前关断
Fig.a1
产生的代码:
EPwm1Params.DBCTL_OUT_MODE = 2;
EPwm1Params.DBCTL_IN_MODE = 3;
EPwm1Params.DBCTL_POLSEL = 0;
EPwm1Params.DBRED = 10.0;
EPwm1Params.DBFED = 0.0;
产生同步波形,但是A有RED
Fig.a2
EPwm1Params.DBCTL_OUT_MODE = 2;
EPwm1Params.DBCTL_IN_MODE = 2;
EPwm1Params.DBCTL_POLSEL = 1;//What we need is EPwm1Params.DBCTL_POLSEL = 2(可以产生互补波形,有RED).
EPwm1Params.DBRED = 10.0;
EPwm1Params.DBFED = 0.0;
产生同步波形,A有FED
Fig.a3
EPwm1Params.DBCTL_OUT_MODE = 2;
EPwm1Params.DBCTL_IN_MODE = 2;
EPwm1Params.DBCTL_POLSEL = 0;
EPwm1Params.DBRED = 10.0;
EPwm1Params.DBFED = 0.0;
产生互补波形,A有RED,也就是A延时开通
Fig.a4
分析上面的结果可知:Use deadband for ePWM1A影响寄存器DBCTL_OUT_MODE的值,Poles fo deadband delay影响寄存器DBCTL_POLSEL,Signal source for RED/FED影响寄存器DBCTL_IN_MODE的值。Fig.a1和Fig.a4可以分别产生提前关断和延时开通的死区,并且波形互补,可以得到符合要的PWM波对;而Fig.a2和Fig.a3则产生同步的波形,不可用。
同理,对偶另一种情况,使用Use deadband for ePWM1B也可以得到类似的结论:Fig.b1和Fig.b4可以分别产生提前关断和延时开通的死区,并且波形互补,可以得到符合要的PWM波对;而Fig.b2和Fig.b3则产生同步的波形,不可用。
Fig.b1 Fig.b2
Fig.b3 Fig.b4
我们需要的死区波形是延时开通、提前关断的,所以,考虑把Fig.a1和Fig.b4,或者Fig.a4 和Fig.b1组合,就可以产生我们所需要的波形了。下面按照这种方法来配置参数,进行验证。
2.Use deadband for ePWMA/ePWMB均选择
分别按照Fig.a1和Fig.b4设置参数得到下图Fig.1的配置,按照Fig.a4和Fig.b1设置参数得到下图Fig.2的配置。按照这两种配置均可以得到需要的死区波形。
Fig.1 Fig.2
Fig.1的相应寄存器代码:
EPwm1Params.DBCTL_OUT_MODE = 3;
EPwm1Params.DBCTL_IN_MODE = 0;
EPwm1Params.DBCTL_POLSEL = 2;
EPwm1Params.DBRED = 10.0;
EPwm1Params.DBFED = 10.0;
Fig.2的相应寄存器代码:
EPwm1Params.DBCTL_OUT_MODE = 3;
EPwm1Params.DBCTL_IN_MODE = 3;
EPwm1Params.DBCTL_POLSEL = 2;
EPwm1Params.DBRED = 10.0;
EPwm1Params.DBFED = 10.0;
产生互补波形,A延时开通、提前关断
在设置时,可先选择单独的Use deadband for ePWMA或Use deadband for ePWMB,先产生一个死区(延时开通或提前关断),然后两个全选就可以完成死区的产生。
目前存在的问题:死区ePWMA和ePWMB全选时,不论选择单独的死区怎么设置,Deadband polarity始终为AHC,这是为什么?这个参数的具体含义是什么?
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |