温度センサーであるLM35DZをArduinoに接続する。
赤ラインを5Vに,黒ラインをGNDに,白ラインをA0に接続する。
プログラム一式
注:現在LM35DZは入手性が悪くなっています。代替品(TMP36GT9Z)を使用する際は、「電圧を温度に変換(TMP36GT9Z)」行のコメントアウトを外して利用してください。
LM35DZ1
単純に温度を表示する。シリアルモニタ,シリアルプロッタで表示してみよう。
double vol,temp,gain;
void setup() {
Serial.begin(9600); // シリアル通信の初期化
analogReference(INTERNAL); //参照電圧を1.1vVに設定し感度拡大
gain=(double)1.1/(double)1024; //1.1Vリファレンス用のゲイン;
}
void loop() {
vol = analogRead(0)*gain;
temp=vol*100; //電圧を温度に変換(LM35DZ)
//temp=vol*100-50; //電圧を温度に変換(TMP36GT9Z)
Serial.print(vol); //電圧表示
Serial.print(",");
Serial.print(temp); //温度表示
Serial.println();
delay(100);
}
LM35DZ2
1000サンプルの平均温度を表示する。
double vol,temp,gain;
double sum,average;
void setup() {
Serial.begin(9600); // シリアル通信の初期化
analogReference(INTERNAL); //参照電圧を1.1vVに設定し感度拡大
gain=(double)1.1/(double)1024; //1.1Vリファレンス用のゲイン;
}
void loop() {
sum=0;
for(int i=0;i<1000;i++)
{
vol = analogRead(0)*gain;
sum=sum+vol;
}
average=sum/(double)1000; //1000回計測し平均を計算
temp=average*100; //電圧を温度に変換(LM35DZ)
//temp=average*100-50; //電圧を温度に変換(TMP36GT9Z)
Serial.print(average); //電圧表示
Serial.print(",");
Serial.print(temp); //温度表示
Serial.println();
delay(50);
}
LM35DZ3
1秒間隔でできるだけ多くサンプルし平均温度を表示する。
double vol,temp,gain;
double sum,average;
long t,t0,cnt;
void setup() {
Serial.begin(9600); // シリアル通信の初期化
analogReference(INTERNAL); //参照電圧を1.1vVに設定し感度拡大
gain=(double)1.1/(double)1024; //1.1Vリファレンス用のゲイン;
cnt=sum=0;
}
void loop() {
t0=t;
t=millis(); //現在時刻をms単位で取得
vol = analogRead(0)*gain;
sum=sum+vol;
cnt++;
if(t0/1000 !=t/1000){ //1秒(1000ms)毎に平均算出
average=sum/(double)cnt; //平均を計算
temp=average*100; //電圧を温度に変換(LM35DZ)
//temp=average*100-50; //電圧を温度に変換(TMP36GT9Z)
Serial.print(cnt); //サンプル数表示
Serial.print(",");
Serial.print(average); //電圧表示
Serial.print(",");
Serial.print(temp); //温度表示
//Serial.print(",35,25"); //25度と35度を表示
Serial.println();
sum=0;cnt=0;
}
}