「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



ずいぶん前に、温度センサLM35をarduinoに
繋いで温度を計って
みましたが、LM35は
ノーマルではマイナスの温度が計れません。
って訳で、以前秋月でLM60も買い置きをして
ありました。袋に入れっぱなしでしたが…

LM60は-40℃から+125℃まで
測ることが出来るし、S8100Bよりも出力
インピーダンスが低いので扱いもラクなはず。
便利そう。

ってことでスケッチを書いてみます。以前の
LM35用を流用します。いつものとおり
reduino-nano用なので、LEDはデジタル3ピン
に繋がっている前提です。適宜13番などに
変更して使って下さい。あと、for文のところの
不等号が全角になってるので、直して使って
ください。


int ledPin = 3; // select the pin for the LED
int analogpin0 = 0; // select the pin for analog0 input

double max = - 424.0 / 6.25; // temperature at ADC=0

int data = 0; // input data from ADC
int summary = 0; // summary of input data
int i;

double t_value; //temperature value


void setup() {
analogReference(INTERNAL); //use internal 1.1v reference
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
Serial.begin(9600);

Serial.println("start");
Serial.println((int)max);
}


void loop() {

digitalWrite(ledPin, HIGH);
delay(1800); //1.8s//

summary = 0;
for(i=0;i<50;i++){
data = analogRead(analogpin0); //read data from analog0 pin
summary = summary + data;
delay(2);
} //0.002*50 = 0.1s//

Serial.println(summary/50);
t_value = ((double)(summary)/50.0 /1024.0 * 1100.0 / 6.25) + max;

Serial.println((int)(t_value+0.5)); //round off

digitalWrite(ledPin, LOW);

delay(100);
}


maxという変数は、adcの入力値=0の時に
該当する温度です。つまりY切片ね。

LM60は-40℃から125℃の間は
出力が直線になるように補正されているらしい
ので、adcの入力値に傾きを掛けてから
Y切片を足せば温度が求まるというわけ。

例によって50回サンプルして平均取ることで
ノイズを均しています。

実行すると最初に「start」と同時に表示される
のがY切片。adcの値が0の時に-67℃という
ことと同じ意味。(実際はそこまで計れませんが)



その次からは2秒置きにadcの測定値と該当温度
が表示されます。
表示されているのはとりあえず整数部だけ。
adcの参照電圧は内蔵1.1Vを適用しているので、
計れるのは0V~1.1V。ってことは
約108℃までしか計れません。でもまぁ
そこまで計れれば充分でしょう。

表示される温度はLM35の時よりも、
部屋にあるほかの温度計になんとなく近い
温度になってるみたい。
データシート上は±3℃の誤差を含むみたい
ですが、かなり正確な雰囲気。

まぁ、そもそもarduino(というかmega168)の
内蔵1.1V参照電圧ってデータシート上は
最大0.1Vの誤差を含んでいるので、
LM60の誤差だけでなくむしろそっちの方が
大きな誤差を生じそう…。

LM60の精度を最大限活かすには、もっと
正確な外部参照電圧を使う必要がありそうですが、
arduinoは外部参照電圧とは相性が悪いんですよね…

まぁ、arduinoならそこそこの温度が判れば充分
でしょう。多少誤差があってことだけ抑えておけば
まぁ使えるのでは?


http://nekosan0.bake-neko.net/connection_thermo.html
↑全然書き進めてなかったことに気付きました。
せっかくなのでLM35、LM60、S8100B
についてまとめておこうと思います。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする



« カメレオンレ... 指に取り付け... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。