2014年7月25日金曜日

アクア用コンピュータシステム構想 その5 / 温度センサー動作確認できた

温度センサー動作確認

一つ前の記事ですが、23:00ごろ書きました。センサーが届いたし、その為の情報も沢山あるので、パパッとできるだろうってことで、挑戦したら、はまりました。

一応動いたんですけど、寝たら忘れそうなので、備忘録かわりにブログ書きます。

回路とかは30分で作れたんですが、そのあと2時間かかりました(笑)

実際の計測

はい、実際に動いた感じです。


まず、echo の部分で、温度センサーのポート設定をしています。この設定をすると、繋がれたセンサーを認識して、一覧にでてきます。 28-00000319f2f9 というのが、今つながってる温度センサーの個体番号です。複数個つなげたら、別の番号が列挙されるハズ(まだ複数つなげてないので)です。

で、そのあと /sys/bus/w1/devices/28-00000319f2f9/w1_slave というファイルを開くと、最後の方に t=31812という記述があります。これが 31.812℃ということです。

ファイルを開くたびに、最新の温度が分かります。

なので、実は、こんなに手間取らなければ、

  1. ファイルを開く
  2. t= の部分を読む
  3. 温度を別ファイルに記録する
  4. 30秒待つ
  5. 最初に戻る

というプログラムを記述して、温度センサーの値を記録しておこうと思ってました。
(ブログ書くより簡単かも。でもブログ優先で)

組み上げたセンサー回路




えっと、手間取ったのは、抵抗の抵抗値です。元は 4.7KΩだけど、今は 220Ωをつけています。


黒い部分がセンサーです。ちなみに上にあるセンサーの温度が表示されていますが、
最初の25度は、室温です。

次の3つは、指でセンサーを挟んで、体温まで温度が上がっていくのを確認しました。

あと、この温度センサーの設定ですが、「beaglebone black ds18b20」というキーワードでググるとでてきますので、その通りです。

で、記事に残しておきたい部分です。

プルアップ抵抗値とStrong pullup

ds18b20という温度センサーは、3つの足がありますが、一番単純なのは、真ん中の線をマイコンへ、その他をGND(-端子)へ接続すればOKです。真ん中の線で信号のやり取りをするんですが、そのやり取りの電力を用いてセンサーが動くんです。

で、上記センサーの設定記事などでも、この方法が使われてたりします。

しかし、この方法で温度測定すると 85度を表示します。これは温度センサーの初期値で、別に室温が85度というわけではありません。
ちゃんと温度測定ができると、85℃という部分が更新されるのですが、更新されていません。

最初、初期不良なのか、センサーを壊したかとか色々思いましたが、85℃というデータが送受信できていたので、そんなことは無いと。

仕方がないのでデータシートとよばれる、センサーの使い方を調べだしました(本当は逆です。調べてから使いましょう)

そうすると「温度測定してね」っていってから、約1秒はストロングプルアップしてね。最大1.5mA程度必要だから、ちゃんと流してねって書いてあるじゃありませんか。

で、次に不安になったのが、Linuxのプログラム側で、ストロングプルアップ処理してるのか?
つまり、温度測定してねっていったあと、電流流すように「ストロングプルアップ!」って言ってるか?
って部分ですが……


ちゃんとしてました。

ん?プルアップは、いろんな記事やデータシートベースで 4.7KΩを使用してるけど……

えっと、電源電圧は 3.3V BeagleBone Black の GPIOは 3.3v出力だし、3.3V。
で、温度センサーの測定時に必要な電流が 1.5mA。
温度センサーに最低必要な電圧は 2.8v くらいってことは

(3.3-2.8)v が、プルアップ抵抗にかかるってことは…
逆に、そのプルアップ抵抗に0.5v (3.3-2.8)かかった状態で 1.5mA 流さないといけないってことで…

300Ω程度しかだめだ。4.7KΩじゃ必要な電流ながれないや。

となると、300Ωな抵抗ってってことで、手持ち抵抗を探しました。

330Ωと220Ω。えっと 330Ωだと、もしかすると電流たりなくなるかもしれないので、220Ωか。
プルアップ抵抗って、小さくするとノイズ耐性とかが改善されるけど、消費電力あがるんだよな。
あと、最低のプルアップ抵抗ってのもあったよな。
どんだけだっけ?って簡単に考えると、数十Ωとかかなってことだと 220Ωだと一桁くらい余裕がありそう。

で、220Ωに変えて試したら動きました。

いやー2時間以上つかいました。つなげれば温度測定できると想定してたけど、ひどい目にあいました(全然ひどくありません)

一晩寝たら、忘れそうなので、急いでブログ記事に。(30分かかりました)

0 件のコメント:

コメントを投稿