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.

[参考译文] LAUNCHXL-F2800137:峰值电流模式控制问题

Guru**** 2392095 points
Other Parts Discussed in Thread: POWERSUITE, TIDM-DC-DC-BUCK, TIDM-02000, SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1335826/launchxl-f2800137-peak-current-mode-control-questions

器件型号:LAUNCHXL-F2800137
主题中讨论的其他器件:TIDM-DC-DC-BUCKTIDM-02000、powerSUITE、 SFRA

您好!

我按照下列文档实施了具有斜率补偿的峰值电流模式控制:

  • 数字峰值电流模式控制的分步设计指南:单芯片解决方案(Biricha Digital Power LTD)
  • SPRABE7A:具有斜率补偿的数字峰值电流模式控制、使用 TMS320F2803x。

但我有一些疑问。

我有一个 ePWM、其中 Fswitching = 100KHz、每100KHz 发生一次 ADC 中断、用于读取模拟输入并执行 maxRampValue 和递减值的计算。 具体而言:

1) 1)我计算误差为: 误差= VREF - analogValueReadByAdc 。 其中、VREF 的计算方式如 Biricha 文档中的公式19所述:   其中 ADCBits = 12、VDAC = 3、3V。

下图显示了我们的反馈信号、其中 Rb = 884k21、R1 = 1k05;差分模式下 IC 的输入到输出增益是 x8。 我们如何在 VREF 计算中插入该值?

2) 2)该 错误 是2p2z 滤波器的输入、它会提供一个称为 OutputFilter。

3)我乘以 输出滤波器 实现 K 根据 SPRABE7A (PAG 3公式(1))中   的报告计算,其中

      - SamplingGain = 1.71

      - ADCmaxV=3.3V

      - ADCBits = 12

      - DACbits=12

      - DACmaxV=3,3V

  我呼叫 IREF = K * OutputFilter

4) 4)我计算 SPRABE7A (PAG 7、公式(20)   )中报告的 VPP、其中 D =是 eCAP 读取的 ePWM 的占空比、Ri = 200m Ω、Ts = 10us、Vin = Iref、L0 = 200uH。

  Ri = 200m Ω 是等效于 我们正在使用的电流传感器 CT425-HSN820MR (200mV/A)的转换因子。  

5) 5)我使用下面报告的公式计算斜坡配置的 maxRampValue 和递减值:

  •     是 SPRABE71中使用的公式、其中1023是 DAC 位、3.3是 DACmax V。该公式与 Biricha 文档相同 、不含因数64:  实际上、 在我的计算中、我使用以下公式设置斜坡值: 斜坡= VPP *(4095/3.3)、因为我的 DAC 为12位并且 DAC 范围是3.3V。
  •   是 Biricha 文档和我的应用中使用的公式 FS = 100KHz、Fclk = 100MHz。

上述报告的步骤是否正确? 公式是否正确? 我是否需要为峰值电流模式控制执行其他计算?  

我附上了我的控制示意图。

是否可以通过某种方法来监控斜坡波形? 如果我不增加伏特值、我该怎么做?

提前感谢您。

此致、

