今日も、ちっとだけArduinoのオシロを進める。
FFTの波形を、ちゃんと入力電圧範囲に合わせて、
dbVに換算してdb表示出来るようにしてみる。
なんと言っても、Arduinoはデバッガが無いので、
結局シリアル出力で変数眺めるくらいしかできない
のが、いつも困るところ。まぁ仕方ない。
んで、組み込んだ計算式では、思い通りの波形が
出てこないので、変数の値とか、計算式の途中の
値とかを表示しまくって、どこでバグってるかを
突き止めて行ってみる。
対数計算の勘違いとかあるのかなぁと思って、
その辺を集中して眺めてたんだけど、バグが
見つからない。想定した値が出ているっぽい。
じゃぁどこだ?と色々追いかけていってみると、
どうやら、求めたdb値から、LCDのY座標に換算
していくところの処理で、変なことやってたみたい。
LCDのY座標フルスクリーン48ドットが80dbに相等
するんだけど、なぜか80dbじゃなく、256で割り算
してたりして、これじゃぁレンジが合わないよなぁ
と。
あれだな。この間とりあえず表示させてみようって
時の名残だな。
んで、ここを直してみると、どうやら想定どおりの
レンジにちゃんと表示されてホッとする。
フルスイングで±10Vレンジ(5.0V/DIV)で、
こんな感じの波形を入力すると、
こんな感じの波形が出てくる。一番上が+20dbVで、
一番下が-60dbVの表示。
フルスイング±10V(=20Vpp)の正弦波を入力すると
仮定すると、
20 log10(20Vpp ÷ (2sqrt(2)) ) ≒ +17dbV
と出てくるので、大体あってるはず。2sqrt(2)で
割るのは、VppからVrmsへの変換。
横軸は100Hz/Div(フルスクリーンで400Hz)なので、
50Hz付近に+20dbよりちょっと低いピーク。+17db
くらいで出てるので、計算とほぼ一致。倍音成分も、
なんとなくそれなりに出てる。
さらに、
もう少し振幅の小さい波形を入れると、
こんな感じに。うん。イイカンジ。
ちなみに直流(-10Vを想定)を入力してみると、
こんな風になる。サイドローブがちょっと広い
気もするなぁ。電源とかから回り込んでいる50Hz
のノイズでも混ざってるのかなぁ。
ちなみに、電圧、サンプル周波数とも、他のレンジは
あまり細かくチェックしてないけど、多分それなりに
動くはず。
んで、あと残っているのはUI周りだけだとばかり
思ってたんだけど、よく考えたら、トリガ条件の
ところはまだまだ中途半端なコードしか書いてない
んだった。
まぁ、色々やることあるから、ちょっとずつ進めよう。
http://headlines.yahoo.co.jp/hl?a=20140518-00000523-san-bus_all
トヨタのアトキンソンサイクルって、またこの間の
パチモノアトキンソンじゃぁないの?これ。
ちゃんと、ホンダのEXlinkみたいに、廃棄行程と
圧縮行程で、ストロークが変化する仕組みなの?
http://clicccar.com/2011/05/23/26401/
|