温度センサーを使う

アナログタイプの温度センサー(LM61BIZ/CIZ)を使って気温測定をしてみます。

Arduino のアナログ入力機能の学習をします。

温度センサー

温度センサーに限らず定量測定センサーにはアナログタイプとデジタルタイプがあります、検知する素子そのものは同じなのですが、外部接続がアナログ(電圧値)か、デジタルかの違いです。

デジタルの方が精度が良いし、ノイズにも強いということで主流はデジタルなんですが、今回はArduinoのアナログ入力を学習したいということもあり、あえてアナログタイプを使ってみます。

主な仕様

・測定範囲:-25℃~+85℃(BIZ)、-30℃~+100℃(CIZ)
・温度係数:+10mV/℃
・精度:±2.0℃(@25℃)
・動作電圧範囲:+2.7~+10V
・出力インピーダンス:800Ω

LM61の出力ピンに温度に比例したDC電圧が出力される。

使用方法

①出力(温度)リード線をArduinoのアナログピンに接続する、アナログピンはA0~A7のどれでも可。(サンプルプログラムではA0を使用)

②Vccには+電源を接続、仕様としては+2.7V~+10Vが動作可能範囲なので、ArduinoのVccと同じ電圧の+5Vを接続する。

③読み取った電圧値を温度に変換するには、25℃=+3000mV、85℃=+1450mV、勾配を10mV/℃の一次式として計算することで得られる。

④変換にはArduino関数のmap()を使う。

(例)

sensorVout  = map(analogIn, 0, 1023, 0, 4600) ;

・analogIn=変換の元となる値。(この場合は10bit(0~1023))
・0,1023 = 現在の値(下限)、現在の値(上限)
・0,4600 =変換後の値(下限)、変換後の値(上限) (この場合、0V~4.6V)

temperature = map(sensorVout, 350, 1450, -25, 80) ;

・sensorVout=変換の元となる値。(この場合は350mV~1450mV)
・350,1450 = 現在の値(下限)、現在の値(上限)
・-25,85 = 変換後の値(下限)、変換後の値(上限) (この場合、-25℃~85℃)

Arduinoとの接続

ブレッドボードを使って回路を構成します。

温度センサーLM61BIZ/CIZの挿入向きは下の図を参考に。

参考に回路図も載せておきます

Arduinoプログラム

スケッチ作成

サンプルスケッチを載せます。


void setup() {
  Serial.begin(9600) ;
}
void loop() {
  int analogIn , temperature , sensorVout ;
  analogIn = analogRead(0) ;              // アナログ0番ピンからセンサー値を読込む
  sensorVout  = map(analogIn, 0, 1023, 0, 4600) ; // センサー値(デジタル)を電圧に変換する
  temperature = map(sensorVout, 350, 1450, -25, 85) ; // センサー電圧を温度に変換する
  Serial.print("AnalogInData=");
  Serial.println(analogIn);
  Serial.print("Vin=0.");
  Serial.println(sensorVout);
  Serial.print("Temp.=");
  Serial.print(temperature);
  Serial.println("℃");
  delay(1000) ;                      // 1秒毎に繰り返す
}

上記プログラム(スケッチ)の簡単な説明を書きました。

① int analogIn , temperature , sensorVout;   ⇒ 3個の変数(analogIn, temperature, sensorVout)をint型(符号なし16bit整数)で宣言する。

② analogIn = analogRead(0) ; ⇒ 変数”analogIn”にA0ピン入力の電圧値を10bitAD変換した2進数の形で代入する。

③ sensorVout  = map(analogIn, 0, 1023, 0, 4600) ; ⇒ analogInの値を電圧値(0v~4600mV)に変換してsensorVoutに代入。

④  temperature = map(sensorVout, 350, 1450, -25, 85) ; ⇒ sensorVoutの値を温度(-25℃~+85℃)に変換してtemperatureに代入。

動作させてみる

スケッチ作成が終了したらArduinoNanoボードにダウンロードして実行させてみましょう。

温度測定値はArduinoIDEのシリアルモニタ上に表示されます。

注)シリアルモニタの使い方はこちらの記事を参考に。

動作説明

温度センサーの測定デーがシリアル・モニタに表示される。
更新周期は1秒。

①温度センサーの出力は350mv~1450mVまで変化する。温度と電圧値は正比例する、350mV=-25℃、1600mV=+85℃の範囲を10mV/℃の勾配で出力。

②Arduinoのアナログ入力A0ピンに入力された電圧から温度への変換にはmap()関数を使用する。

③AD変換の測定幅は0V~Vrefという仕様であるが、デフォルトではVCC(=4.6V)

以上