前回のエントリで紹介した Massduino UNO Pro 、A/D コンバーターの動作を確認してみることに。
まずは Arduino IDE にボードを登録することから。これがけっこう難渋した。IDE のボードマネージャーでは確認できない。メーカーのホームページのダウンロードサイトから Arduino-Massduino_Support_Package_V51 パッケージを得てファイル、ドキュメントを確認。その中の For Arduino-1.6.6-Later 一式をダイレクトに Appdata¥Local¥Arduino15 以下の該当フォルダに書き込むことでなんとか動かせるようになった。
これも Arduino 1.8.8 でなんとか OK になって、最新の IDE 2.0 では追加できなかった。ファイルパッケージから Board を追加するやりかたがどこかに書いてあると思うのだが、これで動くようになったので深追いしない。
このボードを選んだのは A/D コンバーターの分解能が良いこと。オリジナルの Arduino の A/D コンバーターは 10 bit だが、この Massduino は 10 ~ 16 bit まで選択できる。
Ref 電圧を 2.048 V に設定すると、以下のような解像度になる
10bit : 2 mV/bit
12bit : 0.5 mV
14bit : 0.125
16bit : 0..031
Arduino のスケッチでは
// 10bit read
ADValue = analogRead (A0) ;
// 12bit read
ADValue = analogRead_12bits (A0) ;
こんなふうに指定する。
そこで、ブレッドボードに写真のようにセットして確認してみた。
ボードの 3.3V を分圧して アナログポートに入力してそれぞれの Bit 解像度で A/D する。電圧を細かく変えられるように多回転のヘリカル VR を使った。2秒間隔で連続測定した結果である。
パラに Advantest R6552 マルチメーターで測定して比較。
たぶんこちらが正しい値だと思う。Massduino ではすこし高い値が出ている。+0.3 % くらいの誤差というところか。
一方、Bit 解像度を見ると 10 bit では 2 mV/bit なので mV 以下の値は出てこない。それに対して 12 Bit 以上になると mV 以下の値が出ており、bit 解像度が上がっていることがわかる。
というわけで Massduino は 16 bit A/D コンバータをもつ Arduino UNO として機能することがわかった。
このようにサンプリングレートはさほど速くはないが十分に実用になると思う。