温度センサー動作確認
一つ前の記事ですが、23:00ごろ書きました。センサーが届いたし、その為の情報も沢山あるので、パパッとできるだろうってことで、挑戦したら、はまりました。一応動いたんですけど、寝たら忘れそうなので、備忘録かわりにブログ書きます。
回路とかは30分で作れたんですが、そのあと2時間かかりました(笑)
実際の計測
はい、実際に動いた感じです。
まず、echo の部分で、温度センサーのポート設定をしています。この設定をすると、繋がれたセンサーを認識して、一覧にでてきます。 28-00000319f2f9 というのが、今つながってる温度センサーの個体番号です。複数個つなげたら、別の番号が列挙されるハズ(まだ複数つなげてないので)です。
で、そのあと /sys/bus/w1/devices/28-00000319f2f9/w1_slave というファイルを開くと、最後の方に t=31812という記述があります。これが 31.812℃ということです。
ファイルを開くたびに、最新の温度が分かります。
なので、実は、こんなに手間取らなければ、
- ファイルを開く
- t= の部分を読む
- 温度を別ファイルに記録する
- 30秒待つ
- 最初に戻る
というプログラムを記述して、温度センサーの値を記録しておこうと思ってました。
(ブログ書くより簡単かも。でもブログ優先で)
組み上げたセンサー回路
えっと、手間取ったのは、抵抗の抵抗値です。元は 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 件のコメント:
コメントを投稿