わかめの開発日記

ArduinoやRaspberry Pi で作ったものを紹介します

Arduinoを使って温度を測定する

f:id:wakamelab:20200620154436j:plain

Arduinoを使って温度センサーから温度を取得する

こんにちは、wakamelabです。
Arduinoと温度センサー LM35DZ を使って温度を測定する方法を紹介します。

使用するもの

Arduino UNO 本体:1個
・USBケーブル:1本
・温度センサー LM35DZ:1個
・ブレッドボード:1個
・ジャンパーワイヤ(オス-オス):3本

温度センサー LM35DZ について

f:id:wakamelab:20200620114028j:plain

では、温度センサーのLM35DZを使用して、温度を測定する方法を説明します。
LM35DZの特性を見てみましょう。
f:id:wakamelab:20200620114251p:plain
これはLM35DZのデータシートの抜粋です。
上から3番目の項目、LM35Dに記載されているように、測定可能な範囲は0℃~100℃です。

f:id:wakamelab:20200620115231p:plain
データシート中のパラメーター設計を確認します。
これによると、LM35DZの出力は10mV/℃ということがわかります。
どういうことか説明すると、このセンサーは温度1℃につき、10mVを出力するという意味です。
つまり、温度が10℃の時は100mV、50℃の時は500mV、100℃の時は1000mV(=1V)を出力するという意味です。
LM35DZは、0~100℃の測定値を0~1000mVの電圧に変換して出力するセンサーとなります。

このように、測定した値を電圧に変換して出力するセンサーのことをアナログセンサーと言います。
代表的なものに、温度センサー、湿度センサー等があります。

逆に、測定結果によってON/OFFを出力するセンサーのことをデジタルセンサーといいます。
代表的なものに、タッチセンサー、人感センサー等があります。

アナログ値をArduinoで読み取る方法

温度センサーの特性は理解できましたか?
Arduinoで温度を測定するには、温度センサーから出力された電圧値を読み取り、それを温度に変換すれば良いことが分かりました。
ここからは、Arduinoを使って電圧を読み取る方法を紹介します。

f:id:wakamelab:20200620121058j:plain
Arduino本体の右下に"ANALOG IN"と書かれた、A0~A5の端子があります。
この6つの端子が、電圧値つまりアナログ値を読むことができる端子です。
これらの6つの端子は、0~5Vのアナログ値を読むことができます。
プログラムを書くときのピン番号は、A0が14番、A1が15、A2が16、A3が17、A4が18、A5が19番です。

センサーの出力ピンをA0~A5のどれかに接続することでアナログ値を読むことができます。

温度測定のプログラム

ここからは、実際にプログラムを書いてみましょう。

#define THERMO_IN 14  //A0に温度センサーを接続

void setup() {
  pinMode(THERMO_IN, INPUT);  // A0をインプットに設定
  Serial.begin(115200);
}

void loop() {
  float thermo;
  float thermo_sens;
  
  thermo_sens = analogRead(THERMO_IN); //センサー値取得
  thermo = ((5*thermo_sens)/1023) * 100; //電圧を温度へ温度へ変換

  Serial.print("温度は");
  Serial.print(thermo);
  Serial.println("℃です");
  delay(1000);
}

プログラムの説明を行います。

#define THERMO_IN 14  //A0に温度センサーを接続

温度センサーの出力端子をArduinoのA0ピン(14番ピン)に接続するための定義です。

  pinMode(THERMO_IN, INPUT);  // A0をインプットに設定

温度センサーから出力される電圧値を読み取るため、A0ピンをインプットに設定しています。

Serial.begin(115200);

このプログラムでは、シリアル通信を使い温度をPCの画面上に表示します。
これはシリアル通信を始めるための宣言です。
ボーレート115200bpsで通信を行います。
シリアル通信について詳しく知りたい方は、以下の記事を参考にして下さい。
wakamelab.hatenadiary.com

  float thermo;
  float thermo_sens;

floatというのは、小数点を扱うことができる型です。
温度を計算する過程で小数点が発生しますので、使用する変数も小数点を扱える型で宣言します。

  thermo_sens = analogRead(THERMO_IN); //センサー値取得

analogRead()関数を使用して、ピンの電圧値を読み込んでいます。
使用方法は、analogRead(ピン番号)として使用し、指定したピンの電圧を読み取ります。
この場合、温度センサーの出力を接続したA0ピンの電圧を読んでいます。

  thermo = ((5*thermo_sens)/1023) * 100; //電圧を温度へ温度へ変換

analogRead()関数を使用して読み込んだ値を温度に変換しています。
まず、analogRead()関数では、0~5Vの電圧を0~1023に変換しています。
つまり、5×(thermo_sens/1023)の計算によって、analogRead()関数で読み取った値を0~5Vの電圧に変換しています。
この温度センサーの出力特性は、10mV/℃でした。電圧値に100を掛けることで、電圧を温度に変換できます。
この計算全体としては、analogRead()関数によって読み取った0~1023という値を温度に変換しています。

  Serial.print("温度は");
  Serial.print(thermo);
  Serial.println("℃です");

測定した温度をシリアル通信によって出力ています。
(温度は25℃です)という形にして出力するための処理です。

配線図紹介

プログラムの紹介も終わりましたので、実際に配線しましょう。
配線は以下の配線図の通りです。
f:id:wakamelab:20200620145808p:plain

LM35DZは上から見ると、円を途中で切り取ったような形をしています。
端子は切り欠きの方を手前側に置いた状態で、左から、5V、出力、GNDとなっています。

プログラムの実行

接続も完了した所で、プログラムを実行してください。
このようにシリアルモニタ上に出力されれば完成です。
f:id:wakamelab:20200620150214p:plain

温度センサーを触ったりしてみて、温度が変化するかどうか試してみて下さい。
これで温度測定の方法の紹介は終了します。

Arduino 温度計製作キットの紹介

当社では、Arduinoを使用した、プログラミング、電子工作初心者向けの学習キットを販売しております。
この記事に記載した温度センサーを使って温度計を作るキットもありますので、ご興味あれば是非購入をお願いします。

ホームページ:
www.wakamelab.com

販売サイト:https://wakamelab.thebase.in/items/10739518

メルカリ:https://www.mercari.com/jp/u/170119900/