☛ 功能說明

使用 Arduino 開發板配合DS18B20 溫度感測器測量環境溫度,以 Serial Monitor 視窗顯示環境溫度,當環境溫度大於 30°C 時,點亮 LED。

DS18B20 介紹:

㈠ 技術性能描述

⑴ 獨特的單線介面方式,DS18B20 在與微處理器連接時僅需要一條口線即可實現微處理器與 DS18B20 的雙向通訊。

⑵ 測溫範圍 -55°C ~ +125°C,固有測溫誤差 1°C。

⑶ 支援多點組網功能,多個 DS18B20 可以並聯在唯一的三條線上,最多只能並聯 8 個,實現多點測溫,如果數量過多,會使供電電源電壓過低,從而造成信號傳輸的不穩定。

⑷ 工作電源:3.0~5.5V/DC ( 可以數據線寄生電源 )。

⑸ 在使用中不需要任何週邊元件。

⑹ 測量結果以9~12數位量方式串行傳送。

㈡ 優缺點

⑴ 優點:數位通信,穩定,唯一序列號。

⑵ 缺點:程序相對複雜,尤其是多個 DS18B20 檢索程式。

☛ 使用材料

Arduino UNO R3 開發板 × 1、電阻 220Ω × 1、溫度感測模組 DS18B20 × 1、LED× 1 及 DS18B20 第三方函式庫

☛ 電路圖及麵包板接線圖

☛ 程式碼

#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS 2                      // DS18B20 模組的數據介面接在 Arduion 開發板的 pin 2
OneWire oneWire(ONE_WIRE_BUS);              // 設置一個單線實例以與任何單線設備進行通信
DallasTemperature sensors(&oneWire);        // 參考 Dallas 溫度。
int led=7;                                  // LED 連接數位接腳 7
 
void setup(void)
{
  Serial.begin(9600);                       // 設定串列埠傳輸速率為 9600 bps
  sensors.begin();                          // 啟動 DS18B20 感測器
  pinMode(led,OUTPUT);                      // 設定數位接腳 7 為輸出模式
}
 
 
void loop(void)
{
  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures();            // 發送命令以獲得溫度
  Serial.println("DONE");

  Serial.print("Temperature is: ");
  Serial.print(sensors.getTempCByIndex(0)); // 列印數據線上第一個感測器上的測溫數值
  if(sensors.getTempCByIndex(0)>=30)        // 溫度大於等於 30 °C 時,點亮 LED ,否則關閉 LED
     digitalWrite(led,HIGH);
  else
     digitalWrite(led,LOW);
  delay(1000);
}