どうも、なかしー(@nakac_work)です。
僕は自動車や家電製品のマイコンにプログラミングをする仕事をしています。
今回は「ArduinoでA/D変換する方法」について紹介します。
A/D変換って何?
という方はこちらの記事にA/D変換について書いているので、先に読んだ方が良いと思います。
A/D変換の計算方法を解説【電子工作を始めた方向け】Arduinoはデジタル入力だと0Vか電源電圧しか取り込めませんが、A/D変換を使えば、0Vから電源電圧までの電圧を取り込めます。
えっ?何が違うの?
と思った方もいると思います。
温度センサは温度に応じた電圧(もしくは電流)を出力します。
電圧は2.7Vかもしれないし、3.4Vかもしれません。
そのセンサの電圧をデジタル入力で取り込むと、ArduinoはLかHのどちらかでしか認識できません。
温度センサ以外に、光センサや傾きセンサなども状態に応じた電圧を出力するのでA/D変換は必須です。
この記事では次の内容について紹介します。
- A/D変換の特徴
- Arduinoの接続方法
- Arduinoのプログラミング
動画でも解説しています。
A/D変換の特徴
A/D変換はアナログ値をデジタル値に変換する方法です。
変換には次の式を使います。
例えば、センサーの電圧2.4Vを基準電圧が5Vで分解能が10ビットのマイコンでA/D変換するときは、下のような計算をします。
計算をするとA/D変換したデータは「491」となります。
Arduinoの接続方法
今回は可変抵抗で0Vから5Vまで電圧を調整できる回路をArduinoに接続します。センサーを繋ぐ場合と変わらないので安心してください。
A/D変換を行う時の接続するポートは6つあって、A0からA5です。
Arduinoのプログラミング
プログラミングで大事な部分を説明します。
- analogRead(引数1)
詳しく解説します。
analogRead(引数1)
使い方は
変数 = analogRead(0)
今回はA0に可変抵抗を繋いだので、引数1に0を入力しています。
A/D変換したデータは10bit分のスペースが必要なので、int型で宣言した変数をしようしてください。
また、データは0から1023まで変化します。
Arduinoの中でデータを電圧に変換するときは
ArduinoのA/D変換の分解能は10ビットなので、データを1024で割ります。
float型で宣言した変数に計算結果を入れないとデータが0になってしまいます。
data = (analogRead(0) * 5) / 1024;
で計算するのがおすすめです。
ArduinoでA/D変換する方法|まとめ
この記事では「ArduinoでA/D変換する方法」について紹介しました。
- A/D変換はセンサの電圧をマイコンに取り込む時に使う
- ArduinoのA0からA5ポートに接続すればOK
- analogRead(ポート番号)でOK、データを入れる変数は注意が必要
Arduino関連の人気記事
>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】
>>Arduinoでできることを紹介【逆にできないことは何?】
当ブログで人気のArduino入門キット