第8回 温度センサーで室内の温度を測ってみよう

温度センサーで室内の温度を測ってみよう


温度センサー

温度センサーで室内の温度を測ってみましょう。 今回は、温度センサー(LM35DZ)を使用します。 以下の流れで学習していきます。 1) fritzingを使用して、配線図を作成 2) 配線図を見て、Arduinoとブレッドボードを配線 3) プログラムの作成 4) コンパイルと書き込みの実行


温度センサーで室内の温度を測ってみよう


温度センサー

温度センサーで室内の温度を測ってみましょう。 今回は、温度センサー(LM35DZ)を使用します。 以下の流れで学習していきます。 1) fritzingを使用して、配線図を作成 2) 配線図を見て、Arduinoとブレッドボードを配線 3) プログラムの作成 4) コンパイルと書き込みの実行

準備するもの


第8回で事前準備するものを紹介します。

項目名 個数
Arduino本体 1個 Arduino本体
ブレッドボード 1個 ブレッドボード
温度センサー(LM35DZ) 1個 温度センサー
ジャンパーワイヤー15cm(オス-オス) 3本 ジャンパーワイヤー15cm(オス-オス)

fritzingを使用して、配線図を作成


 fritzingを使用して、配線図を作成

fritzingを使用し、配線図を作成してみましょう。 Arduino、ブレッドボード、温度センサーのパーツを使用して配線します。 1) Arduinoの5Vと温度センサーの左側を接続 2) ArduinoのGNDと温度センサーの右側を接続 3) ArduinoのA0(アナログピン)と温度センサーの真ん中を接続

下記のボタンをクリックすると、fritzingを使った温度センサーの配線図の作成動画を確認できます。

温度センサーの配線図の作成

Arduinoとブレッドボードを配線


Arduinoとブレッドボードを配線

作成した配線図を見ながら、実際に配線します。

※ 温度センサーと接続する際に、5V(+)とGND(-)を逆に接続しないように注意して下さい。 間違えると、温度センサーが熱くなりやけどする場合があります。(故障する可能性もあり)

プログラムの作成


プログラム作成

温度センサーで温度を測るプログラムを作成していきます。 1) Arduino IDEを起動します。 2) ファイル → 名前を付けて保存をクリックして、今回は、tempと入力しファイルを保存します。 下記のボタンをクリックして、プログラムの作成動画を見ながら作成してみましょう。

プログラムの作成

プログラムの解説


プログラム解説

1行目~3行目では、アナログピンから読み取った値、電圧の値、温度の値を格納する変数定義をそれぞれ行っています。 6行目では、シリアル通信の初期設定をしています。 10行目では、analogRead関数を使用して、アナログ0番ピンを使用してセンサー値を読み取ります。 11行目では、map関数を使用して、センサー値を電圧に変換する処理を行います。 今回使用する温度センサー(LM35DZ)での例です。 この温度センサーでは、0度で0V、1度当たり10mvの出力が得られます。 20度で200mv、50度で500mv(0.5V)、100度で1000mv(1V)の出力が得られます。 Arduinoのアナログ入力最大電圧は5Vなので、最大500度まで計測できる計算になります。 以下のmap関数を使用して値を取得します。

map 関数

書式) map(value, fromLow, fromHigh, toLow, toHigh) 説明) 数値をある範囲から別の範囲に変換します。 fromLowと同じ値を与えると、toLowが返り、fromHighと同じ値ならtoHighとなります。 その中間の値は、2つの範囲大きさの比に基づいて計算されます。

まず、センサー値を電圧に変換するには以下のようにあてはめます。

map(取得したセンサー値, アナログ電圧の下限値(0), アナログ電圧の上限値(1023), 対応させる範囲の下限値(0), 対応させる範囲の上限値(5000))

アナログ電圧の下限値(0) => デジタル入力電圧の下限値0Vをアナログに変換した値(0) アナログ電圧の下限値(0) => デジタル入力電圧の上限値5Vをアナログに変換した値(1023) 対応させる範囲の下限値(0) => Arduinoの入力最小電圧の値、0を設定する 対応させる範囲の上限値(5000) => Arduinoの入力最大電圧に対応できる値、5000を設定する

12行目では、map関数を使用して、電圧を温度に変換する処理を行います。 次に電圧を温度に変換するには以下のようにあてはめます。

map(変換した電圧の値, 温度の出力電圧の下限値(-550), 温度の出力電圧の上限値(1500), 温度の下限値(-55), 温度の上限値(150))

各部品ごとにデータシートと呼ばれる仕様書が用意されているので活用しましょう。 秋月電子さんが販売されているLM35DZのデータシート => LM35データシート 今回使用している温度センサー(LM35DZ)の場合 温度センサー(LM35DZ) 13行目では、温度に変換したデータをシリアル通信で転送します。 14行目では、delay関数で1秒間処理を待ちます。

プログラムのコンパイルと書き込み


コンパイルと実行

プログラムの作成ができたら、コンパイルを行い、Arduinoへの書き込み処理を行います。 1) コンパイルを実行 → コンパイルアイコン をクリックします 2) アップロードを実行 → アップロードアイコン をクリックします 下記のボタンをクリックすると、プログラムのコンパイルと書き込み動画を見て確認できます。 プログラムのコンパイルと書き込み

動作確認


シリアルモニターを使用して、取得した温度を確認してみましょう。 Arduino側 ↓ Arduino側(温度センサー) 温度センサーのプログラムを確認しておきましょう。

int val; int vol; int temp; void setup() { Serial.begin(9600); } void loop() { val = analogRead(0); vol = map(val, 0, 1023, 0, 5000); temp = map(vol, -550, 1500, -55, 150); Serial.println(temp); delay(1000); }

以上、第8回までがArduino入門になりましたが、基本的な操作や使い方を学んで頂けたと思います。 今回紹介させていただいたセンサーや部品は、ごく一部なので他にもたくさんあります。 センサーによって、配線のつなぎ方や使うライブラリなどは異なりますが、基本的な部分は似ているので、他のセンサーなども試してみて下さい。