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.

[参考译文] TMS320F28035:ePWM 占空比

Guru**** 2589265 points
Other Parts Discussed in Thread: DRV8301

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/662543/tms320f28035-epwm-duty-cycle

器件型号:TMS320F28035
主题中讨论的其他器件:DRV8301

您好!

我正在使用 F28035上的 PWM 外设、想知道关闭特定 PWM 信号的最佳方法是什么。  我关闭 PWM 的方法是将 CMPA 值设置为等于上/下计数器上的周期值。  我的一位团队成员在这个项目中告诉我、0%的占空比对 MCU 不是很好。  我使用 PWM 信号来驱动三相 H 桥、并使用 ePWMxA 线将信号馈入电机驱动器(电路板设计时意外、未利用 ePWMxA-ePWMxB 模块配置)。  我的担心是、如果我以0%的频率运行 PWM、我将损坏 MCU。  如果有任何帮助或建议,将不胜感激。  此外、如果需要、我不打算以100%占空比运行。

谢谢、

-Brandon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还有一个问题:
    由于我使用三相 H 桥、我是否需要为高侧和低侧 FET 使用 PWM? 我不能只使用高侧 FET 上的 PWM 信号来控制占空比、然后根据换向周期将所需的低侧 FET 设置为高电平而不使用 PWM? 这是否会产生与在高侧和低侧 FET 上使用 PWM 相同的效果? 抱歉、如果这个问题看起来很基本、但这是我第一次设计 BLDC 电机控制器。
    另外、我知道我只说了一个问题、但我有另一个问题、因为我无法通过在线调查找到确切的答案。 使用霍尔传感器时、是否最好根据霍尔传感器的当前转子位置设置 FET 开/关、或根据预期的转子位置设置 FET 开/关(通过当前转子位置的一个换向阶跃)? 我没有电机的相关信息、除了它是一个最大电流额定值为+/- 26A 且极数为22的48V BLDC。 非常感谢。 到目前为止、你们在我的所有其他帖子中都提供了很多帮助。

    -Brandon
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brandon
    首先、让我回答您的第二个问题:
    TI 以这种方式开发了 ePWM 模块、使其能够生成两个具有死区的互补信号。 这意味着、您可以将高侧 FET 连接到、例如 ePWM1A 通道、将低侧 FET 连接到 ePWM1B 通道。 再计算占空比、然后将其应用到 ePWM1的 CMPA 寄存器中。 因此、高侧开关的占空比等于 CMPA/TBPRD、低侧占空比=(TBPRD - CMPA)/TBPRD。 您还可以免费获得死区时间!

    第二、如何关闭。 很明显、如果您有低侧开关作为高侧的辅助工作、则 IN 不适合设置 CMPA = 0。 因此、有两种关闭方法。 a)您可以使用 ePWM 寄存器通过 AQCSFRC 寄存器强制开关进入低电平状态。 b)设置 TZ 操作以将 PWM 通道置于高阻态、然后使用 TZFRC/TZCLR 寄存器设置/清除 TZ。
    我更喜欢第二种方法、但我的同事更喜欢第一种方法。

    第三、您关于霍尔传感器的问题很难回答。 它取决于传感器的质量、电机的质量和您的目标。 有很多控制策略。 我认为任何人都不能帮助您-只有您自己的经验/实验/驾驶检查可能会有所帮助。 和工程文章。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速响应。  我电路板上的三相 H 桥连接未利用 PWM 模块设置(在电路板制作完成之前、未意识到模块是以这种方式设置的、并且无法承担制作更多电路板的费用; 这适用于高级设计项目、时间和金钱非常有限)。  但是、我是否仍可以在设置中使用 AQCSFRC 寄存器?  此外、我想知道您对不在低侧 FET 上使用 PWM (即使用 GPIO)而只在高侧 FET 上使用 PWM 来控制占空比的看法。  我的 MCU 到三相连接如下(当然、PWM 会馈送到 DRV8301、然后馈送到 FET):

    ePWM1A---- >A_High

    ePWM2A---- >A_Low

    ePWM3A---- >B_高

    ePWM4A---- >B_低

    ePWM5A ---- >C_High

    ePWM6A---- >C_Low

    请不要谴责我的连接 LOL。  这只是因为研究不足和经验教训:)。  再次感谢。

    -Brandon

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

    由于您在 BLDC 和霍尔传感器方面拥有更丰富的经验、我还有一个问题(LOL)您可能可以回答。 在研究我的项目时、我发现、通常当 BLDC 电机有三个霍尔传感器时、它们可能彼此相隔120度。 当我使用随附的电机控制器驱动电机时(它只允许顺时针旋转、但我们正在为高级设计设计的电机设计一个新的双向控制器)、我测量了霍尔信号、并注意到它重复了六个逻辑步骤 (这也是我假设大厅相隔120度的原因)。 但是、当我用手旋转电机时、霍尔效应会每隔几度切换一次状态。 这是因为有22个极点吗? 当使用中断来确定转子位置时、在 ISR 进行中时、是否不会错过某些换向?在这种情况下、中断发生得如此快? 我知道您可能没有为您提供足够的信息来确定确切答案、但一般性的回答或建议就足够了。 非常感谢。

    -Brandon
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、我不认为在没有 ePWM 的情况下控制低侧 FET 是一个好主意、因为您必须在高侧关闭后精确地将其打开;在高侧打开之前关闭。 也不要担心死区问题。 我不知道如何将 GPIO 切换与 ePWM 切换同步。

    在我看来、最好的方法是使用所有6个具有以下规则的 ePWM:
    1) 1)每个半桥的 ePWM 计数器必须完全同步。 如果 ePWM1的 TBCTR 目前为350、那么 ePWM2的 TBCTR 也必须为350。
    2) 2)设置低侧 ePWM 以将输出反相(与高侧的 ePWM 相比)。 我的意思是、如果 ePWM1在 CTR1 < CMPA1时打开、那么当 CTR2 > CMPA2时、ePWM2必须打开
    3) 3)同时计算 ePWM1和 ePWM2的 CMPA:CMPA1必须根据所需占空比计算、CMPA2必须计算为 CMPA2 = CMPA1 +死区循环。

    例如、ePWM1和 ePWM2计数器是同步的、并且它们是在向上/向下计数模式下计数(类似于三角形)。 当 CTR1<CMPA1时、ePWM1打开、当 CTR2>CMPA2时、ePWM2打开。 TBPRD 为1000。 您希望获得等于80%的占空比。
    在这种情况下、CMPA1为800、CMPA2为900 (100个周期用于死区)。 那么、您得到的结果是:假设您处于 PWM 周期的开始位置。 CTR1和 CTR2为0。 高侧打开(0 < 800)、低侧关闭(0 < 900)。 计数器向上计数并达到801。 您有(801>800)的高侧和低侧关闭(801<900)-这是死区。 100个周期后、CTR = 901。 高侧关闭(901 > 800)、低侧打开(901>900)。 嗯... 您可以猜测计数器开始递减计数时会发生什么情况。

    解释很复杂、抱歉=)、但在您希望开关在互补模式下工作时、所有这些都是用例给出的。
    我希望这对您有所帮助、如果您需要、请询问更多信息。

    嗯、MCU 在0%占空比下工作没有问题=) FET 驱动器可能存在问题、例如、如果您为低侧 FET 使用自举电源。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    霍尔传感器不测量机械位置、但它们测量驱动器的绝对电气位置-因此、如果您有22个磁极、则每旋转1周将获得6*22 = 132个脉冲。 360/132 = 2.3机械角度。 这适用于三个传感器。 但是、如果您只检查一个霍尔传感器、您将看到它每隔2.3*3=6.9机械角度改变一次输出。

    "在 ISR 进行过程中不会错过某些换向"、具体取决于您测量速度/位置的方式以及驱动速度。 我知道 eCAP 模块用于霍尔传感器处理、但我不知道详细信息。 此模块可以自动计算霍尔脉冲之间的时间(以 CPU 周期为单位)、并且您无需 ISR 来计算驱动速度。 您只需获取测量的周期并将其转换为转子速度、如"Speed = CountedCPUCycles / CPUFREQUENCY * polePair"(或 smth)。 像这样)。 关于位置... 嗯、也许是的、也许你需要每个脉冲上的 ISR 来获得位置并重新计算 DutyCycles。 但是、如果您知道驱动速度、您还可以在一些很少出现的脉冲之间"内插"位置。 同样、有很多策略... 您应该自己尝试、并选择适合您项目的项目、我认为=]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    迪诺纳

    您的解释非常有意义。 不过,我对其中一件事感到困惑。 如果高侧和低侧是互补的、如何解决完全关断高侧和低侧 FET 的需求(我猜是 AQCSFRC 寄存器)? 此外、当使用所有三个相位时、互补运行模式如何工作? 当电流要流经不同相位的低侧时、互补模式是否仍然允许电流流过一相的低侧? 或者、这是否起作用、因为一个相位首先完全关闭? 希望我的困惑问题有道理。 谢谢。

    -Brandon
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定我是否已正确理解您:"如何解决完全关断高电平和低电平 FET 的需求"。 您是否意味着"我们需要什么才能完全关闭它们?" 如果你有这个问题-嗯、如果你不关闭它们、那么你将如何关闭你的驱动器? 如果您只想关闭高侧并保持低侧打开、这是不正确的。 这意味着、您的驱动器的相位将会缩短(所有相位都连接到一点-负直流链路总线)。 如果驱动器正在旋转(BLDC)并且相位短路、则会有电流流经相位、这是由旋转磁体引起的 EMF 引起的。 因此、无论如何、您应该将 AQCFRC 用于所有6个 ePWM。

    "在使用所有三个相位时互补运行模式如何工作"-它工作正常=)我不是物理领域的专业人员、但当您设置电流控制器时-他们将为您完成所有电流工作。 无论如何、在三相驱动电流始终在任何时刻流经所有相位:IC =-IA - IB。

    但我现在有疑问-也许您不会使用空间矢量 PWM? 也许您真的不需要辅助开关... 我不确定。 它(再次)取决于您的目的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    迪诺纳

    我将尝试通过一个示例来解释我的想法。 假设您需要打开 A_High 和 B_Low 并使用互补 PWM (其中 A_High 补充 A_Low 等)、 您还可以使用 AQCFRC 设置 C_High 和 C_Low Set Low Low、否则互补设置不会导致相位 A 和 B 来回切换(A_High 和 B_Low 处于开启状态、而 A_Low 和 B_High 处于关闭状态、 然后 A_High 和 B_Low 关闭、A_Low 和 B_High 打开、然后重复)。 很抱歉、我这么做很困难。 我还在学习。 谢谢。

    -Brandon
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯... 嗯、如果你需要这样的开关方式-你不需要互补开关。 但是、您将如何随着时间的推移调制电压? 为什么不使用常规的空间矢量 PWM?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    迪诺纳

    很抱歉、回复时间太长了。 我得去上课。 我不熟悉空间矢量 PWM。 您能否详细说明或向我提供一些参考资料? 此外、当您询问我如何随时间调制电压时、您是说我将如何向栅极或三相 H 桥供电? 我使用的是具有内置保护电路的48V 电池、并且将在每个相位的低侧使用电流传感器来测量电流。 我使用 DRV8301来驱动栅极。 如果我不理解您关于调节电压的问题、请您详细说明一下。 谢谢。

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

    [引用用户="Brandon Dyer77]Disona、

    此外、当您询问我如何随时间调制电压时、您是说我将如何向栅极或三相 H 桥供电?

    [/报价]

    不、我是说、如果您希望电机旋转、则必须更改电压。 例如、如果您想以恒定速度旋转三相电机、您需要对其相位施加三个正弦电压。 因此、"电压调制"是正弦波。 (BTW"电压调制"不是一种常见的 termin、我之所以使用它、是因为我缺乏英语技能。 不确定如何正确调用它=\)

    您是否要为分流器使用 DRV8301的内置电流传感器或外部运算放大器? 对于内置传感器、您可以使用 AQCFRC 关闭开关。 但是、如果使用外部运算放大器、则可以通过将 EN_GATE 信号设置为低电平来关闭开关。

    此外、如果您最终选择使用互补控制、则可以将 DRV8301设置为仅由高侧 FET 的三个信号进行控制、DRV8301将自动生成互补 低侧信号并添加死区。

    空间矢量脉宽调制(SVPWM)是一种常见且广泛使用的产生电压技术。 在这方面、施加到电机上的总电压用矢量振幅和角度来描述。 您将该矢量的投影到 A 相、B 相和 C 相、并为电机获取三相电压。 然后、您将电压转换为 EPWM 的 CMPA、以及... 嗯、就这些。

    计算所有这些东西并不困难、但如果没有一些经验、就很难理解。 我现在甚至不知道从哪里开始。 TI pdf (下面的链接)中介绍了 SVPWM 简短理论。 必须观看有关场定向控制的视频。 它足够长(1小时)、但它确实使一切变得非常简单。

    https://youtu.be/cdiZUszYLiA 

      

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

    实际上、我在过去的一个小时左右观看了有关 SVPWM 的视频和研究、这并不是太难理解。 实际上、它看起来很容易实现。 在研究了 SVPWM 之后、我想很难更改电路板布局以利用 F28035的 ePWMx A-B 模块的辅助功能。 我甚至与我的项目赞助商讨论了如何修改 PCB 布局、以便我可以在互补模式下使用这些模块。 您不能相信我发现 DRV8301具有此功能是多么激动:)。 非常感谢您的帮助。 我一定会告诉您几天内的情况如何、因此我尝试 DRV8301的三 PWM 输入模式后得到了什么结果。 我是否需要保持此帖子打开以便我可以提供更新?

    谢谢!
    -Brandon
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这太棒了、以至于您很快就了解了这一理论。 我认为最好关闭此主题、以便用户更轻松地找到特定问题(如此处所示有关 ePWM 的问题)的答案、然后在出现任何问题时启动新主题。 如果这些问题在这个论坛上没有答案=)
    祝您的项目顺利。