Arduinoと温度センサーLM35DZを使って温度を計測する

eyecatch

ArduinoとLM35DZを使って温度を測定するためのスケッチを書いたので、スケッチとブレッドボード図を公開してみます。

ソースコード

作成したスケッチを以下に示します。測定した温度はシリアルに表示しております。

// Analog In A0を使用
#define IN 0

// Analog入力値
float analogInputValue;
// 温度
float temperature;

void setup() {
    //シリアルポートに接続、9600bit/秒でデータを送信
    Serial.begin(9600);
}

void loop() {
    // Analog In A0の値を取得
    analogInputValue = analogRead(IN);
    
    // Analogの入力値0~1024を0℃〜500℃にスケーリングして温度を算出
    temperature = map(analogInputValue, 0, 1024, 0, 500);
    
    // 温度をシリアルに出力
    Serial.print( temperature );
    
    // -55℃〜+150℃以外では測定範囲外であることをシリアルに表示
    if (temperature < -55 || temperature >150)  
        Serial.print(" (Out of range)");
    
    // シリアルに改行を表示
    Serial.print("n");
    
    // 1000m秒(1秒)待機
    delay(1000);
}

ブレッドボード図

今回のブレッドボード図は以下のような感じです。Arduino Uno、LM35DZ、0.1μFのコンデンサを使っております。

ArduinoとLM35DZのブレッドボード図

測定値(電圧)と温度のマッピング

以下の部分で、アナログの入力値について比例計算を行っています。

temperature = map(analogInputValue, 0, 1024, 0, 500);

LM35DZは0℃で0mVを出力し、温度が1℃あがるに従って出力が10.0mVずつ増えていきます。一方、Arduinoのアナログ入力は、0Vから5V(=5,000mV)までの電圧を1024段階で読み取ります。入力値xに対して500/1024*xが温度になるので、map関数を使って比例計算すれば良いですね。

また、LM35DZの使用範囲は-55℃〜150℃までなので、それ以外の温度では範囲外であることを出力しております。それをやっているのが以下のの部分です。

if (temperature < -55 || temperature >150)

実行結果

実行した結果を以下に示します。途中から温度が上がっているのは、指であっためたりストーブにかざしたりしているためです。なお、シリアルモニタを開くのは、Arduinoを立ち上げて、ツール > シリアルモニタとたどっていけば良いです。

Arduinoで温度測定

シェアしてもらえるとうれしいです。゚(´っωc`)゚。