S32-Temperature-DS18B20 (溫度感測器)

【說明】

使用溫度感測器 (DS18B20) 測量周遭環境的溫度。

產品介紹

相信要是我們接觸過  Arduino 那麼對  DS18B20 這款神奇的數字測溫晶片一般都不會陌生吧,它能讓你隨時瞭解你周邊的環境溫度。

ds18b20
DS18B20
Temperture Sensor

由於以往的溫度感測器輸出的是類比量,我們還要增加額外的  A/D 和 D/A 晶片進行轉換,那麼對於  Arduino  外部介面資源並不豐富是一大挑戰同時利用率不高,那麼我們新推出的  DS18B20 Temperature Sensor Module  就很好的解決了這個問題,一線匯流排獨特而且經濟的特點,完全適用  Arduino  平臺,使用戶可輕鬆地組建傳感器網路。

技術參數

  1. 該模組使用的是單匯流排數位溫度感測器 DS18B20,外界供電電壓範圍為0 V 至 5.5 V,無需備用電源。 測量溫度範圍為-55 ° C 至+125 ℃ , 華氏相當於是67 ° F 到 257° F, -10 ° C 至+85 ° C 範圍內精度為±0.5 ° C  。
  2. 溫度感測器可程式設計的解析度為 9~12 位元  溫度轉換為  12 位元數位格式最大值為 750 毫秒 ,用戶可定義的非易失性溫度報警設置。
  3. 每一個 DS18B20  包含一個獨特的序號,多個  DS18b20 可以同時存在於一條匯流排。溫度感測器可同時放置在多個不同的地方檢測溫度。

注意事項

  1. 由於 DS18B20 和普通的三極管長相相似,我們再使用時千萬要注意不要把它當成了普通三極管使用,以免造成損害;
  2. 為了防止損壞 DS18B20 而使得它工作不正常,我們應保證其電源線和地線不要接反。
  3. 相關技術資料中並未提及單匯流排上所能掛 DS18B20 數量多少,但在實際應用中並不是任意多個的,我們要注意。
  4. 連接 DS18B20 匯流排是有長度限制,在長距離通信中應當考慮匯流排分佈電容和阻抗的影響。

使用說明

找出 DS18B20 Temperature Sensor Module 電源線,  地線和數據線,電源線,地線分連到  Arduino  實驗板的+5V,GND  埠,數據匯流排連至數位埠。

模組功能測試

連接電路非常的簡單,只要連接好模組的電源,地線,再將模組的資料匯流排與  Arduino  數字端  D2  引腳相連便可,連上  USB  資料通信線這樣整個測試電路就完成了,DS18B20 測試結果我們將顯示於序列埠監控視窗。

我們將測試代碼編譯後下載到實驗板上,打開序列埠監控視窗便可知道我們是處在什麼樣的溫度中了,在做實驗時候這裡的氣溫是  29  攝氏度左右,用手摸  DS18B20  以後,可以看到串口通信模組的溫度有明顯變化。

【零件表】

No.零件名稱數量
1溫度感測器 (DS18B20)1

【零件接腳】

No.零件接腳UNO R3 接腳
1DS18B20 (-)GND
2DS18B20 (+)Vcc
3DS18B20 (S)D2

【按線圖】

本範例採用 Keyes 的轉板模組,直接依上述【零件接腳】接線即可,若你使用 DS18B20 IC 可以下列圖接線(需另接 4.7KΩ 電阻)。

DS18B20
Temperture Sensor

【程式碼】

/*
 * 示範溫度感測模組 (DS18B20) 的應用
 * 利用模組接收環境溫度,將溫度值顯示於 LCD1602 上。
 */

#include <LiquidCrystal_I2C.h>        // 引用 LCD1602_I2C 程式庫
#include <OneWire.h>                  // 引用 OneWire 程式庫
#include <DallasTemperature.h>        // 引用 DallasTemperature 程式庫

#define ONE_WIRE_BUS 2                // 定義 DS18B20 資料腳位(數位腳 D2)
LiquidCrystal_I2C lcd(0x27,16,2);     // 定義 LCD 元件(位置 0x27 及 16x2 的顯示)
OneWire oneWire(ONE_WIRE_BUS);        // 定義 oneWire 物件類型
DallasTemperature sensors(&oneWire);  // 定義溫度感測器物件

// 程式初化設定
void setup(void)
{
  lcd.begin();                        // 開啟 LCD 元件
  lcd.backlight();                    // 開啟 LCD 背光
}

// 主程式迴圈
void loop(void)
{ 
  sensors.requestTemperatures();            // 下指令要求取得溫度感測器的溫度值
  lcd.setCursor(0, 0);                      // 設定游標位置
  lcd.print("Temp: ");
  lcd.print(sensors.getTempCByIndex(0));    // 顯示溫度值
  lcd.print("    ");
}
下載程式庫1
下載程式庫2
下載程式碼

 ※  分享結束  ※


發佈留言