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シールド高いね〜、、