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.

[参考译文] TMS320F280025:最大占空比低于100%、即使采用最大调制也是如此

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1318986/tms320f280025-maximum-duty-cycle-is-below-100-even-with-maximum-modulation

器件型号:TMS320F280025

尊敬的支持团队:

我目前正在使用基于通用电机控制 SDK 的软件测试 owm 板。

电机正常运行、启动很好、我 还通过计算中的 Vd 和 Vq 并在启用 PWM 之前将这些值设置为 Id 和 Iq 稳压器输出来大大提高快速启动能力、这非常好(我过去在 InstaSPIN...时也这么做)。

我目前正在检查最大 PWM 占空比、无法达到100%。

我首先尝试使用 #define USER_M1_MAX_VS_MAG_PU         (0.576f)、然后增大至 #define USER_M1_MAX_VS_MAG_PU        (0.65f)、但仍低于100%。

通过预定义符号 MOTOR1_OVM 启用过调制。

PWM 频率设置为19kHz、死区延迟计数设置为150 (=>1.5us)、SVM 为 SVM_COM_C

见下面的 PWM_U_H (黄色)、PWM_U_L (蓝色)和 U 相电流(应以 错误的方向设置反相电流钳位)、您可以看到、我可以具有0%的占空比(0% PWM 高电平/100% PWM 低电平、但 PWM 高电平不是100%)

始终有一个小脉冲为0 (略小于2us):

我不明白为什么我不能拥有真正的100%。 可以帮帮我吗?

此致。

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

    您好!

    在这些尖峰期间、你是否能够在 SVGENCURRENT 对象中记录变量的值? 查看这些内容可能有助于准确跟踪问题发生的位置。  例如、 如果问题出在这种情况下、基于 CMPx 值的条件断点可能会帮助解决此问题。

    此致、
    杰森·奥斯博尔恩

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

    您好!

    我记录值 pwmData.Vabc_pu.value[0]就在 SVGEN_run 之后,最大值>0.5,最小值<-0.5 (见下文),因此在这里没有问题:

    然后在 SVGENCURRENT_COMPPWMDATA 之后执行相同的运算、该值也为>0.5和<- 0.5。

    然后我 在 HAL_writePWMData 之后记录 pwmData.cmpValue[0],最小值为16,最大值为2631。

    2631为 USER_M1_PWM_TBPRD_NUM (最大值=周期)、最小值(16)是在 HAL_setTriggerPrams 中定义的最小值。

    我在论坛上读过不同的讨论、其中需要在 ISR 中添加一些针对0%和100%占空比的代码、但根据技术参考手册、图17-26、不需要这款微控制器。

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

    我想我发现了根本原因、这是由于  HAL_writePWMData 中设置了与死区发生器相关的最小值、通过将最小值降低到0、我可以获得100%占空比。

    现在我的问题是、在启用过调制/电流重构时、是否需要具有最小值? 最小值似乎是以0运行的。

    此致。

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

    您好!

    通过将最小值更改为0、我能够获得100%占空比、但我无法获得低于2us 的脉冲、这意味着我无法达到96%和100%之间的占空比。

    它可能与死区时间有关,你能建议吗?

    此致。

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

    制造商:

    对于您的最后一个问题、将丢失一个短于死区的脉冲。

    在相关问题时、我首选的绕过该问题的方法是将 DBRED 和 DBFED 设置为0、然后更改我的 CMPA/B 计算结果、以确保死区仍然存在。

    或者、如果使用100%占空比、则将动作限定符设置为在周期和/或零(而不是 CMPA/B)上运行可能会很有用。

    此致、
    杰森·奥斯博尔恩

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

    好的、我会按照您的建议、以防这产生问题(此时我不确定这是问题、直到我能100%拿到顶部、肯定这会造成失真、但可能不会太多)。

     通用电机控制实验中的 HAL_writePWMData 中的最小值如何?

    现在我的问题是,启用过调制/电流重构时是否需要最小值? 它似乎以0作为最小值运行。

    此致。

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

    为安全起见、提供了最小值、以允许无问题地进行死区和 ADC 采样。 只要您安全地处理这些事项、就可以将其设置为0。

    此致、
    杰森·奥斯博尔恩