08-18-2010 02:48 AM
LabVIEW8.6proを使用しています。
DAQからAI電圧測定した波形にフィルターを施し、トーン測定で周波数を測定するVIを作成しました。
VIを添付しましたのでご覧ください。
DAQで測定した波形も添付いたしますのでご覧ください。
困っているのは、都度出力される周波数が求める値と異なることです。
毎回ある程度キレイな波形が測定できていると感じるのですが、周波数は的外れです。
安定した周波数が導き出されるには、どうすれば良いのでしょうか?
フィルターが最適なものでないのかな?と感じているのですがどうなのでしょうか?
フィルターは、バンドパスフィルター・IIR・楕円・次数5を設定しています。
いろいろ試しているのですが、うまくいきません。
フィルターを修正するのは、検討違いなのでしょうか?
アドバイスをいただけたら助かります。
08-21-2010 06:53 AM
08-22-2010 09:11 PM
xyzz様
返信いただきありがとうございます。
FFTやフィルターに関してばかり考えていたので、お教えいただいた波形整形の視点で考えてみました。
早速、実機にて検証しましたが、測定する度に振幅・周期が微少ながらも変化するため
安定した結果にはなりませんでした。
読み飛ばし数・閾値を自動で微調整するプログラムで
正確にパルス波に変換できれば良いのですが、ノイズの影響もあるため苦慮しています。
08-22-2010 10:39 PM
フィルターの事は良く解からないので間違っているかもしれませんが、
ローパスフィルターとかハイパスフィルターで可能なような気もしますが?
08-22-2010 10:44 PM
画像忘れていました。
08-23-2010 01:36 AM
08-23-2010 03:20 AM
xyzz様
多くの返信をいただき本当にありがとうございます。
理想の動作には、まだまだ工夫が必要なようです。
これから色々試してみます。
その上で、また疑問など出ると思うので質問させていただきます。
08-23-2010 03:34 AM
必要ないかもしれませんが
移動平均のテストが出来る物をUPしておきます。
8.2形式で保存しています。
追伸
波形データがUPしてあると、シュミレーションし易く、他の人も返信し易いと思います。
08-23-2010 07:58 AM
takizawa様、xyzz様
横槍で恐縮です。
当方、ver6iのため、viを開くことはできませんが、今回のケース、「毎回ある程度キレイな波形が(連続で)
測定できている」ということで、最初の絵に示されているようなデータが得られているのでしたら、
生データのまま、そこに含まれている周期成分を抽出する手法として、「自己相関」を使うという手もあります。
自分自身をずらしながら(時間遅れを作りながら)掛け算して総和を取ると、周期分だけずれたところで
その値は大きくなります。
添付は、いくつかのサンプル波形を準備してあり、これに若干のノイズを加えて、自己相関による周期成分の抽出を
行ったものです。デフォルトの「サンプル」波形は、takizawa様の絵のデータを、それらしく勝手に再現したものです。
(xyzz様がおっしゃるように、波形データの数値ファイルがあると、他の人も試みやすいかと・・・)
生データの自己相関を時間遅れに対してプロットすると、周期的に値が大きくなります。これをピーク検出すると、
周期が得られます。最短周期・倍周期・3倍周期・・・と得られるので、一番小さいものを取ればOK。
最も相関が強いのは「自分自身(=時間遅れゼロ)」なので、その時の値の90%などを閾値にしてピーク検出すると
良いかと思います。データの最後まで重ねると、重なりが小さくなるので誤差が大きくなりますが、データに3周期程度
含まれていれば、最短周期はだいたいとれると思います。
この方法は、1周期に含まれる周波数成分や波形の特徴に依存せず、生データがそのまま使えて、
フィルタを通す必要もないため、多少は融通が利くと思われます。
ただ、自己相関をピーク検出するなら、元データでピーク検出しても良いではないか・・ということもありますが
(特に今回のようなデータはそうですが)、添付のviの波形サンプルにも入れたように、「1周期内に同じような大きさの
ピークが複数ある」ような場合は、元データのピーク検出ではうまくいかない場合があります。でも自己相関を取れば、
とにかくきっちり重なる周期で値が大きくなるので、周期が得られる、という仕組みです。
いろいろ試した感触では、自己相関による周期の抽出は、「単一の正弦波ほどニガテ、急峻な変化があるものほど得意」
という印象です。単一の正弦波は、自己相関も正弦波であり、そのピーク検出は元データのピーク検出と同じことですし、
少しずれた程度ではまだまだ強い相関があるので、周期を抽出するのは不得手になるようです。不得手というより、
正弦波の場合、なぜか微妙に値がずれますね・・・まあ、正弦波に対して自己相関で周期を出すことは無いと思いますが・・・
波形により得手不得手がありそうなので、あくまで参考として試してみていただければと思います。
※波形によっては、あるいは重畳しているノイズの大きさによっては、検出に失敗することもあります。
今回のviでは、倍周期・3倍周期などは捨てているので、拾えた成分全部使って演算すると、もう少し確度が上がるかも?
08-23-2010 09:32 PM
M.Shiraishi 様
いつも有難うございます。
私にはまったく思いつかない方法で勉強になりました。
と言っても、文字で説明している内容がザックリわかっただけで、
理解は全然出来ていません。
自己相関を腑に落とせる様に勉強しようと思いました。
余談
周波数を測定するだけなら、他にも色々な方法が有りそうなので
それらも見てみたいです。