2014年7月23日水曜日

Arduinoで温度センサーを使ってみた

Arduinoエントリーキットに付いてきた最後の部品、温度センサーを使ってみました。
温度センサーはLM35DZです。データシートはこちら

配線

回路図は以下のとおり単純なのですが、はまりました。

LM35のGNDと+Vsを逆にしていたため、測定した値がおかしくなりArduino自体が動かなくなってしまいました。。。
データシートのピン配置図をみていたのですが、BOTTOM VIEWと書いてあるのを読み取れていませんでした。。。足の出ている方を上にしてみるんですね、BOTTOM VIEWですもんね。この投稿をみてわかりました。
分かってみてからLM35DZ 逆で検索すると、同じようなことがでてきました。

スケッチ

いろいろなサイトで同じスケッチがでているので割愛。ポイントは以下のとおり。
実際の室温と同じぐらいになっていました。
  • アナログ入力は5Vを1024段階にする。
  • LM35DZのVoutからは、10mV/℃で出力される。

精度を上げる

検索していたらこんなのを見つけました。
LM35HigherResolution

analogReference()は、アナログ入力の基準電圧を変える関数。デフォルトは5V。INTERNALを指定すると1.1Vになります。
基準電圧が5Vの場合は、
5V / 1024 = 0.00488
から、1単位あたり約4.9mVとなります。
これが基準電圧を1.1Vにすると、
1.1V / 1024 = 0.00107
なので、1単位あたり約1.1mVとなります。
上でも書いたようにLM35DZは10mV/℃で出力するので、5Vの場合は1単位あたり0.49℃、1.1Vの場合は1単位あたり0.11℃となり、より細かい温度を測定できます。
ただし、LM35DZは+2℃〜+150℃まで測れるとデータシートにありますが、1.1Vの場合のMaxは112.53℃に制限されます。

実際に試してみると、5Vの場合は27.83℃と28.32℃(差は0.49)をいったりきたりしたのに対して、1.1Vの場合には29.54℃と29.43℃(差は0.11)をいったりきたりしていました。それぞれはよさそうですが、比べると1℃近くも値が違います。なんでだろう?



これでArduinoエントリーキットに付いてきたひと通りの部品を試しました。
ここまでArduinoを触った感じでは、簡単な回路ものであれば容易にできそうです。本をひと通りやっていくだけでも楽しめました。
ただ、回路を組むのでわからなかったり、スケッチの問題ではなさそうというときは、はまってしまうorお手上げになってしまいそうだという感触。このあたりはいろいろやってみての経験なんだろうと思います。



0 件のコメント:

コメントを投稿

RedmineプラグインをGitHub Actionsでテストする

Redmine Advent Calendar 2019 の Qiita で書きました。追っかけで もう一つ 。 Travis-CIで行っていたRedmineプラグインのCIを、GitHub Actionsに変更したものです。 GitHub Actionsをやってみようという...