德沃拉

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

    尊敬的 Debora:

    感谢您与我们联系。 我不熟悉您发送的由 Biricha 发布的特定文档。 Biricha 使用我们的器件支持我们的 DP 培训主题、但对于与文档相关的特定问题、我认为最好联系他们以获取这些信息。

    从 C2000的角度来看、您是否已经调查和研究了我们的 DCL 库? 我们有一个2p2z 补偿器(用 ASM 和 C 语言编写、因此非常优化)、您应该能够利用它来简化控制环路的实现。 我在之前的文章中提到过这一点、但我们的 TIDM-DC-DC-BUCK 参考设计具有适用于 PCMC 的闭环实现、因此您应该能够在您的情况下利用类似的实现、因为控制环路图非常匹配。  

    从 DCL 的角度来看、您应该用 Vout 基准减去感测到的 Vout、以获得误差常量。 该误差常量被馈送到调整后的补偿器中以获取控制措施、控制措施推导为要写入 CMPSS 寄存器的 DAC 值。 遗憾的是、查看 CMPSS 的唯一方法是执行一些操作、例如将 CTRIPH/CTRIPL 输出到输出 XBar、这将在比较器跳闸时通知您、 但 DAC 斜坡位于器件内部、无法将其路由到外部 DAC (F280013x 系列无论如何都没有缓冲 DAC 模块)。

    此致、

    彼得

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

    尊敬的 Peter:

    谢谢你的答复。  SPRABE7A 是德州仪器(TI)文档。 有没有人可以帮助我设置峰值电流模式?

    我将尝试重新打开您在旧对话 TIDM-DC-DC-BUCK 中向我建议的旧项目。  

    谢谢你。

    此致、

    德沃拉

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

    尊敬的 Debora:

    是的、我之前提到要联系 Biricha 以获得对文档"数字峰值电流模式控制的分步设计指南:单芯片解决方案"中详述的任何支持。 对于  SPRABE7A、作者不再和我们在一起、这是一份相当旧的文档。 仍可利用设计指南、但示例代码基于 F2803x 器件系列、这是我们的旧版 C2000 MCU。 最好使用与我们最新一代 C2000 MCU 相关的内容。 我可以帮助支持峰值电流控制的实施、请在您能够参考 TIDM-DC-DC-BUCK 时告诉我、以及是否对此有任何问题

    此致、

    彼得

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

    尊敬的 Peter:

    感谢您的答复。

    我有关于峰值电流模式控制的一些问题:

    1) 1)我需要使用什么公式来设置 CMPSS_setMaxRampValue 函数中的最大斜坡值?

    2) 2)我需要使用什么公式来设置 CMPSS_setRampDecValue 函数中的斜率值?

    在 TRM 和数据表中、不会报告这些信息。 如何定义这些值?  

    谢谢你。

    此致、

    德沃拉

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

    您好,Debora

    1)我需要使用什么公式来设置 CMPSS_setMaxRampValue 函数中的最大斜坡值?

    最大斜坡值可被视为阈值、超过该阈值后、比较器将输出高电平信号。 通常、计算方法是将以 PU 项表示的控制量(从0到1.0)乘以 RAMPMAX 寄存器的最大寄存器值、即16位=  65535、^、如果我们补偿器的输出计算出0.5的控制量、这意味着我们以0.5 μ m 馈入最大斜坡  65535。馈入 CMPSS 后、CMPSS 阈值将在1.65V 时触发(如果 VREFHI 设置为3.3V)。 可以根据检测电路的最大钳位来调整 PU 值。  

    2)我需要使用什么公式来设置 CMPSS_setRampDecValue 函数中的斜率值?

      如果实现 PCMC、通常不需要使用 CMPSS_setRampDecValue。 在 PCMC 中、您可以简单地在控制环路的每个周期更新 MaxRamp 值、而无需更改 RampDecValue。 我只在需要在滞环控制应用中实现软启动时使用过 RampDecValue。 如果需要调整 RampDecValue、该值应该在每个控制环路和周期中逐渐递增/递减、并且不一定需要一个公式进行计算。

    此致、

    彼得

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

    尊敬的 Peter:

    谢谢你的答复。  

    1.以 PU 计算的工作量是多少? 您是否有闭环 PCMC 的实际示例? 这样、我就能更好地理解需要执行的步骤是什么?  

    2.如果我在每个周期中使用  CMPSS_setMaxRampValue 函数来更新最大斜坡值,首先我就失去了最大阈值设置。 我怎样才能做到这一点? 或者我缺少什么吗?

    谢谢!

    此致

    德沃拉

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

    尊敬的 Debora:

    1. 用 PU 表示的工作量是多少? 您是否有闭环 PCMC 的实际示例? 这样、我就能更好地理解需要执行的步骤是什么?  [/报价]

    PU 中的量值对应于0.0至1.0。 0.0应对应于生成0V ILFB 的 DAC 最大斜坡值、1.0应对应于生成 ILFB 最大范围的 DAC 最大斜坡值。 可利用从 TIDM-DC-DC-BUCK 获取的以下代码片段进行代码实现。

        //
        // Record the most recent ADC conversion of Vout
        //
        BUCK_vOutSensed_pu = BUCK_HAL_readVout_pu();
        
        //
        // Determine the desired Vout setting and its associated error
        //
        BUCK_vOutSet_pu =
            BUCK_SFRA_INJECT(BUCK_vOutSlewed_pu);
    
        BUCK_ek_pu = BUCK_vOutSet_pu -
                                 BUCK_vOutSensed_pu;
                                 
        //
        // Calculate the required control effort (duty cycle)
        //
        BUCK_uk_pu =
                BUCK_DCL_RUN_IMMEDIATE(&BUCK_ctrl,
                                       BUCK_ek_pu); 
                                       
       //
        // Update CMPSS DAC MAXREF with the calculated level
        //
        BUCK_HAL_updateSyncBuckDac(BUCK_uk_pu);

    2. 如果我在每个周期使用  CMPSS_setMaxRampValue 函数更新最大斜坡值、那么我首先会松开最大阈值设置。 我怎样才能做到这一点? 或者我缺少什么吗?

    最大阈值设置是#define、我们要将计算的最大斜坡值与它进行比较。 它是器件上 MaxRampValue 寄存器的一个独立变量。 因此、当您更新该值时、仍然可以与预定义的常量值进行比较。

    此致、

    彼得

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

    尊敬的 Peter:

    感谢您的回复、很抱歉我的回复延迟了。 对我来说、您告诉我的示例不清楚。 我看到了整个源代码、但我有一些问题:

    您能否告诉我实现峰值电流模式的步骤是什么? 请在详细模式下向我介绍它们、并同时说明必须设置的公式和寄存器。 我是德州仪器的新用户、从未实施峰值电流模式。

    在您之前的消息中、您告诉我、当我更新 maxRampValue 时、我不会更改斜坡的最大值、因为它是一个定义。 您能告诉我定义和工作原理是什么吗?

    这个例子,对我来说是不清楚的,因为没有什么解释! 我找到了一个文档"Digital Peak Current Mode Control with Slope Compensation Using the TMS320F2803x.pdf"、其中解释了示例、但所述变量与示例不同! 因此、我很难理解闭环中的 PCMC 是如何工作的。

    提前感谢您、此致。

    德沃拉

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

    尊敬的 Debora:

    让我看看其他一些同事、看看我们是否有任何其他 PCMC 文档可以帮助更好地解释在 C2000器件上实施的步骤。

    您能告诉我定义和工作原理是什么吗?

    定义位于 user_settings.h 和 settings.h 文件中。 这些控制我们的参考设计代码中使用的整体配置。 这些是预处理器指令、因此需要在编译时更改和配置这些指令。

    此致、

    彼得

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

    你好,谢谢你的答复。 我将等待您的回答。

    提前感谢您。

    此致、

    德沃拉

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

    尊敬的 Debora:

    在与同事讨论这个问题之后、我们没有针对我们的第3代 C2000器件的任何详细理论 PCMC 应用报告。 我们的设计指南中提供了一些简短的理论、例如 TIDM-DC-DC-BUCK 或 TIDM-02000都包含 PCMC 信息。 否则、有必要查看提供的参考设计代码以获取指导。 您是否有难以理解的特定方面的准则? 还请帮助查看我们的 powerSUITE GUI、该 GUI 可在给定系统参数的情况下帮助提供一些计算。

    此致、

    彼得

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

    好的、如果您没有关于峰值电流模式的任何文档、我们可以尝试同时实施 PCMC。 我需要在闭环中实施 PCMC。

    我正在遵循示例 TIDM-DC-DC-BUCK、PCMC 的第一步是以 PU 的形式从 ADC 读取值。

    因此:

    BUCK_vOutSensed_pu = BUCK_HAL_readVout_pu ();其中

    float32_t BUCK_vOutSensed_pu = BUCK_VOUT_ADC_FACTOR * ADC_ReadResult (...) 其中 BUCK_VOUT_ADC_FACTOR = 1/4096。

    然后、在这个示例中、我可以看到:

    #elif(BUCK_CTL_MODE == BUCK_CTL_MODE_PCMC)
        BUCK_dacSet_pu = BUCK_SFRA_INJECT(BUCK_dacSlewed_pu);
        BUCK_HAL_updateSyncBuckDac(BUCK_dacSet_pu);
    
        //
        // For informational purposes, calculate and record the amount of
        // time remaining before the CMPA shadow load takes place.
        //
        BUCK_logDutyUpdateMargin();
    #endif

    我不知道这个示例在做什么。 BUCK_SFRA_Inject 不会生成任何东西、我能够了解 BUCK_dutySlewed_pu 的工作原理。 您能否以详细模式(目前)解释上面列出的代码?

    提前感谢您。

    此致、

    德沃拉

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

    尊敬的 Debora:

    该 BUCK_SFRA_INject 函数将与我们的软件频率响应分析器工具(SFRA)一同使用。 如果不使用 SFRA、您可以假设 BUCK_dacSet_pu 与 BUCK_dacSlewed_pu 等效。  

    启用 SFRA 后、SFRA 会向我们2p2z 控制器的目标 DAC 值中添加一个小信号注入。 此函数与 SFRA_COLLECT 函数结合使用、后者将 分析激励数据并计算被控对象传递函数

    这主要涉及控制环路的调优、因此如果您只对开发 PCMC 控制代码感兴趣、则可以选择暂时忽略此函数

    此致、

    彼得