2014-02-12 148 views
0

我正在研究這個嵌入式項目,我必須通過計算其電壓和電流波形之間的相位差並通過改變頻率使其變爲零來使諧振器諧振。 I(電流)& V(電壓)在任何時刻都是相同的頻率信號,但不是固定頻率信號(47KHz-52kHz)。我所要做的就是計算這兩個信號之間的相位差。哪種方法最有效。兩個信號之間的相位差?

FFT兩個信號然後特定組件之間的相位差 或兩個信號的互相關? 還是別的?哪種方法會給我最準確的結果?並以什麼決議?採樣率是否會影響相位差的分辨率(可以檢測到的最小相位差)? 我是新來的數字信號處理,如有任何錯誤,請糾正我。

額外的細節: -

  • 噪聲在我的系統可以是白色/高斯噪聲(不顯著)的基本&諧波(這可能是在共振不匹配的情況下顯著一個)。

  • 是的4046可以是開關穩壓器的一個很好的選擇。我正在與(NCO/DDS)合作,在那裏我可以持續縮放/重塑正弦曲線。

  • 模擬濾波器的實現將非常複雜,因爲我需要更高階的濾波器以消除高次諧波,因此我選擇基於DSP的濾波器,並且可以方便地使用MATLAB DSP處理器。

  • 對於實現FFT或Goertzel結果的約50KHz(47KHz-52KHz)系統,採用什麼樣的採樣率,相位分辨率最好是= < 0.1度或更低,頻率步長從小至〜 1至2Hz。到50Hz-200Hz。

  • 我的頻率是可變的45KHZ - 55KHZ ......但會知道我的系統...瞭解相位誤差最後美聯儲頻率是更加希望的。在FFT和數字濾波之後,IFFT可以被執行用於更多無噪聲採樣,可以用於進一步處理。所以我想FFT做這兩項任務...

但我想知道相差的準確性,因爲這是關鍵部分。

+0

可能重複[兩個信號之間的相位差?](http://stackoverflow.com/questions/21719107/phase-difference-between-two-signal) –

回答

3

Goertzel算法http://www.embedded.com/design/configurable-systems/4024443/The-Goertzel-Algorithm是一種相當有效的音頻檢測方法,可將信號分解爲實部和虛部。我會假設你可以根據你的需要做數值來獲得相位差或極性。

解決方案和時間常數是本文強調問題的設計折衷。 http://www.mstarlabs.com/dsp/goertzel/goertzel.html

附加

「什麼精度可以得到」

這取決於...當你面對什麼用(即信號電平,外部噪聲等),你有什麼硬件(即ADC,處理器等),如何實現您的解決方案(採樣率,計算精度等),如果沒有完整的畫面,我會猜你能達到什麼樣的戈澤爾方法很不容易。

但是我想象一個信號電平高,噪音低的高中項目,使用4046 PLL www.nxp.com/documents/data_sheet/HEF4046B.pdf的相位比較器(2,因爲它鎖定在零度)的一個更簡單的方法可能會讓你下降到幾度。

另一個問題,如果你有一個高Q值傳感器正在產生一個高分辨率的頻率。有一種方法,但這是另一種途徑。

然而,更多的

「的基本諧波(這可能是顯著」 ......赫姆因此,數字濾波 但過低的採樣率和有可能與混疊的問題。也將失去匹配抗鋸齒10倍採樣頻率的經驗法則似乎有點低,並且它會使濾波器設計更高。

空間窗口解決了頻率問題以及更高的滾降和衰減,並在本文中進行了描述。Eric Jacobsen和Richard Lyons在簡化數字信號處理中的滑動頻譜分析http://www.amazon.com/Streamlining-Digital-Signal-Processing-Guidebook/dp/1118278380

在我之前的項目中,在檢測到任何一家運營商之後,我就對興趣廣泛的噪聲頻率變化的時間感興趣。在載波相位不穩定的情況下,相位誤差從來不會靜止以量化,所以我不能猜測你的項目條件可能會更好。

+0

謝謝!它肯定會幫助我。 我想我將不得不對獨立的V&I信號應用算法並計算感興趣組件的相對相位。 什麼是可以檢測到的最小相位差?可以獲得什麼準確度? – user3297083

+0

噪聲在我的系統中可以說是白色/高斯噪聲和基波諧波(這可能是諧振失配情況下的重要諧波)。4046可能是開關穩壓器的一個很好的選擇。我正在與(NCO/DDS)合作,在那裏我可以持續重塑正弦曲線。 – user3297083

+0

對於實現FFT或Goertzel結果的約50 KHz(47KHz-52KHz)系統,相位分辨率優選爲<0.1度或更低,頻率步長從小至約1Hz變化到2Hz,您會得出什麼樣的採樣率?到50Hz-200Hz。準確的相位比精確的fft圖更爲可取。 – user3297083

2

不會從芯片的答案減損(我upvoted它!),但一些其他的選項有:

  • 互相關。除了我的頭腦,我不確定它和Goertzel算法之間的性能差異是什麼,但兩者都應該可以在嵌入式系統上實現。
  • Ad-hoc方法。例如,我會嘗試這樣的:帶通信號以消除噪音,找到峯值並測量峯值之間的時間差。這可能會更有效率,並且,如果您做了合理的工作,拋出異常值並處理繞回,應該非常穩健。帶通濾波器本身會改變相位,因此您必須確保對兩個信號應用完全相同的濾波器。
0

如果信號頻率準確知道,計算DFT(或使用類似的複合Goertzel塊濾波器)的1-bin將工作。 (將DFT箱或Goertzel設置爲該頻率)。

如果頻率不是完全已知的,您可以嘗試使用帶有FFT轉換的FFT插值頻率幅度峯值,然後針對這兩個信號中的每一個插值該頻率的相位。 FFT還可以讓您對數據進行窗口化,如果頻率不是精確的以bin居中(或者確切的說是Goertzel濾波器頻率),這可能會提高相位估計精度。不同的窗口可以提高「分組之間」頻率的相位估計精度。 Blackman-Nutall窗口比矩形窗口更好,但可能有更好的窗口選擇。

相位測量精度將取決於信噪比,一次採樣兩個(假定的靜止)信號的時間長度以及可能使用的窗口。

+0

我的頻率是可變的45KHz - 55Khz ...但是會被我的系統知道...知道最後一個饋電頻率的相位誤差是比較理想的。我想用FFT-IFFT濾波諧波,所以時域採樣將非常無噪音,我可以使用它們進行進一步處理。 – user3297083

0

如果您有一個跟蹤每個輸入的鎖相環(PLL),那麼可以減去(發生器組件的)相位係數來確定相位之間的偏移。這對噪音也是有力的。

0

如果輸入信噪比不是太差,可以基於zero crossing detection構建一個計算效率高的解決方案。另外,請看http://www.metrology.pg.gda.pl/full/2005/M&MS_2005_427.pdf,以便比較相位差檢測算法,包括過零點。

+0

謝謝thanx了。它非常幫助我.. – user3297083

+0

請幫助我從你提到的同一文件中瞭解SWFM方法。因爲它沒有完全描述。這是這種方法的兩個輸入? – user3297083

+0

嗯..不明白你的問題,對不起)基本上,SWFM只是獲得一個正弦曲線的幾個參數,以便它適合輸入信號。這些包括幅度,頻率,相位,恆定偏移量等。爲了獲得相位差,你必須獨立地對兩個信號執行SWFM,然後減去它們的相位。 – vines