This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280039C-Q1:过流保护 PWM 关断功能无法正常运行

Guru**** 2693225 points

Other Parts Discussed in Thread: PMP23338

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1591951/tms320f280039c-q1-overcurrent-protection-pwm-shutdown-not-working

器件型号: TMS320F280039C-Q1
主题: PMP23338 中讨论的其他器件

嗨、大家好
我正在研究双预期 EV 充电器的过流保护(输入侧)
我正在遵循以下文档
www.ti.com/.../spradd9.pdf

本文档规定不使用传统的 CBC 方案、而是在发生过流(双向充电器的输入侧电感器电流)时使用 T1 事件来停止 PWM。

我将 epwm6 用于高频 PWM。

 

void EPWM_init (){
EPWM_setClockPrescaler (myEPWM0_BASE、EPWM_CLOCK_DIVIDER_1、EPWM_HSCLOCK_DIVIDER_1);
EPWM_setTimeBasePeriod (myEPWM0_BASE、999);
EPWM_setTimeBaseCounter (myEPWM0_BASE、0);
EPWM_setTimeBaseCounterMode (myEPWM0_BASE、EPWM_COUNTER_MODE_UP);
ePWM_disablePhaseShiftLoad (myEPWM0_base);
EPWM_setPhaseShift (myEPWM0_base、0);
EPWM_setCounterCompareValue (myEPWM0_BASE、EPWM_COUNTER_COMPARE_A、320);
EPWM_setCounterCompareShadowLoadMode (myEPWM0_BASE、EPWM_COUNTER_COMPARE_A、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue (myEPWM0_BASE、EPWM_COUNTER_COMPARE_B、0);
EPWM_setCounterCompareShadowLoadMode (myEPWM0_BASE、EPWM_COUNTER_COMPARE_B、EPWM_COMP_LOAD_ON_CNTR_ZERO);
EPWM_setCounterCompareValue (myEPWM0_BASE、EPWM_COUNTER_COMPARE_C、490);
EPWM_setActionQualifierT1TriggerSource (myEPWM0_BASE、EPWM_AQ_TRIGGER_EVENT_TRIG_DCA_2);
EPWM_setActionQualifierT2TriggerSource (myEPWM0_BASE、EPWM_AQ_TRIGGER_EVENT_TRIG_DCA_2);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_T1_COUNT_UP);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
EPWM_setActionQualifierAction (myEPWM0_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_T1_COUNT_UP);
EPWM_setDeadBandDelayPolarity (myEPWM0_BASE、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_LOW);
EPWM_setDeadBandDelayMode (myEPWM0_BASE、EPWM_DB_RED、TRUE);
EPWM_setRisingEdgeDelayCountShadowLoadMode (myEPWM0_BASE、EPWM_RED_LOAD_ON_CNTR_ZERO);
eMp_disableRisingEdgeDelayCountShadowLoadMode (myEPWM0_BASE);
ePWM_setRisingEdgeDelayCount (myEPWM0_BASE、48);
ePWM_setDeadBandDelayMode (myEPWM0_BASE、ePWM_DB_FED、TRUE);
EPWM_setFallingEdgeDelayCountShadowLoadMode (myEPWM0_BASE、EPWM_FED_LOAD_ON_CNTR_ZERO);
EPWM_disableFallingEdgeDelayCountShadowLoadMode (myEPWM0_BASE);
EPWM_setFallingEdgeDelayCount (myEPWM0_BASE、48);
EPWM_selectDigitalCompareTripInput (myEPWM0_BASE、EPWM_DC_TRIP_TRIPIN4、EPWM_DC_TYPE_DCAH);
EPWM_setTripZoneDigitalCompareEventCondition (myEPWM0_BASE、EPWM_TZ_DC_OUTPUT_A1、EPWM_TZ_EVENT_DCXH_HIGH);
EPWM_enableADCTrigger (myEPWM0_BASE、EPWM_SOC_A);
EPWM_setADCTriggerSource (myEPWM0_BASE、EPWM_SOC_A、EPWM_SOC_TBCTR_U_CMPC);
EPWM_setADCTriggerEventPrescale (myEPWM0_BASE、EPWM_SOC_A、1);
}

 


