温度センサーを使ってみる
目 次
温度センサーを使う
アナログタイプの温度センサー(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)
以上