Arduinoで温度ロガーをつくりたい

外気温と室内温とプラケース水槽の温度ログとりたいな〜と思って、色々考えてます。といっても、先人の方が色々作成されてるので、追っかけですが、、

まず手始めに、温度計センサを買って来て、サクサク〜と使えるArduinoにつないで、温度を取ってみました。
使用した温度センサはLM61BIZ。3pinで、温度出力が電圧で出る、とても使いやすいICです。
シリーズで似たチップが何種類かあるのですが、温度範囲と、「容量性負荷のドライブ能力が非常に優れています」というのがワイヤーでのばして使うのにいい予感がしたのでこれにしました。秋月電気で4個200円です

さくっとブレッドボードで回路を組んで、てきとうなスケッチを書いて動かしてみました。
とりあえずえいやーとブレッドボードにセンサを4個並べて接続。

温度センサLM61BIZの温度値は電圧で出力されます。0度のとき0.6Vが出力され、1℃増加すると0.01V増加します。温度・電圧変化は連続的です。

Arduino側のAnalogRead()は5Vを1024段階で読み取ります。約0.005V刻みで読み取ることになるため、今回のLM61BIZとの直結であれば温度は約0.5℃刻みで読み取ることになります。
まぁセンサの誤差もありますし室温・水温ならこの程度でおけ〜でしょう。

スケッチは、ArduinoIDEのExamplesのBasics>>AnalogReadSerialかAnalog>>AnalogInOutSerialをちょっと編集すればおけ〜です。
温度への変換は、以下のようにすればとりあえず動作します。とりあえずセンサ一個分。

  int sensorValue; 
  float temp;

  sensorValue = analogRead(A0);
  temp = (float) sensorValue * 500 /1024 -60;
  Serial.print(temp, 1);

4個分をシリアルコンソールに出力してみた結果。

センサ4つは同じブレッドボードに並べてあるのに温度が結構違って出ています。素子の誤差かな?ブレッドボードで作ってるときに電源逆接続しちゃったので壊したかも(汗)
素子ごとの誤差を校正するか、多めに買って来て選別する(極端に値が離れているものを刎ねる)か、、選別の方が楽ですね。

続き検討する項目

  • 長く線を延ばした状態で動作確認
  • センサの保護(パテかコーキング材で埋め、防水・対候性を確保)
    • シリコンコーキング(防カビ材が配合されてない、生体水槽に使えると明記されてるものがよさそう)
  • ロギングの方式
    • SDカード⇒RTC入れないといけないし読み出しとかめんどくさい
    • シリアルコンソールログ取る⇒PC電源入れておかないといけないけどお手軽
    • ネットワークにポスト⇒Ethernetシールド高いね〜、、