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.

[参考译文] CCS/LAUNCHXL-F28069M:关于真实 RMS 表和频率计开发的一些指南

Guru**** 2601915 points
Other Parts Discussed in Thread: LAUNCHXL-F28069M, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/678153/ccs-launchxl-f28069m-about-some-guidelines-for-true-rms-meter-and-frequency-meter-development

器件型号:LAUNCHXL-F28069M
主题中讨论的其他器件: C2000WARE

工具/软件:Code Composer Studio

大家好、我是 Mike

首先、感谢大家的支持。

现在,在完成了一些小程序、了解了 MCU 并获得了 LAUNCHXL-F28069M 的使用经验之后,我来到这里是因为我有很多事情要做。

我编写了一个程序来测量不同波形的真实 RMS。 这里是一些结果

第一个问题是。

如何改善测量结果?

我知道这是 AdcOffsetSelfCal()的问题;我想将它放在我的代码上会有更多的事情,一些指导原则将这个函数保留原样,你对它的看法是什么? 误差变为40mV。

 

波形

RMS

直流

 

示波器

程序

示波器

程序

正弦

1.69 V

1.67127430 V

1.65V

1.63549805 V

平方

1.79 V

1.74214472 V

1.7伏

1.66127932 V

三角

1.68V

1.66051242 V

1.65V

1.63791502 V

 

 第二个问题是

如何稳定测量?

这些讲座正在振荡。 在仿真器中、它们被声明为_IQ、我已经将其称为 float、 它的范围是1.00000000、前两个零是可以的、它们不会移动、但其他六个零在移动、我知道这是因为它是浮点性质的、但我想知道如何改进它们、或者在其他情况下、将它们四舍五入。

我确实想使用_IQmathlib.h,但有些说明不像我预期的那样工作,我认为我没有优化代码,因为 LAUNCHXL-F28069M 是要使用的。请参阅:  

正如您看到的那样、这些信号大约为13Hz、仿真器显示它们非常好、但是如果我更改频率、测量结果会很差、只是我可以在13Hz 的倍数处进行非常好的测量。 正如多日技术讲座所说的那样,我正在使用 EPwm1Regs.CMPA.half.CMPA 和 EPwm1Regs.TBPRD 进行一些工作,我知道如果我想正确测量 N 频率,必须执行某种“动态 PWM”来更改采样频率。 TBPRD 是一个2^16的数字、因此我无法测量1Hz 的信号、也无法按照奈奎斯特所说的那样、以我想要采样的2倍频率进行采样。 因此、我可以采样的最小频率为686.65Hz (TBPRD= 0XFFF)、这是我缺少的值。

 

所以

我能否使用某种类型的动态 PWM 来测量 N 频率?

如果是,执行这项工作的基础是什么?

 

我´mn´t 移动频率信号(该信号在0Hz 至70Hz 范围内)会更改测量值、但我不知道如何改进。

 

此外、我还必须对该信号进行频率计量。 我想、为了改善测量结果、我可以首先使用过零、过零将报告频率、这将改变 TBPRD、然后使用 CMPA 来改善测量结果、而不仅仅是频率。

 

如何仅使用这些信号来测量频率(我是说、没有中断、CPU 中断或它必须参与 eCAP 的任何内容)?

 

感谢您的所有评论、

此致

