Arduino Unoのアナログ入力を使用してAD変換してみました。
分解能は10bitですが趣味の電圧測定には十分使用できるレベルです。
Arduinoとの接続方法からプログラムまで分かりやすく紹介します。
ArduinoでAD変換!分解能10bitで電圧測定してみた
Arduinoのアナログ入力に可変抵抗を接続してAD変換してみました。
分解能10bitですが、電圧測定できていることをテスター含めて確認しました。
「テスターでの測定」と「AD変換」の値が大体同じになっています。
Arduinoとの配線からプログラムの動かし方まで紹介していきます。
簡単なプログラムでAD変換値と電圧値の取得が可能です。
下記の動画だとテスターとAD変換の動きが分かりやすいので是非ご覧ください。
電圧値をしっかり読み取れていることが分かります。
Arduinoにはアナログ入力がある
Arduinoの特徴の一つとしてアナログ入力があり、Arduino UnoはA0~A5まで6chあります。
アナログ入力からAD変換して電圧値が読み取ることが可能です。
ラズベリーパイだとアナログ入力が無いため、AD変換は外付けのデバイスが必要です。
下記記事ではラズパイにUSBのAD変換ボードを接続する例を紹介しています。(リンク先はこちら)
ArduinoのAD変換の分解能は10bit
Arduinoには多くの種類がありますが、一番メジャーなArduino Unoの分解能は「10bit」です。
筆者はArduino Uno互換品を2種類所持していますが、もちろん両方とも10bitです。
※Arduino Dueなど分解能が12bitの製品もありますが、今回は省略します。
「電圧5V」で「10bit((2^10)分解能」のため、5V/1024≒5mV刻みのAD変換となります。
Arduinoで電圧調整しながらAD変換する
AD変換のテストをするために可変抵抗(10kΩ)を使って電圧調整を行います。
配線は市販の電子工作セットのブレッドボードとジャンパー線を使用しています。
実際の回路図イメージとしては下記形です。
「Arduinoからの5V」→「10kΩ可変抵抗」→「10kΩ抵抗」→「GND」で接続しています。
※「抵抗10kΩ」は特に深い意図はないです。無しでも大丈夫です。
今回の回路では可変抵抗を調整することで電圧値を2.5V~5Vに調整できます。
- 可変抵抗が10kΩのとき…電圧2.5V(AD変換値_511)
- 可変抵抗が0Ωのとき…電圧5V(AD変換値_1023)
テスターで電圧測定もしてみる
今回は単純にAD変換するだけでなく、テスターで電圧測定しながら実施してみます。
ブレッドボードにジャンパー線という工作レベルで何処まで精度が出るのか確認します。
今回使用しているテスターはHIOKI製のテスターです。
下記記事でも紹介していますが、非常にコンパクトで使いやすいです。(リンク先はこちら)
ArduinoにAD変換のプログラムを書いてみる
PCからUSB接続でArduinoにプログラムを書き込んで行きます。
Arduino IDEをインストールする
開発環境である「Arduino IDE」をPCにインストールします。
(ダウンロードのリンク先はこちらです。)
インストールしたら「ツール」からボードの項目で「Arduino Uno」を選択します。
AD変換のプログラムをArduinoに書き込む
今回使用したArduinoのプログラムは下記です。
アナログ入力の「0」ピンを読み取り、1秒間隔で表示する簡単なプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: float analog_0 = analogRead(0); float voltage_0 = (analog_0*5)/1024; Serial.print("ADC="); Serial.print(analog_0); Serial.print("\t"); Serial.print("V="); Serial.print(voltage_0); Serial.println(""); delay(1000); } |
プログラムを書き終えたら「スケッチ」から「マイコンボードに書き込む」を選択します。
コンパイルされて、ArduinoにUSB経由で書き込まれます。
シリアルモニタ経由でAD変換値を確認する
「ツール」→「シリアルモニタ」を選択することで、ArduinoのAD変換値が表示できます。
今回はシリアルポートの設定を「9600」bpsにプログラムしています。
シリアルモニタの右下の設定も「9600」bpsに設定します。
「AD変換値」と「計算された電圧値」が表示されるはずです。
ArduinoのAD変換値とテスターの電圧値を比較する
電圧調整して「ArduinoのAD変換値」と「テスターの測定値」を比較していきます。
冒頭でも紹介しましたが、動画だと可変抵抗を調整して電圧値が変わるのが良く分かります。
是非一緒にご覧ください。
比較したテスト結果
まずは可変抵抗が約10kΩでテスターが2.55Vを表示しているときです。
ArduinoのAD変換値は515、電圧値は2.51Vとなりました。
電圧調整後の可変抵抗が約0kΩでテスターが5.05Vを表示しているときです。
ArduinoのAD変換値は1023、電圧値は5Vとなりました。
数十mVの差はありますが「Arduinoの値」と「テスターの値」が大体同じになりました。
工作・趣味レベルのAD変換ならば筆者としては十分に満足です。
微妙にずれているのは下記項目が影響していそうです。
また精度必要な際には測定・計算含めて詰めていきたいとは思います。
- Arduinoの電圧が(PCからのUSB電圧)が5Vではなく、「5.05V」と若干高い
- テスターの測定箇所が悪い(Arduinoのアナログ入力直近で測定していない)
まとめ
今回はArduinoのAD変換に関して紹介させていただきました。
記事をまとめますと下記になります。
Arduino Unoがあれば簡単にアナログ入力・AD変換が可能です。
ハードウェアの勉強や趣味・工作にも十分に使えます。
次回の記事ではラズパイとArduinoを連携させてアナログ入力をプロットしています。
Pythonのプログラム含めて紹介しています。是非一緒にご覧ください。(リンク先はこちら)
コメント
Arduinoでもシリアルプロットでグラフ描けますよね。