. Arduinoで温度測定 (DS18B20センサー) 1-Wireで沢山数珠繋ぎ可能な温度計
Arduinoで温度測定 (DS18B20センサー) 1-Wireで沢山数珠繋ぎ可能な温度計
Arduinoで温度測定 (DS18B20センサー) 1-Wireで沢山数珠繋ぎ可能な温度計

趣味のDIY

使い方をおおざっぱに説明すると、Arduino Nano (コントローラー)のデジタルI/Oポートの1つにDS18B20センサーのDQ端子を接続して、コントローラーがI/Oポートの電圧をON/OFFして制御コマンドをデジタル信号としてセンサー側に送った後、同じポートの電圧の変化をセンサーからのデジタル信号としてコントローラーが読み込むというデータ用に1本の配線を使ったコントローラ⇔センサー通信で、コントロラーがセンサーから温度を読み込みます。

DS18B20センサーは9、10、11、12ビットの精度がコマンドで設定できて、その設定ごとに0.5℃、0.25℃、0.125℃、0.0625℃の精度で温度が測れるそうですが、データシートによると温度計の誤差は-10℃~+85℃の温度で±0.5℃らしいので0.5℃よりも高い精度がどう有効か実際に使ってみて検証する必要があるかもしれません 。

それと、Maximのデータシートにはセンサーごとに48ビットのシリアル番号が振り当ててあるので繋げられるセンサーの数は「ほぼ上限なし」と書いてありましたが、センサーが測った温度を内蔵の「EEPROMに書き込むのに通常1.5mA位の電流を必要」とするとも書いてあったので、全部のセンサーが同じタイミングで1.5mAの電流を消費してもケーブルが溶けない程度の電流の合計になるようにセンサーの数を抑えないと危険だと思いますw。

シリアル番号が48ビットのである理由はたぶん、2 48 (=約281.5兆個)の違う番号があるのでいくつかのDS18B20を組み合わせた場合でも偶然に同じシリアル番号がかち合いにくいという事だと思うのですが。。。でも絶対に起こらないとは言えないのと、実際にそんな事が起きた場合、沢山センサーがあると、どのセンサーがかち合っているかを見つけるのはすごく面倒そうです。 後、センサーの数が多過ぎると一つ一つのセンサーから温度を読み取るだけでも時間がかかるというのも問題になります。

DS18B20センサーにはVCC (電源)とGND (接地)、DQ (データ)の3端子がありますがデータシートにある『Parasite-Powered (寄生虫パワーw)』という方法(MOSETが1つ必要)で繋げれば1本のワイヤーとしっかりとした接地があれば『1-wire』という方法で配線の数を減らせるのですが、データーシートによると100度以上の場合での使用を推奨していないので実用には少し限られている感があります。

今回使った DS18B20

手元にあったDS18B20はチップ単体のむき出しのものではなく、金属の筒に収まって90cmほどのケーブルがすでに繋がっていました。 しかも『DS18B20 Adapter』というプルアップ用の4.7kΩ抵抗と高周波バイパスキャパシターが載った小さなPCBボードも付属していました。 これだとブレッドボードに差し込むだけ使えます。

DS18B20 デジタル温度計センサー

センサー自体も防水らしいのでこのまま使ってもすぐに問題は出ないとは思いますが、シュリンクラップの隙間から金属の筒やケーブルの中に水が入って金属の部分が腐食したり。。 食品に触れる様な使い方の場合には衛生面にもよろしくないかと。。 とても、中がエポキシ樹脂なりシリコンで固められているようには思えないのです。 (いずれ開けて中を確認してみたいかと)

実行プログラム

テスト回路

Arduino NanoDS18B20 D2↔DQ 5V↔VCC GND↔GND DS18B20 と Arduino Nano

結果と結論

Sketch uses 5408 bytes (17%) of program storage space. Maximum is 30720 bytes. Global variables use 310 bytes (15%) of dynamic memory, leaving 1738 bytes for local variables. Maximum is 2048 bytes. D:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CD:\Program Files (x86)\Arduino\hardware\tools\avr/etc/ . (以下省略)

シリアルモニターへの出力結果

BOM (Bill of Material)

  • DS18B20 1-wire Temperature Sensor
  • Arduino Nano Micro-controller
  • Beadboard
  • Mini USB cable
  • Dupont Cables

ぼやきPS

Arduino』ってカタカナだと『アルドゥイーノ』とか『アルデュイーノ』になるのですね。英語で聞く分には『アーデュイーノ』みたいな音なのですが、元々開発したのがイタリア人の5人みたいのでローマ字読みで舌を巻きながら『アルドゥイーノ』辺りが正しい発音なのでしょうか? (でも、英語圏ではそれだと通じないと思いますが)

コメント コメントを投稿 過去1年間ピックアップ 原神PC版: 白い画面でゲームが始まらなかった件 (ゲーム起動前に「mhyprot2.sys」を削除) 「CPUグリス」と「放熱グリス」の違いですか?? 海外の日本食レストランのランチメニューの現状??。。。 Gameloopの怪しいサービス (QMEmulatorService) 【メモ】正しいケーブルの巻き方 (逆相巻き): ケーブルを長持ちさせる方法 過去30日間ピックアップ 原神PC版: 白い画面でゲームが始まらなかった件 (ゲーム起動前に「mhyprot2.sys」を削除) KiCadを使ってカスタムPCB(基板)を発注してみた。 その2 【メモ】正しいケーブルの巻き方 (逆相巻き): ケーブルを長持ちさせる方法 KiCadを使ってカスタムPCB(基板)を発注してみた。 その1 海外の日本食レストランのランチメニューの現状??。。。 Gameloopの怪しいサービス (QMEmulatorService) Intel NUC7の外付け電源スイッチ (NUCを手元のスイッチで起動) 表面実装→スルーホール変換アダプター 当サイトのテキスト・画像の無断転載・複製を固く禁じます。 ®kii 2019 - 海外住み元院生 暇つぶしにゲームやってます。 Genderlessアシスタントではありません。 ブックマーク
  • - eBay
  • - QR Code メーカー
  • -Google Input Tools
  • - ポチンキ速報
  • - PUBG Interactive Map
  • - Steam
  • - Tencent Gaming Buddy (TGB) a.k.a. Gameloop
  • - Discord
  • - Open Broadcaster Software (OBS)
📎📎📎📎📎📎📎📎📎📎