【電子工作】Arduino UNOのアナログ入力で電圧を測定する方法

あらゆる計測の基本!Arduinoのアナログ入力機能を使ってみる!

アナログ入力で電圧計測をする意味

このページではArduino UNOを使って電圧を測定する方法を説明します。

Arduinoは小学生の自由研究にも使えるくらいわかりやすい使い勝手ということもあり、Hello Worldプログラムで動作確認をした後は、単純な電圧計測をすることが次の一手として良いのではないかと思い記事にしています。

Hello Worldプログラムの記事はこちら

世の中の多くのセンサーはその物理量の変化を電圧で出力しており、その計測した電圧値を校正して意味のある物理値を得ます。

そのため電圧計測はあらゆる計測の基本となりますね。

難しいプログラムに手を出す前に、基本から積み上げていきましょう!

(というか自分も基礎が不足しているので、色々確認してスキルアップして行きたいと思っています。記事としてアウトプットするのは自分と同じような基礎を知りたい人のためのメモ的な意味もあります…。)

用意する物

PC

Arduino IDEを使ってプログラミングとArduinoのマイコンへの書き込みをするために使います。

Arduino

今回は電圧の値を読み取る測定器として使います。PCとの接続にはUSBケーブルが必要です。詳細は前の記事を参照下さい。

電圧を計測するだけなので、今回はANALOG INと書いてある部分とGND部分のみを使用します。

ブレッドボード

電気回路を実際に組むために使用します。はんだ付けをするような物だと一度配線したら再利用はできませんが、ブレッドボードを使うことで間違えても外すことができるため、簡単に実験したい時にオススメします。

ジャンパー線

ブレッドボードやArduinoに接続する時に使います

色々な長さや色があり、以下の写真のような線を使うと被覆を剥く必要も無く楽です。

テスター

回路が想定通りの値を出しているか、検証に使います。個人的には秋月電子通商さんから出ている以下のテスターが使いやすくて小型軽量のためオススメです。

電気抵抗

電圧を調整したり、電気の流れを調整したり、何かと多用するため、電子工作をする時は一式あると便利です。

僕は以下のファイルに抵抗値違いでファイリングしています。こうしておくと嵩張らなくて、本棚に入れておけるしオススメです。

測定対象物

電圧を測る対象物を用意します

本当は電池ボックスでやりたかったのですが、どこにも見当たらなかったので一時期周りで流行ったミニ四駆を使います。単純に、電池の電圧測定を行うだけ。

タクトスイッチ

本当は無くても良いのですが、なんか手元にあったので使います。

スイッチを押している時に電圧が高くなるようにします。

電気回路を組む

用意した物で電気回路と測定系を組んでみます。

(電気は本当に初心者なので少し汚いかも…。)

ArduinoのANALOG INとGND部分を使います。

タクトスイッチ周りのアップです。抵抗器は1kΩを使って余分な電流をGNDに落とす目的で使っています。

(これないとノイズが乗って、計測結果が安定しなかったので…もっと詳しい方はうまく説明できるかも)

写真だけだとわかりにくいと思いますので、Fritzingで配線図描いてみました。Fritzing使うとスッキリ

Fritzingの公式ページ

Fritzingについて知りたい方は、こちらの記事もオススメです。

 

Arduinoのスケッチを書く

Arduinoのプログラムコードはスケッチと呼ばれます。

以下にArduino IDEで記述したスケッチを記載します。

スケッチの説明

スケッチは神崎康宏著の「Arduinoで計る,測る,量る」のP39を参考にしています。

1行目と2行目は変数の定義です。Arduinoのアナログ入力は0~1023の1024段階で計測されます。さらに1023の数値が5Vを表します。

aiというのがAnalog Inputで計測するint型の数値の入れ物(小数点無いやつ)です。

cal_aiというのは0~1023の数値をV(ボルト)の値にキャリブレーション(校正)した後の数値を入れる入れ物ですので、不動小数点を示すfloat型にしています。

void setup()とvoid loop()はなくてはならない関数です。

void setupの方にはシリアルポートの初期化の意味があります。

void loopの方にはHello Worldプログラムの時にも使ったシリアルへ情報を送るSerial.println以外にも、キャリブレーションを行う処理が書いてあります。

動作確認

こちらが動作確認結果(シリアルモニター)です。

タクトスイッチを押した時に1.52V、離した時に0.00Vを示しています。今回単三乾電池を一本使っているので、一応カタログ値は出ていると判断できますね。

念のためテスターでも確認した所、0.01V程度の差はあるものの、ほぼ同じ値を確認しました。

まとめ

おそらくこれが一番簡単なアナログ入力の使い方だと思います。

そしてまだこの回路には分圧回路を入れていません。乾電池が1.5Vだからいいか、という感覚だったのですが、通常モータやその他もっと複雑な計測をする場合、Arduinoの許容値を超える値が来た場合にArduinoを壊してしまうかも知れません

また、規模は小さくても電気は電気です。

火花が散って燃えやすい物に燃え移ることや、過剰な負荷がかかる配線、ショートによるPCの破損等、様々なリスクはありますので、十分気を付けて自己責任で工作をして下さい。

とは言え、この内容でArduinoを使ったアナログ入力の方法がわかりましたので、徐々にステップアップして面白い物を作っていけたらと思います。