2

我正在研究这个嵌入式项目,我必须通过计算其电压和电流波形之间的相位差并通过改变其频率使其为零来使换能器产生共振。其中 I(电流)和 V(电压)在任何时刻都是相同的频率信号,但不是大约(47Khz - 52kHz)的固定频率信号。我所要做的就是计算这两个信号之间的相位差。哪种方法最有效。

两个信号的 FFT,然后是特定分量之间的相位差或两个信号的互相关?或者如果有的话?哪种方法会给我最准确的结果?并以什么分辨率?采样率是否会影响相位差的分辨率(可以感应到的最小相位差)?我是数字信号处理的新手,如有任何错误,请纠正我。

额外细节:-

  • 我的系统中的噪声可能是白/高斯噪声(不显着)和基本谐波(在谐振失配情况下可能很重要)。

  • 是的,4046 可以作为开关稳压器的一个很好的替代品。我正在与 (NCO/DDS) 合作,我可以在其中不断缩放/重塑正弦曲线。

  • 模拟滤波器的实现将非常复杂,因为我需要具有高滚降率的高阶滤波器来去除谐波,因此我选择了基于 DSP 的滤波器,并且它易于与 MATLAB DSP 处理器一起使用。

  • 对于 ~50 KHz (47Khz-52KHz) 系统,您建议使用什么采样率来实现 FFT 或 Goertzel 的结果,相位分辨率最好 =<0.1 度或更小,频率步长从 ~1 到 2Hz 不等。至 50 Hz-200Hz。

  • 我的频率是可变的 45KHz - 55Khz ......但我的系统会知道......知道最后一个馈电频率的相位误差是更可取的。在 FFT 和 DIGITAL FILTERING 之后,可以对更多无噪声样本执行 IFFT,这些样本可用于进一步处理。所以我猜FFT完成了这两项任务......

但我想知道相位差精度是关键部分。

4

5 回答 5

3

Goertzel 算法 http://www.embedded.com/design/configurable-systems/4024443/The-Goertzel-Algorithm是一种相当有效的音调检测方法,可将信号分解为实部和虚部。我假设您可以根据需要使用数字来获得相位差或只是极性。

分辨率与时间常数是本文重点介绍的设计权衡问题。http://www.mstarlabs.com/dsp/goertzel/goertzel.html

额外的

“能得到什么精度?”

这取决于...取决于您面临的问题(即信号电平、外部噪声等)、您拥有的硬件(即 adc、处理器等)以及您如何实现解决方案(采样率、数值精度等)。如果没有完整的图片,我会猜测您可以实现什么,因为 Goertzel 方法远非易事。

但我想对于具有良好信号电平和低噪声的高中项目,使用 4046 PLL www.nxp.com/documents/data_sheet/HEF4046B.pdf的相位比较器(2,因为它锁定在零度)的更简单方法可能会让你下降几度。

如果您有一个高 Q 传感器,另一个问题是生成高分辨率频率。有一种方法,但那是另一种途径。

还有更多

“基本谐波(可能很重要)”......嗯,因此是数字滤波;但如果采样率太低,则可能存在混叠问题。此外,不匹配的抗锯齿过滤器可能会占用您的整个错误预算。十倍采样频率的经验法则似乎有点低,并且更高会使滤波器设计更容易。

空间开窗解决了频率外问题以及更高的滚降和衰减问题,并在本文中进行了描述。Eric Jacobsen 和 Richard Lyons 在简化数字信号处理方面的滑动频谱分析http://www.amazon.com/Streamlining-Digital-Signal-Processing-Guidebook/dp/1118278380

在我之前的项目中检测到任一载波后,我对巨大噪声中频率变化的时间感兴趣。由于载波相位产生的不稳定性,相位误差永远不会被量化,所以我无法比您更好地猜测您在项目条件下可能会得到什么。

于 2014-02-12T08:16:10.063 回答
2

不要减损芯片的答案(我赞成!)但其他一些选择是:

  • 互相关。在我的脑海中,我不确定它与 Goertzel 算法之间的性能差异是什么,但两者都应该在嵌入式系统上是可行的。
  • 临时方法。例如,我会尝试这样的事情:带通信号以消除噪声,找到峰值并测量峰值之间的时间差。这可能会更有效,并且,如果你做了合理的工作来抛出异常值和处理环绕,应该非常健壮。带通滤波器本身会改变相位,因此您必须确保对两个信号应用完全相同的滤波器。
于 2014-02-12T14:58:07.450 回答
1

如果输入信噪比不是太差,则可以基于过零检测构建计算效率高的解决方案。此外,请查看http://www.metrology.pg.gda.pl/full/2005/M&MS_2005_427.pdf以很好地比较相位差检测算法,包括过零算法。

于 2014-02-12T18:16:19.253 回答
0

如果您有一个跟踪每个输入的锁相环 (PLL),那么您可以减去(发生器组件的)相位系数来确定相位之间的偏移。这对于噪声也将是鲁棒的。

于 2014-02-12T17:54:21.013 回答
0

如果准确知道信号频率,则可以计算 DFT 的 1-bin(或使用类似的复数 Goertzel 块滤波器)。(将 DFT bin 或 Goertzel 设置为该频率)。

如果频率不完全已知,您可以尝试使用带有 FFTshift 的 FFT 来内插频率幅度峰值,然后在该频率处内插两个信号中的每一个的相位。FFT 还允许您对数据进行窗口化,如果频率不完全居中(或不完全是 Goertzel 滤波器频率),这可能会提高相位估计精度。不同的窗口可以提高“区间”频率的相位估计精度。Blackman-Nutall 窗口将比矩形窗口更好,但可能会有更好的窗口选择。

相位测量精度将取决于 S/N 比、对两个(假定为静止)信号进行采样的时间长度,以及可能使用的窗口。

于 2014-02-12T17:01:50.517 回答