2012年3月16日金曜日

温度センサーLM60を使ってみる



Arduinoで温度センサーIC LM60を使ってみます。
測定範囲は-40℃~+125℃
動作電源電圧+2.7V~+10V
出力電圧+174mV~+1,205mV
+6.25mV/℃でリニアに変化
0℃で424mV出力

◆Arduinoのスケッチ
const int analogInPin = A0;
int sensorValue = 0;
float offset = 0.424;         //offset 424mv(0℃の時424mVを出力)
float vc = 0.00625;           // +6.25mv/℃
float v = 0.0;
float temp = 0.0;
float vref = 5.0;             //参照電圧5Vの時(USBの5Vはいいかげん)
//float vref = 1.1;           //参照電圧1.1Vの時

void setup() {
  Serial.begin(9600);
  //  analogReference(INTERNAL);  //参照電圧1.1Vにする時
}

void loop() {
  sensorValue = analogRead(analogInPin);
  v = float(sensorValue) / 1024 * vref;
  temp = (v - offset) / vc;
  Serial.print("sensor = " );
  Serial.print(sensorValue);
  Serial.print("\t Volt = " );
  Serial.print(v, 4);
  Serial.print("\t TEMP = ");
  Serial.println(temp);
  delay(1000);
}





室温を測ったところ、他の温度計とほぼ同じでした。 これはノートPCの排気口あたりにおいてみた時のキャプチャ(参照電圧5V)
(ノイズの多い環境下ではコンデンサーの設置を推奨しています。今回は省略)


参照電圧の事いまいちわからなくて調べながらです。
要はアナログ入力の0~1,024を0V~5V(デフォルト)、0V~1.1V(内部参照電圧)、又は外部参照電圧に対応させるかという解釈でいいんでしょうか。
デフォルトの5Vだとアナログ入力の分解能が5V÷1024≒4.88mV、 analogReference(INTERNAL);で1.1Vにすると、1.1V÷1,024≒1.07mVで測定できると。
LM60は+6.25mV/℃なので 参照電圧5V(分解能4.88mV)だと温度の分解能は約0.78℃(4.88mV/6.25mV)、
参照電圧1.1V(分解能1.07mV)で約0.17℃(1.07mV/6.25mV)。
ただ出力を1.1Vまでしか測れなくなるので108.16℃までしか測れないということですよね。

3.3V出力をAREFに入れれば、センサの最大出力1205mVをカバーできますね。
(抵抗挟んだほうがいいのかな?)
とすると、
参照電圧3.3V(分解能3.22mV)、温度は約0.51℃(3.22mV/6.25mV) で出力されるのか。
電圧が不安定なUSB5V使うよりずっといいですね。

計算あってます?自信なくなって来ました。


次はLCDに表示させたり、リアルタイムクロックからの時刻情報と共にSDカードに保存したりしましょうか。


環境:Arduino Uno、Arduino1.0

0 件のコメント:

コメントを投稿