2016年5月27日金曜日

ゆっくり計るADコンバータにはノイズが必要だってばさ

重さを量る秤だとか、気温を測る温度計だとかをコンピュータで計る場合、アナログ回路でセンサー値を電圧値にして、ADコンバータで計る事になると思う。このアナログ回路にはある程度ノイズがある必要がある。

この「ノイズが必要」という事を忘れた設計をしている人が多いので、この場で愚痴っておこうと思います。

実験

1000回のデータを計測してその平均を出力するとします。その時に乗るノイズが正規分布で標準偏差(sigma)を0〜1の間で変化させて見ました。ヒストグラムをプロットするとsigma毎にこんな感じになります。
sigma=0のときは0と1しか取らないです、sigmaが0.4,1.0と大きくなるにつれて広い範囲に分布しているのが見て取れます。

 1000回平均値

いよいよ本題です。ノイズの大きさによる平均値の出方の違いを見ていきます。横軸(入力)は0〜1まで0.2単位で変動していて、それにノイズが乗っています。縦軸はADコンバータで計測した平均値を各ノイズ幅(sigma)毎にプロットしています。
真値とAD平均値
sigma=0すなわちノイズが無い時(青線)は0か1しか取らないのでどれだけ平均をとっても真値0.1,0.2,0.3,0.4はAD値平均では0です。逆にsigma=1、すなわちノイズの標準偏差がAD1bit分の時はほぼ綺麗な直線で1000回移動平均とれば0.1単位の値が余裕で読める事がわかります。
sigma=0.2だと正規分布関数形状由来の歪みが出るので補正が必要です。補正の仕方はσの値の大きさによって変わるので、可能ではあるが少しやっかいという状態です。

結論

ADコンバータで電圧を読み取る時で、平均値を取る位時間に余裕がある時は電気回路側でノイズを載せてもらいましょう。その程度の設計は追加コストほぼ0で出来るはずです。載せる量は積算回数にもよるので一概にはいえないですが、安全をとってとりあえず標準偏差=1bit位を目指せばいいんじゃないでしょうか?その辺は業界によって常識的な範囲が変わってくると思います。

今回は電気の話でしたが、これ以外にも、ファームウェアでノイズ取ってます!系もやっかいですよね。「ちょ、勝手に捨てないでよ!ノイズの量を計測した後に信号処理したいだってば」って事、よくある、よくある。なんだろ、この親切が超裏目に出る感じ。


0 件のコメント:

コメントを投稿