Mike

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

    还在吗?

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

    [引用用户="Mike"]

    如何改善测量结果?

    我知道这是 AdcOffsetSelfCal()的问题;我想将它放在我的代码上会有更多的事情,一些指导原则将这个函数保留原样,你对它的看法是什么? 误差变为40mV。

    [/报价]

    始终建议使用与应用程序相同的 ADC 配置来执行 AdcOffsetSelfCal()。

    [引用用户="Mike"]

    第二个问题是

    如何稳定测量?

    这些讲座正在振荡。 在仿真器中、它们被声明为_IQ、我已经将其称为 float、 它的范围是1.00000000、前两个零是可以的、它们不会移动、但其他六个零在移动、我知道这是因为它是浮点性质的、但我想知道如何改进它们、或者在其他情况下、将它们四舍五入。

    我确实想使用_IQmathlib.h,但有些说明不像我预期的那样工作,我认为我不会优化代码,因为 LAUNCHXL-F28069M 是要实现的。

    [/报价]

    我不理解"讲座"在这方面的含义。

    IQmath 库中是否有您想要使用的特定内容? IQMath 用于仿真定点处理器上的浮点行为。 F28069M 具有原生 FPU 硬件块、因此无需仿真。 在执行相同的操作时、FPU 的效率也比 IQmath 高。

    [引用用户="Mike"]

    正如您看到的那样、这些信号大约为13Hz、仿真器显示它们非常好、但是如果我更改频率、测量结果会很差、只是我可以在13Hz 的倍数处进行非常好的测量。 正如多日技术讲座所说的那样,我正在使用 EPwm1Regs.CMPA.half.CMPA 和 EPwm1Regs.TBPRD 进行一些工作,我知道如果我想正确测量 N 频率,必须执行某种“动态 PWM”来更改采样频率。 TBPRD 是一个2^16的数字、因此我无法测量1Hz 的信号、也无法按照奈奎斯特所说的那样、以我想要采样的2倍频率进行采样。 因此、我可以采样的最小频率为686.65Hz (TBPRD= 0XFFF)、这是我缺少的值。

    [/报价]

    奈奎斯特采样率是  表示信号所需的最小采样率。 过采样信号通常会得到更好的结果。 例如、1.3kHz 的采样率将为每个波形周期提供100个点、这有助于重建信号、比仅使用2个点更好。

    [引用用户="Mike"]

    所以

    我能否使用某种类型的动态 PWM 来测量 N 频率?

    如果是,执行这项工作的基础是什么?

    我´mn´t 移动频率信号(该信号在0Hz 至70Hz 范围内)会更改测量值、但我不知道如何改进。

    此外、我还必须对该信号进行频率计量。 我想、为了改善测量结果、我可以首先使用过零、过零将报告频率、这将改变 TBPRD、然后使用 CMPA 来改善测量结果、而不仅仅是频率。

    [/报价]

    您可以通过过采样捕获整个0Hz 至70Hz 带宽、然后使用 FFT 分析组件频率。

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

    你(们)好  

    感谢您的回答

     

    问题1:

    关于 AdcOffsetSelfCal(),因此,如果我在代码中放置了这条 AdcOffsetSelfCal()指令,那么我不必担心错误? 我的意思是40mV 的误差非常好、但我认为我可以改进 ADC 测量、以便将40mV 误差降低到5mV 误差、比如说。

    如何才能做到这一点?

    问题2:

    我要为我的语法错误道歉,我不是母语英语的人。 当我说“讲座”时,我谈论的是我放在图形前面的表中的结果或测量值(我在这里比较示波器中的测量值与我制作的代码)

    我想使用 IQmath 库,因为“float”或“long”类型的使用仅限于我(只是为了使用 F28069M 的功能)。 我将查看 FPU 硬件。

    顺便说一下、创建累加器函数时我遇到了一些问题、因为仿真器向我报告了一些负值、这是由于变量的定义而发生的、它是一个有符号的变量。 我将其声明为_iq、然后我使用了_IQmpy();_IQdiv ()、_IQsqrt ()、但它从我所做的数学计算中向我报告了一些值。 所以我用 pow();+(添加),*(乘法)来求解,就好像它们是 math.h 中的浮点变量一样

    您建议执行此累加器功能的方法是什么?

     

    问题3:

    我想我们被误解了、我再次对我发布此内容的方式表示歉意。 又来了。 如果我的信号频率为1Hz、奈奎斯特表示最小采样率是我要测量频率的两倍、因此采样´s 频率将为2Hz。 ´s 我有一个20Hz 的信号、那么最小采样频率为40Hz、依此类推。 对于我的所有测量,我要打154分。 问题更多地是、如果我更改信号的频率、我的测量值会发生变化。 正如我们所知,TBPRD 是 ePWM 的周期,但在我的情况下,它不会与信号的频率同步,因此当我更改信号频率时,CMPA 会进行比较,即使信号处于零或任何振幅, 因此,我的测量结果有误,我知道是以我的采样方式进行的,但我不知道如何解决。

    你推荐什么?

     

     

    问题4:

    这是非常有趣的、因此您可以说、我必须使用 eCAP 来执行 SOC、以便将转换与信号频率同步、并在 eCAP 不工作时停止转换。 请告诉我是否出错。

     

    感谢您的回答,如果您的回答不清楚,我很抱歉,请告诉我

    你说的有趣的事情会有什么基础呢?

    此致

    Mike

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

    [引用用户="Mike"]

    问题1:

    关于 AdcOffsetSelfCal(),因此,如果我在代码中放置了这条 AdcOffsetSelfCal()指令,那么我不必担心错误? 我的意思是40mV 的误差非常好、但我认为我可以改进 ADC 测量、以便将40mV 误差降低到5mV 误差、比如说。

    如何才能做到这一点?

    [/报价]

    请参阅  描述 ADC 零偏移校准的 TRM 中的第8.1.9.2节。 如果  您定期执行校准以补偿温度漂移、此过程将使数据表第6.9.2.1.3节中指定的 ADC 失调电压误差从+/-20LSB 标称误差提高到+/-4LSB。

    偏移校准过程不是为了补偿增益误差或系统级误差。  系统误差的一个常见来源是 ACQPS 稳定时间不足。  您可以在下面的技术讨论中看到此主题:  

    [引用用户="Mike"]

    问题2:

    我要为我的语法错误道歉,我不是母语英语的人。 当我说“讲座”时,我谈论的是我放在图形前面的表中的结果或测量值(我在这里比较示波器中的测量值与我制作的代码)

    我想使用 IQmath 库,因为“float”或“long”类型的使用仅限于我(只是为了使用 F28069M 的功能)。 我将查看 FPU 硬件。

    顺便说一下、创建累加器函数时我遇到了一些问题、因为仿真器向我报告了一些负值、这是由于变量的定义而发生的、它是一个有符号的变量。 我将其声明为_iq、然后我使用了_IQmpy();_IQdiv ()、_IQsqrt ()、但它从我所做的数学计算中向我报告了一些值。 所以我用 pow();+(添加),*(乘法)来求解,就好像它们是 math.h 中的浮点变量一样

    您建议执行此累加器功能的方法是什么?

    [/报价]

    我认为、您的许多问题都将通过利用 FPU 来解决。 启用后、编译器在遇到标准浮点表示法时将自动使用 FPU 指令、例如使用小数点(赋值中为"1.0"而不是"1")或将值转换为(float32)。 默认情况下、在 C2000Ware 示例中应已启用 FPU 编译器选项:

    [引用用户="Mike"]

    问题3:

    我想我们被误解了、我再次对我发布此内容的方式表示歉意。 又来了。 如果我的信号频率为1Hz、奈奎斯特表示最小采样率是我要测量频率的两倍、因此采样´s 频率将为2Hz。 ´s 我有一个20Hz 的信号、那么最小采样频率为40Hz、依此类推。 对于我的所有测量,我要打154分。 问题更多地是、如果我更改信号的频率、我的测量值会发生变化。 正如我们所知,TBPRD 是 ePWM 的周期,但在我的情况下,它不会与信号的频率同步,因此当我更改信号频率时,CMPA 会进行比较,即使信号处于零或任何振幅, 因此,我的测量结果有误,我知道是以我的采样方式进行的,但我不知道如何解决。

    你推荐什么?

    [/报价]

    一种可能的方法是使用比较器在特定的电压阈值下生成跳闸信号。  然后、当 PHSEN 被启用时、EPWM 可将 TRIP 信号用作一个同步事件来重新加载 TBCTR 寄存器。  如果您需要更多详细信息、我建议您启动新的主题。

    [引用用户="Mike"]

    问题4:

    这是非常有趣的、因此您可以说、我必须使用 eCAP 来执行 SOC、以便将转换与信号频率同步、并在 eCAP 不工作时停止转换。 请告诉我是否出错。

    [/报价]

    FFT 建议仅用于在与频谱分析仪非常相似的时间段内执行频率分析。  ECAP 将测量数字信号边沿之间的时间延迟。  它可能能够为您提供方波的频率、但它对同步不有用。

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

    感谢所有回答、我将查看我们在这里讨论的一些内容。