另外,我有比较器 1H ,它将电流作为其正桥臂,将 DAC 值 3700 作为其负桥臂

在我的台式机上,我使用电位计,当值低于 3700,我看到完美的 PWM(免费,死区为 400ns ;我的 SYSCLK 为 120MHz)

高于 3700 时、epwm6A 关闭、但 epwm6B 仍继续生成 PWM

第二、我也不理解文件中的这一段



因此、图 1-3 展示了 PWM 配置的理想 CBC 保护方案。 的 PWM
同步开关(在本例中为用于正周期的高侧 FET Q1)应在有源开关之后导通
关断、并具有自定义死区时间。 但是、ePWM 的传统跳闸区域 (TZ) 子模块不能
使用来实现上述逻辑。 如图 1-4 所示、当发生逐周期跳闸事件时、相应操作即为具体操作
在 ePWMxA 和 ePWMxB 输出端立即执行 TZ 子模块中指定的操作、不带任何信号
延迟、因为 TZ 子模块是 ePWM 输出之前的最后一部分。 此外、对于图腾柱 PFC
用于有源 FET 和同步 FET 的 EPWM 输出根据 VAC 极性而有所不同、因此内部设置的操作也不同
TZ 子模块无法自动在正周期和负周期中运行。


我实现了 ZCD。
在 ZCD 检测功能中、我可以更改负半周期的 DAC 值。 但现在我只关注+ve 半周期。

如果我理解有什么问题、请帮助我

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    请注意、此星期四和星期五是美国假期、请期待下周再次提供帮助。

    此致、

    马特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Matt *** 是否对查询进行了任何更新?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Dev

    您的跳闸区设置是什么? 如果发生 tripzone 事件、需要将 EPWMA 和 B 都设置为低电平。 请参阅 pmp23338 图腾柱 PFC 设计。 它实现了 CBC 保护。

    谢谢你  

    Amir Hussain

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨 Amir ,我的问题是与动作限定器的 T1 事件相关的(根据 sprad9 pdf 应用程序不)。 而在  pmp23338 中 ,过流直接作为 OST 跳闸处理

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、这位专家目前不在办公室。 请允许他再过 1-2 天返回。

    此致、

    Allison

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dev:

    为死区模块提供什么输入。 参考 TRM 的图 20-35(也如下所示)、死区模块的两个输入可以是 EPWMA 或 EPWMB。 在您的情况下、对于 PWM6A 和 6B、T1 事件后 AQ 的输出都可能较低、但由于死区设置不正确、OUTB 可能仍为高电平。 一种调试方法是禁用死区模块并检查 6A 和 6B 输出。

    “因此、图 1-3 展示了 PWM 配置的理想 CBC 保护方案。 的 PWM
    同步开关(在本例中为用于正周期的高侧 FET Q1)应在有源开关之后导通
    关断、并具有自定义死区时间。 但是、ePWM 的传统跳闸区域 (TZ) 子模块不能
    使用来实现上述逻辑。 如图 1-4 所示、当发生逐周期跳闸事件时、相应操作即为具体操作
    在 ePWMxA 和 ePWMxB 输出端立即执行 TZ 子模块中指定的操作、不带任何信号
    延迟、因为 TZ 子模块是 ePWM 输出之前的最后一部分。 此外、对于图腾柱 PFC
    用于有源 FET 和同步 FET 的 EPWM 输出根据 VAC 极性而有所不同、因此内部设置的操作也不同
    TZ 子模块无法在正周期和负周期中自动运行。“

    ABobe 段落表明 TZ 是 ePWM 模块中的最后一个子模块。 TZ 之后的任何输出都无法由 ePWM 内的另一子模块更改。 它还表明、在图腾柱 PFC 的这一特定情况下使用 TZ 模块并不合适、因为输出需要根据交流周期的极性进行修改。 此应用还需要在跳闸事件后修改 PWM 输出。 因此、应用手册建议在 AQ 中的 T1 事件中发挥跳闸事件的影响。 现在、由于 DB 子模块位于 AQ 模块之后、因此可以使用 DB 子模块对 PWM 输出进行修改。

    谢谢你  

    Amir Hussain