Arduino プロジェクトで温度検出を追加する最も簡単で安価な方法の 1 つは、DS18B20 1-Wire 温度センサーを使用することです。 これらのセンサは、かなり正確で、動作するために外部コンポーネントを必要としません。 いくつかの接続とArduinoのコードで、すぐに温度を検出できます!
DS18B20 1-Wire Temperature Sensor
DS18B20 はDallas Semiconductor Corp.が製造する1-Wireインターフェース温度センサーです。 独自の1-Wire®インターフェースは、マイクロコントローラとの双方向通信に必要なデジタル・ピンを1つだけ備えています。 1つはTO-92パッケージで、見た目は普通のトランジスタと同じです。
このセンサーは3V~5.5V電源で駆動でき、アクティブな温度変換時に1mAしか消費しません。5V
Multiple DS18B20 On Single Bus
DS18B20の最大の利点の1つは、複数のDS18B20を同じ1-Busに共存させることができることです。線バスです。 各DS18B20は工場で固有の64ビット・シリアル・コードを焼き付けるので、互いに区別しやすくなります。
この機能は、広いエリアに分散した多数のDS18B20を制御したい場合に大きな利点となります。
複数の DS18B20 温度センサーから温度を読み取る方法については、このチュートリアルをご覧ください。
DS18B20 Sensor Pinout
GNDはグランドピン、
DQは1Wireデータバスでマイコンのデジタルピンに接続してください。
VDDは3.3~5Vの電源を供給します。
DS18B20温度センサーとArduinoの配線
理論はもう十分なので、実践してみましょう。 DS18B20をArduinoに接続してみましょう。
接続はとても簡単です。 VDDをArduinoの5V出力端子に、GNDをグランドに接続します。
次に残りのデジタル信号端子DQをArduinoのデジタル端子2に接続します。 また、データ転送を安定させるために、信号と電源ピンの間に4.7kのプルアップ抵抗を追加する必要があります。 (arduinoの内部プルアップは機能しません)
DS18B20を正しい方法で取り付けるように注意してください。
防水バージョンのDS18B20を使用している場合、赤いストライプを5V、黒をグランド、黄色のストライプをArduinoのデジタルピン2へデータを接続するように接続します。 4.7K プルアップ抵抗をデータから 5V に接続する必要があります。
Installing Library For DS18B20
The Dallas 1-Wire protocol is somewhat complex, and requires a bunch of code to parse out the communication.これは、Dallas の 1-Wire プロトコルを解析するために、多くのコードが必要であることを示しています。 この不必要な複雑さを隠すために、DallasTemperature.h ライブラリをインストールして、センサーから温度の読み取りを得るために簡単なコマンドを発行できるようにします。
ライブラリをインストールするには Sketch > Include Library > Manage Libraries…Wait for Library Manager to download libraries index and update list of installed libraries.
Filtered your search by typings ‘ds18b20’. いくつかのエントリがあるはずです。 Miles Burton の DallasTemperature を探します。 そのエントリをクリックし、インストールを選択します。
この Dallas Temperature ライブラリは、低レベル機能を処理するハードウェア固有のライブラリです。 DS18B20 に限らず、あらゆる 1 線式デバイスと通信するために One Wire Library とペアにする必要があります。
Arduino Code
以下のスケッチは、DS18B20温度センサーから温度を読み取る方法を完全に理解することができ、より実用的な実験やプロジェクトの基礎として使用することができます。
コードの説明:
スケッチは OneWire.h と DallasTemperature.h ライブラリを含み、センサの信号ピンが接続される Arduino ピンを宣言することから始まります。 このワンワイヤーオブジェクトを使えば、DS18B20だけでなく、あらゆるワンワイヤーデバイスと通信することができます。 DS18B20 センサーと通信するためには、DallasTemperature ライブラリのオブジェクトを作成し、パラメータとして one-wire オブジェクトの参照を渡す必要があります。
OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);
一度 DallasTemperature オブジェクトを作成すると、センサーと通信するために以下の簡単なコマンドを実行することができます。
-
begin()
関数はバス上の接続されたセンサーを検索し、それぞれにビット分解能(12ビット)を設定します。 -
requestTemperatures()
関数はバス上のすべてのセンサーに温度変換を実行するコマンドを送信します。deviceIndex
はバス上のセンサの位置以外の何物でもありません。
DallasTemperature.hライブラリの他の便利な関数
DallasTemperatureオブジェクトで使用できる便利な関数がいくつかあります。
-
setResolution()
関数はDS18B20の内部A-Dコンバータの分解能を9、10、11、12ビットに設定し、それぞれ0.5℃、0.25℃、0.125℃、0.0625℃に相当します。 -
bool getWaitForConversion()
関数はwaitForConversionフラグの値を返します。 温度変換が完了したかどうかを確認したい場合に便利です。 -
setHighAlarmTemp()
&setLowAlarmTemp()
関数は、デバイスの内部高温 & 低温アラームを摂氏で設定します。 有効範囲は-55~125℃ -
bool hasAlarm()
function returns true if device have an alarm condition when temperature exceeds high & low alarm temperature setting.
.