arduinoでつくる 低温調理器具 3/全7回
前回はLEDライトを点滅させることに成功しました。今回は温度センサー(LM35DZ)を使って、arduinoで"水中での"温度測定ができるようにします。製作目標としている低温調理器具は水温を調節する機器なので、周辺温度ではなく水温を直接測定したいからです。
前回に加えての必要部品
- 温度センサー(LM35DZ)
- エポキシ樹脂接着剤
- ビニルテープ
- ビニールコード
方法
今回はこちらのサイトを参考にしました。
温度センサーが使えるか確かめる
まず、購入した部品が動作しているかチェックします。こちらのサイトに従って、温度センサーとarduinoを組み上げてください。
センサーを指で握って温めた時に、温度表示も連動して上昇すれば、温度センサーはきちんと動作しています。
温度センサーを防水する
今回は、温度センサーを水中に入れることを想定しています。なので、ビニールテープとエポキシ樹脂接着剤で防水しました。
まず、温度センサーの足とリード線を半田付けします。温度センサーの足は3本あるので、ショートしないように注意です。
次に、接着面を上にしておいた3cm程度のビニールテープの上にセンサーを置き、エポキシ樹脂をセンサーの足にかけてからぐるぐる巻きにします。完成品は次のようになります。
エポキシ樹脂のつきにくい素材の上で行わないと、センサーが机などに固定されてしまうので注意してください。
温度センサーをキャリブレーションする
センサーがきちんと防水できているか、正しい温度を測定できているかをチェックしました。お湯を張ったコップにセンサーと温度計を入れ、水を足しながら4点程度の温度を測定しました。
ちなみに、防水がうまくいっていないと、回路がショートし、温度の測定値が大きくふらついたり、常温なのに100℃を越えたりします。そのときは、乾かした上でさらにエポキシとビニールテープで巻くか、あるいは温度センサーを作り直すといいでしょう。
今回は問題なく防水されており、結果は次のようになりました。
画像の通り、高温域では約14℃の誤差が生じていました。これでは使い物にならないので、温度計の値とLM35DZの値が一致するように、analog inputを温度に変換する式の係数を変更します。
(水温)= a *(LM35DZのanalog_input)+b
とするとき、
a = {(温度計の最高温度) - (温度計の最低温度)}/{(LM35DZの最高値) - (LM35DZの最低値)}
b = (温度計の最低値)-(LM35DZの最低値) * a
となります。今回は、
a = (92-5) / (160-11)
= 0.58388
b = 5 - 11*0.58388
= -1.42141
となりました。
コードの温度算出の部分を次のように変更すれば、LM35DZで正しい温度が測れるようになります。
temp_c = (a_in * 0.58388) - 1.42141;