Wio BG770Aの研究8〜アナログ入力を理解する〜
Wio BG770Aの研究シリーズでは、Seeed社のLTE-M対応IoT開発ボードWio BG770Aについて、調査・検証した内容を共有しています。前回の記事ではデジタル入出力を取り上げました。今回は、アナログ入力の使い方を、実際のサンプルコードをもとに検証し、理解することを目指します。
なお、本記事は、SORACOM Advent Calendar 2024シーズン2にエントリーしています。
■ アナログ入力のコードを理解する
アナログ入力のサンプルコードを探すと、可変抵抗の値を読み取るgove-rotary-angle-sensor.inoが見つかりました。ここでは、このコードを通してアナログ入力のコードを理解していきます。
アナログ入力の分解能(ビット数)は、デフォルトで10ビットです。Wio BG770Aは、最大14ビットまで対応しているため、より細かく計測したい場合はビット数を変更します。
analogReadResolution(14); // 分解能(ビット数)を指定。この行がなければ10ビット。
analogRead()でアナログ入力ピンの電圧を読み取り、14ビットのデジタル値を取得します。
const auto rotaryAngleRaw = analogRead(ROTARY_ANGLE_PIN);
下記コードでアナログ値をデジタル値に変換します。最初このコードの意味がよくわかりませんでした。調べてみると、基準電圧が0.6V、デフォルトのゲインが1/6のようです。このため、0.6V x 6倍 = 3.6Vのときに2^14-1、つまり16383になります。
3.3V=16383ではなく、3.6V=16383であることに注意です!
const auto rotaryAngleVoltage = (float)rotaryAngleRaw / 16383 * 0.6f / (1.0f / 6);
サンプルコードでは、可変抵抗を用いた回転量センサーが用いられています。回転量がminのとき0Vが出力され、maxのとき3.3Vが出力されるため、得られた電圧値を3.3Vで割ることで、0〜1に正規化できます。
const auto rotaryAngle = rotaryAngleVoltage / 3.3f;
■ アナログ入力試験結果
アナログ入力の精度を知るため、試験を行いました。結果、理論値に近い近似式を得ることができました。以下詳細です。
◎ 試験目的
・アナログ入力の精度を知る
・AD変換の式として、理論式を用いてよいか確認する(背景として、M5StackのAD変換は理論式と実際の値に差があったため、Wio BG770Aは理論式を用いてよいか確認したい)
◎ 試験方法
・安定化電源で、アナログピンに0〜3.3Vを入力する
・テスターでアナログピンに入力されている電圧を計測する
・Wio BG770AのanalogRead()で16回読み取り、平均値をプロットする
なお、nRF52840の仕様書を見ると、アナログピンの最大許容電圧は3.3Vであるため、この電圧を超えないよう、注意が必要です!
◎ 試験結果
平均値をプロットとした結果が下記です。R2=1と、きれいな近似式になりました。理論式は、y = 16383/3.6x = 4551xであり、別途計算してみると、理論式と近似式のAD変換時の差はmVオーダーです。理論式を用いてOKですね。
生データを細かく見ると、0V〜1.0Vではややばらつきがあり、1.5V〜3.0Vは相当にばらつきが小さいです。
◎ 気になった点
アナログピンに3.3Vを入力したところ、平均15000強のanalogRead()値に対し、たまに14000強の値が取得されることがありました。なんでしょうか?
なお、今回の試験の範囲内において、3.0V以下ではこの現象は発生しませんでした。
■ アナログ出力は無い
アナログ出力の機能は無さそうです。アナログ出力したければ、別途DACモジュールを購入する必要がありそうです。
■ まとめ
今回の記事では、Wio BG770Aのサンプルコードを通して、デジタル入力を深堀りしました。以下がポイントです。
アナログ入力を理解する上で、gove-rotary-angle-sensor.inoが参考になる!
アナログ入力の分解能は標準は10ビットだが、14ビットまで対応している!
AD変換における基準電圧は0.6V、ゲインが1/6であるため、0.6Vx6倍=3.6VのときにanalogRead()の最大値となる!
試験の結果、AD変換の精度が高く、理論式を用いればOK!
アナログ出力の機能はない。アナログ出力したければ、別途DACモジュールを購入!
次回は、このアナログ入力の機能を用い、Wio BG770Aに供給される自分自身の電源電圧を計測する方法について、調べてみたいと思います。
ここまでお読みいただき、ありがとうございます!この記事が参考になった方は、スキ、コメント、フォローいただけると励みになります。
《 参考》
・Wio 770Aの研究シリーズの各記事を、マガジンにまとめています。
・grove-rotary-angle-sensor.inoの公式解説ページです。