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:对样本不完全是2的倍数的周期性信号执行 FFT。

Guru**** 664280 points
Other Parts Discussed in Thread: C2000WARE, TIDM-THREEPHASEMETER-F67641
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1253274/tms320f28379d-taking-fft-of-a-periodic-signal-having-samples-not-exact-multiple-of-2

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARETIDM-THREEPHASEMETER-F67641CD4040B

我们需要精确计算电网电压中高达第9个谐波的谐波。 采样将以16KHz 的固定速率完成、即设置 PWM 频率的速率。  在恰好为50Hz 时、结果为320个采样点。 同样、在60Hz 时、会产生大约267个样本。 此外、电网频率会发生变化、因此每个周期的采样点数量会发生变化。 我完全不知道这个问题的一个好解决方案、因为 FFT 库只对2^N 的样本进行计算。  采样信号段必须包含整数个周期。 我知道如果 FFT 是在不完整周期上计算的(例如、256/320=50Hz 周期的0.8部分或512/320=50Hz 周期的1.6部分)、那么这会导致大量其他谐波的结果和不正确的结果。 请提供相关指南、了解如何继续执行此操作。  

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

    尊敬的 Asad:

    如果您打算使用针对计算效率优化的 FFT 库、那么必须有2^N 个点。 否则、您将不得不实施自己的解决方案。 您可以查看这样的示例:

    https://lloydrochester.com/post/c/example-fft/#:~:text=more%20usage%20examples.-,C%20Header%20of%20the%20FFT,signals%20are%20put%20through%20rearrange%20

    请记住、C2000Ware 中使用的 FFT 库已优化为快速、因此如果您的数据不满足2^N 的要求、精度将会有所折衷。 如果您想要精确度、实施自己的 FFT 函数是可行的、但速度优势将丧失。 这由您来确定哪一种最适合您的用例。

    此致、

    阿米尔·奥马尔

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

    尊敬的 Omer Amir:

      假设对于50Hz 信号改变理想采样频率、例如1.6KHz。 在这个非常理想的情况下、我们可以有1600/50= 32个样本。 现在、如果变化量为+/- 1Hz、则每个周期的样本数可以是31或33、即不是2的倍数。 现在、如果同一系统需要测量60Hz 的采样频率、则意味着通常的采样率为1600/60=27个采样。 因此、实际上、对于任何固定采样频率、实际电网可能具有2个样本的倍数的可能性非常小。 在这种情况下、频率窗口也将是1600/27= 59.26Hz、即不是60的确切倍数。 每次在移动中计算 Twiddle 因子的计算成本都非常高。 有两个问题:

    1-在整个周期内等间隔的样本精确到2的倍数不一定是这种情况、但在计算每个周期的旋转因子时、计算成本会非常高。

    固定速率采样不保证频率窗口恰好是基波的倍数。

    我认为 TI 会有一个很好的解决方案来解决这个问题、因为这种实现并不是很少见。 我相信很多人已经能够以较高的精度完成电网谐波计算。  我可能忽略了一些非常基本的东西。 TI 是否为此用例提供了任何应用手册或任何示例实现? 我正在搜索、但仅找到了 TIDM-THREEPHASEMETER-F67641作为相关源。 他们使用 Goertzel 算法进行 THD 计算。 您能评论一下它在我的应用中的用法吗?

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

    朝觐、
    该问题的一个常见解决方案是使用某种确保同步采样的 PLL。 这在功率质量分析仪的标准 IEC 61000-4-30中也是必需的。
    您可以使用 HC4046等 PLL 直接驱动 ADC、也可以通过使用某种随市电频率变化的可变频率 PWM 重新创建时钟来间接驱动 ADC。

    此致、
    安迪

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

    Andy、您好!

      您能否参考上述方法的任何应用手册或实现示例? 事实上、我们使用乘法器 IC (CD404040B)探索了 PLL (SN74LV4046ANSR)选项、以便在电网电压的一个周期内精确采集32个样本。 然而、来自这个采样数据的 FFT 结果并不准确。 特别是、我们在二次谐波和三次谐波计算中发现了更多的误差。 我们知道、这是 PLL 中的某种抖动导致的、导致采样脉冲不是完全相等。 如果我们有某种参考实现来看看是否出现了问题、将会非常有用。 市电频率之后的可变 PWM 的第二种方法对我们来说是新方法。 有关该主题的任何进一步详细信息也将很有帮助。

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

    第二种方法基于使用一个 eCAP 来逐周期测量市电频率、甚至是逐半周期测量更好的市电频率。 然后、在每个周期或半个周期、PWM 频率都会更新为新值。 该方法的优点是可以滤除不必要的频率变化、或在主电源电压骤降或中断时管理系统。 如果您的 PWM 无法生成以足够精度驱动 ADC 时钟所需的高频、您仍需要使用 PLL (由低频 PWM 驱动的 PLL)。
    但在这两种方法中、最重要的是准确地获得市电频率、这意味着在测量频率之前必须消除谐波。 一个可能的方法就是执行通带模拟滤波器、例如40-70Hz。

    此致、
    安迪

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

    您好、Asad、

    我想知道具体的应用、以及来自任何电源转换器 ISR 的16kHz PWM 频率规范。 此外、您使用的是内部 ADC 还是外部。

    您可以在 C:\ti\cc2000\C2000Ware_5_00_00_00\libraries\dsp -> docs 文件夹中找到有关 C2000 FFT 库的文档

    谢谢、此致、PAWAN

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

    尊敬的 PAWAN NAYAK:

        此应用是并网太阳能转换器。 您认为16KHz 是逆变器开关的开关频率是正确的。 下面我们使用内部 ADC。  对于 FFT、我们将使用来自调谐到电网频率的 PLL 电路的外部 ADC 触发器。 到目前为止、我们只使用32点采样、并认为这个数字太小、除了 PLL 输出中固有的抖动外、这也是 THD 测量不准确的原因之一。 现在、我们已将采样率增加到每周期128点、并对其进行测试。 我们对改善抱有希望。

    谢谢、此致。

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

    您好、Asad、

    如果需要此方面的进一步支持、请及时告知我们。 我们提供了软件 PLL 库、以便您尝试基于软件的 PLL。

    谢谢、此致、PAWAN

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

    尊敬的 PAWAN NAYAK:

      将采样增加到128个点后、结果要好得多。 然而、我们在调整 PLL 以锁定45Hz 至65Hz 电网频率范围方面遇到了一些困难(逆变器可以在50Hz 和60Hz 电网中运行)。 我们可以尝试一下软件 PLL、因为它可以轻松地重新配置为50Hz/60Hz、并且从降低硬件成本的角度来看也很有吸引力。 请分享一些详细信息和相关应用手册/示例。

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

    您好、Asad、

    软件 Ware_Digital 库的位置为 C:\ti\c2000\c2000\c2000\c20002000_SDK_4_04_00_00\libraries/spll\include

    相关文档可在下面的 模块中找到:

    单相和三相软件 PLL 的应用手册如下

    https://www.ti.com/lit/an/sprabt4a/sprabt4a.pdf

    https://www.ti.com/lit/an/sprabt3a/sprabt3a.pdf

    谢谢、此致、PAWAN

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

    使用128点 FFT 时、结果是可接受的。 似乎32点采样不够好。 我想我们可以关闭这个 TT。