NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

測定したアナログ波形をフィルター後、周波数測定する。

LabVIEW8.6proを使用しています。

DAQからAI電圧測定した波形にフィルターを施し、トーン測定で周波数を測定するVIを作成しました。

VIを添付しましたのでご覧ください。

DAQで測定した波形も添付いたしますのでご覧ください。

 

困っているのは、都度出力される周波数が求める値と異なることです。

毎回ある程度キレイな波形が測定できていると感じるのですが、周波数は的外れです。

安定した周波数が導き出されるには、どうすれば良いのでしょうか?

 

フィルターが最適なものでないのかな?と感じているのですがどうなのでしょうか?

フィルターは、バンドパスフィルター・IIR・楕円・次数5を設定しています。

いろいろ試しているのですが、うまくいきません。

フィルターを修正するのは、検討違いなのでしょうか?

 

アドバイスをいただけたら助かります。

 

すべてをダウンロード
0 件の賞賛
メッセージ1/14
6,127件の閲覧回数

とりあえず思いついた物です。

 

波形整形(パルス化)後に周波数を計測する。

 

過去スレッド

テキストデータからのパルス数カウント

のVIに少し追加した物です。

8.2形式で保存しています。

 

22042i8E2541688B77A2FD

 

22044i3287DACECB75B7A7

0 件の賞賛
メッセージ2/14
6,074件の閲覧回数

xyzz様

 

返信いただきありがとうございます。

FFTやフィルターに関してばかり考えていたので、お教えいただいた波形整形の視点で考えてみました。

 

早速、実機にて検証しましたが、測定する度に振幅・周期が微少ながらも変化するため

安定した結果にはなりませんでした。

 

読み飛ばし数・閾値を自動で微調整するプログラムで

正確にパルス波に変換できれば良いのですが、ノイズの影響もあるため苦慮しています。

0 件の賞賛
メッセージ3/14
6,045件の閲覧回数

フィルターの事は良く解からないので間違っているかもしれませんが、

ローパスフィルターとかハイパスフィルターで可能なような気もしますが?

 

 

0 件の賞賛
メッセージ4/14
6,035件の閲覧回数

画像忘れていました。

 

22118iCE2635F0B82CE487

 

0 件の賞賛
メッセージ5/14
6,032件の閲覧回数

微分変化量を検出して、パルス出力する物をUPしておきます。

 

過去スレッド

電圧を安定させたい

に少し手を加えた物です。

 

8.2形式で保存しています。

 

22128iB31541DDCD0FF408

 

22130i2213AA7EFCB8C195

 

0 件の賞賛
メッセージ6/14
6,020件の閲覧回数

xyzz様

 

多くの返信をいただき本当にありがとうございます。

理想の動作には、まだまだ工夫が必要なようです。

 

これから色々試してみます。

その上で、また疑問など出ると思うので質問させていただきます。

0 件の賞賛
メッセージ7/14
6,012件の閲覧回数

必要ないかもしれませんが

移動平均のテストが出来る物をUPしておきます。

 

8.2形式で保存しています。

 

追伸

波形データがUPしてあると、シュミレーションし易く、他の人も返信し易いと思います。

 

22132i325DB01CCC9A3A46

 

22134i287E00C1889F39B5

0 件の賞賛
メッセージ8/14
6,008件の閲覧回数

takizawa様、xyzz様

 

 横槍で恐縮です。

 

 当方、ver6iのため、viを開くことはできませんが、今回のケース、「毎回ある程度キレイな波形が(連続で)

測定できている」ということで、最初の絵に示されているようなデータが得られているのでしたら、

生データのまま、そこに含まれている周期成分を抽出する手法として、「自己相関」を使うという手もあります。

 

 自分自身をずらしながら(時間遅れを作りながら)掛け算して総和を取ると、周期分だけずれたところで

その値は大きくなります。

 

 添付は、いくつかのサンプル波形を準備してあり、これに若干のノイズを加えて、自己相関による周期成分の抽出を

行ったものです。デフォルトの「サンプル」波形は、takizawa様の絵のデータを、それらしく勝手に再現したものです。

(xyzz様がおっしゃるように、波形データの数値ファイルがあると、他の人も試みやすいかと・・・)

 

 生データの自己相関を時間遅れに対してプロットすると、周期的に値が大きくなります。これをピーク検出すると、

周期が得られます。最短周期・倍周期・3倍周期・・・と得られるので、一番小さいものを取ればOK。

最も相関が強いのは「自分自身(=時間遅れゼロ)」なので、その時の値の90%などを閾値にしてピーク検出すると

良いかと思います。データの最後まで重ねると、重なりが小さくなるので誤差が大きくなりますが、データに3周期程度

含まれていれば、最短周期はだいたいとれると思います。

 

 この方法は、1周期に含まれる周波数成分や波形の特徴に依存せず、生データがそのまま使えて、

フィルタを通す必要もないため、多少は融通が利くと思われます。

 

 ただ、自己相関をピーク検出するなら、元データでピーク検出しても良いではないか・・ということもありますが

(特に今回のようなデータはそうですが)、添付のviの波形サンプルにも入れたように、「1周期内に同じような大きさの

ピークが複数ある」ような場合は、元データのピーク検出ではうまくいかない場合があります。でも自己相関を取れば、

とにかくきっちり重なる周期で値が大きくなるので、周期が得られる、という仕組みです。

 

 いろいろ試した感触では、自己相関による周期の抽出は、「単一の正弦波ほどニガテ、急峻な変化があるものほど得意」

という印象です。単一の正弦波は、自己相関も正弦波であり、そのピーク検出は元データのピーク検出と同じことですし、

少しずれた程度ではまだまだ強い相関があるので、周期を抽出するのは不得手になるようです。不得手というより、

正弦波の場合、なぜか微妙に値がずれますね・・・まあ、正弦波に対して自己相関で周期を出すことは無いと思いますが・・・

 

 波形により得手不得手がありそうなので、あくまで参考として試してみていただければと思います。

 

※波形によっては、あるいは重畳しているノイズの大きさによっては、検出に失敗することもあります。

 今回のviでは、倍周期・3倍周期などは捨てているので、拾えた成分全部使って演算すると、もう少し確度が上がるかも?

 

メッセージ9/14
5,988件の閲覧回数

M.Shiraishi 様

いつも有難うございます。

私にはまったく思いつかない方法で勉強になりました。

と言っても、文字で説明している内容がザックリわかっただけで、

理解は全然出来ていません。

自己相関を腑に落とせる様に勉強しようと思いました。

 

 

余談

周波数を測定するだけなら、他にも色々な方法が有りそうなので

それらも見てみたいです。

 

 

 

 

 

 

0 件の賞賛
メッセージ10/14
5,966件の閲覧回数