Thread 中讨论的其他器件: controlSUITE
是否有任何限制因素限制 TMS320F2812处理器上 DPWM0、DPWM1、DPWM2 (也称为 GDPWM、也称为 UDPWM)的实现? 如果是、哪些处理器可以实现这些调制方案? 后续 C2000芯片中的 ePWM 外设是否修复了此问题?
由于 PWM 驱动器和/或 PWM 外设、我很难实现这些方案。 似乎我不能有0%的占空比(钳位到负总线)。 当我将比较寄存器 CMPR1..3限制为计时器1周期 T1PR 时、我能够钳制到负总线、但电流波形失真。 如果我将比较寄存器 CMPR1..3限制为计时器1周期(T1PR - 1)、则电流波形是令人满意的、但当输出应钳位到负总线时、会以与开关频率一致的间隔出现脉冲、表示死区时间的宽度。
我发现这 篇论文 声称 TMS320F2812不支持某些 PWM 方法。 见第226/286页。 以下陈述是否准确?
"将比较寄存器与特定相位桥臂的占空比加载涉及 DSP 的一个指令周期。 在 TMS320F2812中、最大时钟周期为150MHz、对应于6.67ns 指令周期。 这种6.67ns 的延迟会导致各种 PWM 方法的实现出现问题。 当计算出的占空比在周期瞬间加载到计数器、并且其先前的值不是100%、但计算出的值是100%时、就会产生问题。 在执行不连续 PWM 方法期间会遇到这种情况、特别是在加载单个更新速率和周期点时、或者在加载双更新速率和周期点时。 由于在周期瞬间加载期间存在一个6.67ns 的延迟199、将正确占空比加载到比较寄存器的机会被错过、并且生成一个错误信号、此信号失真 PWM 波形并干扰输出电压/电流。'
以下测试是在三相电压源逆变器、60Hz 基频、2.5kHz 开关频率和380V (l-l rms)额定电机电压下执行的。 实现了伏/赫兹模式。 PWM 方案是 DPWM2。
当我实现以下 PWM 驱动器时、我得到令人满意的以下电流波形、但负总线钳位周期(60度)内的脉冲会产生一个 PWM 方案、但该方案并未完全实现 DPWM0、DPWM1和/或 DPWM2开关损耗降低的优势。
(注1:由于 PWM1是顶部 IGBT、PWM2是底部 IGBT、对 PWM 外设的限制要求 PWM1为低电平有效、PWM2为高电平有效、以产生适当的死区时间、 这意味着 SVGEN 模块的输出将产生相反的结果(1 = 0%和-1 = 100%)。 因此,我的 PWM 驱动程序中的 One_Q24 -_IQdiv2 (p->MfuncCx + One_Q24)考虑了这种反转。
(注2:MfuncC1采用 Q24格式、范围从-1到1、其中-1为0%、1为100%)
#define Oe_Q24 16777216 //_IQ24 (1)
void F281x_EV1_DutyCycleUpdate (F281x_PWMGEN_ST * p) { int32 Tmp1、Tmp2、Tmp3; //从周期调制输入 EvaRegs.T1PR = p->PeriodMax 设置计时器周期; //计算 PWM 1和2占空比(Q24)的比较1 (Q0) Tmp1 = one_Q24 -_diviQ2 (p->Mfunc1 + Q24);//从-1转换为1到0到1比例 Tmp1 =_IQsat (_IQ24mp1、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR - 1)、0); //计算 PWM 3和4占空比的比较2 (Q0)(Q24>DIQ24_2 )//从-1转换为1到0到1比例 Tmp2 =_IQsat (_IQ24mp2、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR - 1)、0); //计算 PWM 5&6占空比的比较3 (Q0)(Q24_DIC3+Q24>1) //从-1转换为1到0到1的比例 Tmp3 =_IQsat (_IQ24mp3、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR - 1)、0); EvaRegs.CMPR1 =(Int16) Tmp2;EvaRegs.Tmp3 = (Int16 ) TMPR2;IntCMPR3 = TMP16
当我执行以下代码(EvaRegs.T1PR - 1进入 EvaRegs.T1PR)时、到负总线的钳位被实现、但是电流波形失真:
void F281x_EV1_DutyCycleUpdate (F281x_PWMGEN_ST * p) { int32 Tmp1、Tmp2、Tmp3; //从周期调制输入 EvaRegs.T1PR = p->PeriodMax 设置计时器周期; //计算 PWM 1和2占空比(Q24)的比较1 (Q0) Tmp1 = one_Q24 -_diviQ2 (p->Mfunc1 + Q24);//从-1转换为1到0到1比例 Tmp1 =_IQsat (_IQ24mp1、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR)、0); //计算 PWM 3和4占空比的比较2 (Q0)(Q24>DIQ24- 1 + IQ24>2//从-1转换为1到0到1比例 Tmp2 =_IQsat (_IQ24mp2、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR)、0); //计算 PWM 5&6占空比的比较3 (Q0)(Q24_DIC3+Q24=1) //从-1转换为1到0到1的比例 Tmp3 =_IQsat (_IQ24mp3、(Int32) EvaRegs.T1PR)、(Int32)(EvaRegs.T1PR)、0); EvaRegs.CMPR1 =(Int16) Tmp1;EvaRegs.TMP3 = TMP16 ;IntCMPR3 = TMP16
此第二版本的 PWM 驱动程序存在另一个问题。 如果调制方案从 UDPWM (设置为 DPWM2)更改为 SVPWM (也称为连续 PWM)、并且施加的总线电压不足以提供380V (VDC <= 537V)的额定电机电压、则调制因子(SQRT (Vd^2 + VQ^2或 SVGENMF 模块的 svgenMF.Gain) 变为100%、当占空比应为0%时、存在200us 的杂散脉冲。 这在以下示波器捕获中显示。 请注意、200us 是开关周期的1/2 (400us = 2.5kHz)
恢复到第一个 PWM 驱动器不会显示以下现象: