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

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


    温度センサー

    温度センサーで室内の温度を測ってみましょう。 今回は、温度センサー(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入門になりましたが、基本的な操作や使い方を学んで頂けたと思います。 今回紹介させていただいたセンサーや部品は、ごく一部なので他にもたくさんあります。 センサーによって、配線のつなぎ方や使うライブラリなどは異なりますが、基本的な部分は似ているので、他のセンサーなども試してみて下さい。