ひさびさに技術の話。
とあるテーマで、センサのアナログ信号を16ビットADカードでパソコンに取り込むことになった。
当然、WindowsリアルタイムIO制御「MOS Bench(モスベンチ)」でサポートされているCONTEC社16bitADカード「AD16-16U(PCI)EV」を使う。
パラメータ設定で該当チャンネルを許可すれば、勝手に1msサンプリングをしてくれる。(上の画像の「アナログ入力チャネルの有効(1)無効(0)」の部分)
パラメータ設定で入力範囲を-10Vから+10Vの指定をすれば、16bitデータを[V]に変換してくれる。(上の画像の「アナログ入力チャネルの入力レンジの下限値-10.00、および、アナログ入力チャネルの入力レンジの上限値10.00」の部分)
また、パラメータ設定で移動平均回数を指定すれば、勝手に移動平均をしてくれて、平均後のデータを下図の画面表示しながら、ロギングデータファイルに12万行保存できる。
以下は、20回移動平均後の出力。この波形は、ロギングデータのcsvファイルをエクセルに読み込んで、編集したもの。
200ms間に12個の波がある。200ms/12=16.7ms。この逆数は、60Hz。ACラインのノイズが入っている。約2.5mVp-p。
1ms、すなわち1000Hzサンプリングなので、1000Hz/60Hz=16.7で、17回の移動平均をしてみる。
ちなみに、1000Hz/17=58.8Hz。
例によって、「MOS Bench」のパラメータ設定画面で、移動平均回数を17回に設定する。(下の画像の「アナログ入力チャネルのフィルタ段数」の部分)
以下は、17回移動平均後の出力。
ノイズの振幅は約1mVp-p。3LSBにわたって動いている。前述の波形に対して、1/2.5のノイズになった。
目標とする仕様から判断すれば、これで十分。
しかし、200ms間に5個の波がある。200ms/5=40ms。この逆数は、25Hz。