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.

[参考译文] TMS320F28379D:如何使用 ePWM 外设生成旋转编码 PG 信号?

Guru**** 2560580 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1286920/tms320f28379d-how-to-generate-rotary-encode-pg-signal-using-epwm-peripheral

器件型号:TMS320F28379D

您好!

我对 ePWM 外设相当陌生。  

如何使用 ePWM 外设生成旋转编码器 PG 信号? 我认为我只需要生成 PGA 和 PGB、然后在 CPLD 中使用计数器来生成 PGZ。

此外、对于 PGA 和 PGB、最好使用单个 ePWM 模块或两个不同 ePWM 模块的 A 和 B?

斯蒂芬

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

    周老师、您好!

    我不熟悉旋转编码器 PG 信号。 您能否提供您需要实现的 PWM 输出以及与此输出相对应的算法输入的示例?

    谢谢!

    卢克

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

    我还没有看到来自旋转编码器的实际脉冲。  不过、以下网站对其进行了介绍。  A 与 B 异相90度、Z 脉冲每转一圈产生一次。

    https://en.wikipedia.org/wiki/Rotary_encoder#/media/File:Quadrature_Diagram .svg

    脉冲的周期与编码器的旋转速度成正比。

    我需要使用 PWM 来生成 A 和 B 脉冲、而 Z 脉冲将由其中一个或两个脉冲生成。

    我应该使用两个单独的 PWM 模块、还是应该使用来自一个 PWM 模块的 A/B?  我如何获得90degs 相移?

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

    周老师、您好!

    A 和 B 的占空比是否始终为50%? 如果是这样、只需一个 PWM 模块即可实现这一目的。 要实现所需的相移和占空比、请将 PWM 周期想象为需要实现4个事件:

    • A 的上升沿
    • B 的上升沿
    • A 的下降沿
    • B 的下降沿

    这些事件都应与行动条件判断器事件相关。 在您共享的映像中、 您可以使用向上向下计数模式和 CMPA 值 TBPRD/2来实现此目的、并在计数器向上计数时将动作限定器事件设为0、CMPA、在计数器向下计数时将 TBPRD 和 CMPA 设为0。 如果相移不是90度、则需要利用 CMPA 和 CMPB 来在输出 B 上保持50%的占空比。如果 A 和 B 的占空比从50%变化、 您需要使用通过 TBPHS 同步在一起的2个 PWM 模块来实现相移。

    我不确定您想使用 Z 脉冲实现什么目的、因为它没有包含在您发送的图像中、但如果 Z 脉冲来自 A 和 B、您可以使用 CLB 来实现。

    谢谢!

    卢克