温度の計測には、センサーとしてLM61CIZを使用してマイナスの気温も測れるようにしし、さらに湿度を測れる機能を追加することにしました。
湿度センサーには、GE Sensing社製のHS15Pがあり比較的安価に入手できますが、使用に当たっては制約があります。
HS15Pは交流信号を加え、湿度によりインピーダンスが変化するのを読み取ります。
その変化は指数関数的に変化するので対数増幅器を接続して直線的な出力にする必要があります。
一方TDK社製のCHS-GSSは全ての回路がオールインワンになっていて、若干価格的には高いのですが、5Vを加えるだけで、DC1Vの出力が100%(RH)になり電圧計の読みがそのまま位取りの変換だけで相対湿度が読み取れます。
今回は価格の高さに目をつぶりCHS-GSSを使うことにしました。
接続図
スケッチ
//温度と湿度の測定
#include <LiquidCrystal.h>
//センサーに接続したアナログピンの番号
float sensor1Pin = 0;
float sensor2Pin = 1;
//変数の定義
float v = 5;
float temp = 0;
float hum = 0;
float value1 = 0;
float value2 = 0;
//LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
//LCDの桁数と行数をセットする
lcd.begin(16, 2);
}
void loop() {
//LCDの表示をクリアする
lcd.clear();
//センサーピン0の温度センサーの値を読み取る
value1 = analogRead(sensor1Pin);
//センサーピン1の湿度センサーの値を読み取る
value2 = analogRead(sensor2Pin);
//読み取った値を温度に換算
temp = (((v / 1024) * value1) * 100)-60 ;
//読み取った値を湿度に換算
hum = ((v / 1024) * value2) *100;
//LCDに温度を表示する
lcd.print("temp: ");
lcd.print(temp);
lcd.setCursor(10, 0);
lcd.write(0xDF);
lcd.print("C ");
lcd.setCursor(0, 1);
lcd.print("hum : ");
lcd.print(hum);
lcd.setCursor(10, 1);
lcd.print("% ");
//次のループまで1秒待つ
delay(1000);
}