Arduinoと戯れてみる!

Arduino 入門 番外編 05 【アナログ入力 とは】

arduino-extra-edition-05-00Arduino番外編
スポンサーリンク

Arduino 入門
番外編 05
【アナログ入力 とは】

こんにちはomoroyaです。

今回は、Arduino 入門 番外編 05 アナログ入力 とはです。

arduino 入門 番外編はarduinoの基本的なことを書いていく方向性にしたいと考えています。

本日は、arduinoのアナログ入力についてです。

追記
ご指摘を受け修正しました。
1023 -> 1024
データシート記載の計算式でも1024となっています。

居酒屋ガレージ店主」さんありがとうございました。

 

その前に、arduinoの外観とピン配置を確認することをおすすめします。

 

デジタル出力、入力に関してはこちらを確認ください。

 

アナログ出力に関してはこちらを確認ください。

arduino自身のことを少しづつ理解して行きましょう。

 

いやいや、arduinoを早速始めたいんだ!というかたは下記の入門編からお読みください。

 

Arduino入門編の解説にて使用しているArduinoは互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

正規品の本体単品がほしい方はこちらとなります。

 

スポンサーリンク

Arduino アナログ入力ピン

番外編02のおさらいです。

Arduino UNO R3の外観図を下記に示します。

外観図左下にあります。

アナログ入力と書かれているところです。

A0、A1、A2、A3、A4、A5、A6がアナログ入力ピンになります。

arduino_uno_R3-appearance

 

アナログ入力ピンは名前の通り、アナログ値を読み取るためのピンです。

アナログって何?

wikipedia アナログ

アナログ(英: analog英語発音: [ˈænəˌlɔːg] ナローグ)は、連続した量(例えば時間)を他の連続した量(例えば角度)で表示すること。

単純に言えば、連続した量であったり、永遠と続く無理数の値といったところでしょうか?

例えば「時間」。

時間は永遠と続く連続した量ですよね。

 

また、乾電池の電圧は「1.5V」で表現されますよね。

しかし、実際には「1.49875・・・・・・」と永遠に続いているはずです。

 

ところがコンピュータの世界は「0」と「1」の2進数の世界で表現されています。

いわゆる「デジタル」ってやつですね。

このままでは、無理数で表現されている「アナログ値」は扱うことができません。

そこで、登場するのが「A/Dコンバータ」です。
※「Analog-to-Digital Converter」アナログーデジタル変換回路

wikipedia アナログ-デジタル変換回路

アナログ-デジタル変換回路(アナログ-デジタルへんかんかいろ、A/D変換回路)は、アナログ電気信号をデジタル電気信号に変換する電子回路である。A/DコンバーターADC(エーディーシー)、英語: Analog-to-digital converter)とも言う。

 

この「A/Dコンバータ」は世の中のあらゆるところに存在します。

なぜか?

それは人間が「アナログ」だからです。

「人間:アナログ」と「コンピュータ:デジタル」をつなぐ。

そためには「A/D」コンバータで変換して人間の動作をコンピュータにわかってもらう必要があるわけです。

最近はやりの自動運転も、センサから得られたアナログをデジタルに変換してコンピュータ処理しているわけです。

 

Arduino ADコンバータ

Arduinoには「10bit A/Dコンバータ」搭載されています。

この場合、分解能が10bitあるということです。

10bitの分解能って何?ということですが。

10bitで表現できる2進数は以下となります。

「0000000000」 ~ 「1111111111」

全部で1024種の組み合わせがあります。
※計算方法 2^10 = 1024

 

Arduino UNOの電圧の「5V」に当てはめて考えてみます。

5÷1024=約4.88mVの分解能を持つということになります。

「電圧」、「2進数」、「10進数」の関係を表すと下表のようになります。

入力電圧[mV]2進数10進数
0.00 ~ 4.880000000000
4.88 ~ 9.760000000001
・・・・・・・・・
4990.24 ~ 4995.1211111111101022
4995.12 ~ 5000.0011111111111023

※わかりやすく表現したもので、実際の値とは異なる場合もあります。

正確な値を計算する場合は、Arduinoの5V電源の電圧をテスタなどで測定してください。

実際は、5Vではありません。

 

アナログ入力

アナログ入力は、外観図のアナログ入力0,1,2,3,4,5の端子が対応しています。
※A0、A1、A2、A3、A4、A5、A6

対象のピンに電子パーツを接続することで端子電圧を測定できます。

また、アナログ入力の読み取りには100マイクロ秒(0.0001秒)要します。

最大の読み取りレートは,1秒間に10000回(1万回)です.

 

使用する制御コマンドは以下です。

analogRead(ピン番号)
ピン番号:読み取るピン番号を指定(0,1,2,3,4,5)
戻り値 :0~1023までの整数値

読み取った値は0から1023までの整数値に変換されます。

そのため電圧を求める場合は計算をさせてやる必要があります。

 

以下で計算します。※5Vの場合

戻り値から電圧の値を求める
戻り値 ÷ 1024 × 5[V]
求められる電圧は1LSB(4.88mV)の分解能しかないことに注意してください。

精度を少しでもあげたい場合。

5Vの値は、Arduinoの5V電源の値をテスタなどで測定した実際の値を入れてください。

 

例 アナログ入力3(A3:ピン番号3)の値を読み取り電圧値を計算

int val;
float volt;
val = analogRead( 3 );
volt =  (float)val / 1024.0f * 5.0f;

ここでfloatを利用しているのは計算のオーバーフローを避けるためです。

 

簡単なサンプルコードがこちら。

//sample code extra-lesson05 analogRead()
int analogPin =3; //アナログ入力ピンを3番に設定
int val = 0; //読み取り値の変数設定
float v_convert = 0.0f; //計算値の変数設定、オーバーフローしないようにflaot設定

void setup() {
Serial.begin(9600); //シリアル通信のデータ転送レートを9600bpsで指定。bpsはビット/秒。
}

void loop(){
val = analogRead( analogPin ); //ピンの値を読み取り
v_convert = (float)val / 1024.0f * 5.0f; //読み取った値を電圧に変換、floatで計算

Serial.print( "value / volt : " ); //表示をプリント
Serial.print( val ); //読み取り値を表示
Serial.print( " / " ); //表示をプリント
Serial.println( v_convert ); //計算した電圧値を表示、改行

delay(500); //500m秒(0.5秒)ごとに表示させるための遅延
}

 

ポテンショメータを使用すれば、analogRead()関数の使い方を簡単に理解することができます。

ポテンショメータとは「可変抵抗器」のことです。

可変抵抗器の出力の電圧を読み取ることをすれば実践できそうです。

 

Arduino 入門のLesson編にポテンショメータを使った実践の解説を記事にする予定です。

Lesson編の記事を更新しだい、ここにもリンクを貼りますのでしばらくお待ちください。

 

次回の番外編 06は「I2C通信」の解説を予定しています。

Arduino 入門 番外編 06 【I2C通信 とは】
今回は、「Arduino 入門 番外編 06 I2C通信 とは」です。arduino 入門 番外編はarduinoの基本的なことを書いていく予定です。今回は、arduinoの「I2C通信」について解説していきます。…

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分)一般プライム会員
5,000円~19,999円0.5%1.0%
2,0000円~39,999円1.0%1.5%
40,000円~89,999円1.5%2.0%
90,000円~2.0%2.5%

さらに、初回チャージで1000ポイントもらえるキャンペーンも実施中!

\Amazonギフト券 1000ポイントキャンペーン/
Amazonチャージ 初回購入で1000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

コメント

タイトルとURLをコピーしました