IchigoJamで遊ぶ その4 アナログ入力で温度計

(投稿日:2016-03-18)

IchigoJamには(あのRaspberry Piにも付いていない)アナログ入力が備わっていて、0V~3.3Vの範囲の電圧を0~1023の数値として取得できます。
今回はこのアナログ入力を使ってみようと思います。

アナログ温度センサで温度を測る

IMG_8590_
見た目はトランジスタみたいですけど、温度センサです。
(この形だとトランジスタだと思っていた時期が私もありました)

これはTMP36というアナログ温度センサで、この三つある足のひとつから、温度が25℃の時には750mVが出力され、そこから温度が1℃変わる毎に電圧も10mV増減します。
なので、この足をIchigoJamのアナログ入力につないで電圧を測れば、温度が分かるというわけです。
(ちなみに残り2本の足は、電源とGND)

ondo
例によってつなぎ方はこんな感じ。

TMP36のVoutというのが温度の出力で、Vsが電源です。
今回はIN2のアナログ入力を使うので、VoutとIN2をつないでます。

IMG_8608_
実際の接続はこんな感じ。

アナログ入力の値はANAという関数で調べられるので、早速取得してみます。

tmp36
IchigoJamのアナログ入力は0~3.3Vが1024段階なので、1段階あたりは 3.3V ÷ 1024 ≒ 0.0032V =3.2mV。
アナログ入力の値が225ということは、3.2mvをかけると720mv。

25℃の時の750mVとの差は-30mVなので、温度は22℃という事になります。
若干肌寒い。

IMG_8610_
温度計で測ってみると22.8℃。
まぁまぁ近い値でした。

温度計プログラム

しかし、いちいちアナログ入力の値を調べて計算するのは面倒なので、こういうことはコンピュータにやらせましょう。

20行目、IchigoJamは小数を扱えない(たぶん)ので、アナログ入力の値に3.2mV分の32を掛け、500mV分の5000を引いておきます。
この値を100で割ると温度が求まるハズ。
40行目や60行目で、100で割ったり余りを求めたりして小数1桁まで表示してます。
温度の数字以外何も出さない、手抜きプログラムです。

では、実行~。

速すぎっ!
こんな温度計はせわしなさすぎる。

というわけで、途中にウェイトを入れて調整。

まだ速い気もしますけど、そこはWAITを調整かな。
単にWAITを入れるだけではなくて、待ってる間にも値を測定し、それを平均化したものを表示するのが良いかもしれない。

温度計の分解能

温度計を動かしていると、値はころころ変わるわりに、小数部分は同じ数字ばかり出てきます。

これは、IcihgoJamのアナログ入力の分解能が約3.2mVであるのと、温度センサの1℃あたり10mVという仕様とが相まって、約0.3度単位でしか温度を測れないからでしょう。

もっと細かく温度を測ろうと思ったら、センサを1℃あたり20mVとかのものに換えたり、出力電圧を増幅したりが必要かと。

あるいは、上に書いた平均を求めるようにプログラムを改造しても、ある程度は細かくなりそうな気がします。

投稿者: