LoginSignup
10
4

More than 5 years have passed since last update.

Arduino+複数温度センサー3つ(0m、10m、15m)

Posted at

概要

Arduino+複数の温度センサー(DS18B20)を使用して計測してみました。

今回は下記のサイトを参考にして作成してみました。
http://blog.goo.ne.jp/mkidmtr70/e/a95e8d383e4f62e58afa4e34ffdeb7b7

回路図とコード

わかりにくいですが、DS18B20が3つ並列で並んでいます。
また、実際には2つ目、3つ目は10m、15mのケーブルの先にセンサーをつなげています。

image.png


#include <OneWire.h>
#include <DallasTemperature.h>


#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress temp0 = { 0x28,0xFF,0x5D,0x54,0xB0,0x16,0x04,0x7C };
DeviceAddress temp1 = { 0x28,0xFF,0xEE,0x21,0xB0,0x16,0x04,0x54 };
DeviceAddress temp2 = { 0x28,0xFF,0x7F,0x0E,0x00,0x17,0x03,0x3F };

void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
}

void loop(void)
{
  sensors.requestTemperatures();

  delay(300);

  Serial.print("0:");
  Serial.println(sensors.getTempC(temp0));
  Serial.print("1:");
  Serial.println(sensors.getTempC(temp1));
  Serial.print("2:");
  Serial.println(sensors.getTempC(temp2));

  delay(500);
}

※各種温度センサーのアドレスの調べ方は下記サイトを参考にしました。
http://henrysbench.capnfatz.com/henrys-bench/arduino-temperature-measurements/ds18b20-arduino-user-manual-introduction-and-contents/ds18b20-user-manual-part-2-getting-the-device-address/

実行してみると、、

実行してみると、、取得した温度が全て0℃になってしまいました。。

ただ、ケーブルを延長していない状態、または0m、10mだけ、0m、15mだけのケーブルをつないだ場合は正常に温度が取得できました。

改善

調べてみると、ケーブルが長いことによる抵抗値の増加が問題だったようなので抵抗値を下げることにしました。

ただ、0mだけのケーブルをつなげる場合もあるので、途中で抵抗値を変更できるよう2kオームの抵抗と5kオームの半固定抵抗を並列でつなげ、途中で変更できるように配線しました。(2kオーム~7kオームまで変更できるようになりました)

無事に正常な温度が取得できましたので、実際のセンサーにも反映しました。
image.png

10m、15mのセンサーをつないだ場合は2kオームだけの抵抗で正常に温度が取得できることを確認しました。

今日は以上です。

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4