DS18B20(デジタル温度センサー)を使った防水型温度センサーを使って、Arduinoで温度計測をする。(1-Wireインターフェースで接続する電子部品)
購入先: ShenZhen KELI Electronics Co.,Ltd
Free Shipping 5pcs DS18B20 Stainless steel package 1 meters waterproof DS18b20 temperature probe temperature sensor new in stock
Price:
US $4.68 / lot 5 pieces / lot , US $0.94 / piece
データシート:DS18B20
特 徴(データシートより)
・DS18B20デジタル温度計は、9ビットから12ビットの摂氏温度を測定し、不揮発性で上下の境界点をユーザーがプログラム可能なアラーム機能を持っています。
・DS18B20は、マイクロプロセッサとの通信のために、1本のデータ線とGND線だけを必要とする、1-Wireバスで通信します。
・-55℃から+125℃までの動作温度範囲を持ち、-10℃から+85℃までの範囲で、±0.5℃の精度です。
・さらにDS18B20は、外部電源の供給を省略し、電源をデータ線から直接得ることができます。
(パラサイト・パワー)
・個々のDS18B20には、独自の64ビットシリアル番号を持っています。(複数のDS18B20が、同じ1-Wireバス上で機能できます)
・したがって、1台のマイクロプロセッサを使い、広い地域に分配された多くのDS18B20を簡単に制御できます。
・この機能の恩恵を受けるアプリケーションは、空調環境制御、建物内の温度監視システム機器、または機械、およびプロセスの監視および制御システムを含んでいます。
Arudino回路とスケッチ
参考URL:
DS18B20(1-Wire)で温度計測
Arduino+DS18B20で温度測定してみた ; 複数のDS18B20センサーの扱い記事あり
DS18B20 (digital temperature sensor) and Arduino © GPL3+
PLC – Arduino – Multiple DS18B20 Digital Temperature Sensor ; 複数のDS18B20センサーの扱い記事あり
スケッチ例:
milesburton/Arduino-Temperature-Control-Libraryのexamples/Simple/Simple.pdeを試しました。
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(sensors.getTempCByIndex(0));
delay(500);
}
これでシリアルコンソールに温度が表示されます。
Requesting temperatures...DONE
Temperature for the device 1 (index 0) is: 29.50
Requesting temperatures...DONE
Temperature for the device 1 (index 0) is: 29.50
Requesting temperatures...DONE
Temperature for the device 1 (index 0) is: 30.00
Requesting temperatures...DONE
Temperature for the device 1 (index 0) is: 30.00
/********************************************************************/
// First we include the libraries
#include <OneWire.h>
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
/********************************************************************/
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
/********************************************************************/
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperature readings
Serial.println("DONE");
/********************************************************************/
Serial.print("Temperature is: ");
Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?
// You can have more than one DS18B20 on the same bus.
// 0 refers to the first IC on the wire
delay(1000);
}