2011/08/13

Arduinoに温度センサーをつなぐ

節電の夏。暑いです。
皆さんの勤務先は暑いですか?
私の勤務先は暑いです。エアコンが効いてません。

「暑いからなんとかして〜!」と訴えるためには、データが必要です。でも、ロギングは面倒です。

そういう面倒な作業はPCとマイコンにまかしてしまおう、ということで
Arduinoに温度センサーをつけて温度ロガー代わりにしてみたいと思います。

使うもの
1.PC 1台
2.Arduino 1個
3.温度センサー(LM35DZなど。) 1〜6個

秋月電子で買ったLM35DZ(100円)は、0.1℃=1mVという出力特性を持っています。
30℃だったら300mV。室温でプラスマイナス0.25℃の精度。ほか温度ICに比べると少し高めですが、精度を考えれば納得です。

LM35DZのVOutピン(真ん中)をArduinoのアナログ入力ピンにつなぎ、analogReadで読むと、AD変換されたあとの値が取得できます。
通常はAD変換の基準電圧が電源電圧と同じ(5V)になっているので、何も設定しない状態だと0.5℃刻みのデータしか取得できないことになります。
(5000mV/1024=4.88mV≒0.49℃)

0.1℃刻みぐらいにはしたいので、基準電圧(AREF)を1Vぐらいに設定してみます。
ツェナーダイオードとか定電圧ICとか使う手もありますが、そんな部品は持っていないので手軽に抵抗分圧することにしました。

5V-AREF間に40kオーム、AREF-GND側に10kΩをつければ、基準電圧を1Vにできますが、手元にあった51kΩと10kΩで分圧することにしました。

AREFの電圧をコードに組み込むことによって、AREFが適当でも問題なく動作するようにしました。

部屋の温度は30℃。。暑い
ターミナルソフト側でタイムスタンプを埋め込めば、温度ログとして使えると思います。
また、イーサネットシールドを取り付けて、Syslogサーバとかに温度を送りつけたりするのも面白そうです。イーサネットシールドは少し値段が高いですが。

ソースコードは別館に保存してあります。
ではまた。

0 件のコメント:

コメントを投稿