2016/09/17

AVR ADC デバッグと AVcc キャパシティ効果

ADC 入力を短絡しても,オフセット電圧が測定されて面食らった。その値は 63(Decimal) デジットもあった。マルチプレクサからの漏洩電流ではなかった。高精度の電圧発生器 2.500V があるので,これを入力してもダメだ。データマニュアルを読み直したら,ADC Multiplexer Selection Register – ADMUX の設定がおかしかった。

H8/3694F の ADC だとスキャンモードがあり,いちいちチャンネルを切り替えるマルチプレクサを意識しなくてよかったのと違い,AVR だとチャンネルを設定しなければならない。

マニュアルには ADC レジスタ更新途中に書き換えないように待つのが簡単と記載されていたので, Delay を挿入したけど,関係がないようだ。しかも 10ms 以上の遅延を入れるのはポート動作によくないらしい。

10ビット ADC の値を得るには,8ビットとは取扱が異なる。

マニュアルあるには,AVcc とアナログ GND との間に 100nF のキャパシタを挿入するように書いてある。その影響を DSO の測定値を参照値として比較した。単位はmV。

9月14日 AD0 AD1 CH1 CH2 AD0-CH1 AD1-CH2
08:47:00 98  95  105 103   -7    -8
08:48:00 98  95  105 102   -7    -7
08:52:00 0   0   -3 6    3     -6
キャパシタ追加後
11:48  98  83  100  87.6  -2    -4.6
11:49  93  80  95.7   84.5  -2.7   -4.5
11:52  88  75  92.1   82.1      -4.1           -7.1
11:55  0   3   -3  6   3     -3
11:56   0        3            -3       6           3                  -3

キャパシタ追加前と後では,-7 ないし -8mV の偏差が-2ないし -7.1mV に改善されている。これら測定値は1Ω抵抗の電圧降下であり,電池の充電流でもある。私の劣化 NiCd だと 1.45V の定電圧駆動の場合,30mA 以下には下がらない。零点での 3ないし-3mA の誤差はR6形状電池の充電流測定に十分だろう。

2CH の測定記録のできる DMM は高価である。電圧レンジの切り替えの必要のない使用なら AVR の10ビット ADC は十分な性能がある。内蔵クロック 8MHz と内蔵の ADC 参照電圧 2.56V を用いたので,外付け部品はコネクタを除けば,4個のコンデンサだけである。面倒なので ADC 入力保護回路は省いた。基板は再利用のサンハヤトの ICB-86 を用いた。

DSO の測定条件は,100mV/div,10ms/div,AVG64,Measure:Mean である。AVR の方は何ら信号処理をせずに,この精度が得られたのはビギナにはありがたい。

AVR.jpg 

AVR による測定結果は USB シリアルコンバータを介してPCに表示する。そのアプリは Slip21 である。その画面の様子は私のサイトにある Slip21 のマニュアルを参照して欲しい。

参考
関連記事

コメント

非公開コメント