可防水的DS18B20溫度感測器
DS18B20是常見的溫度感測元件,除了體積小,而且規格也很不錯,檢測溫度範圍:-55℃~+125℃,在-10~+85℃時精度為±0.5℃。更誇張的是,它還有防水的版本,這點就已經打敗天下無敵手了啦!
在Arduino上使用上也很簡單,它有3根腳,分別是GND、DQ、VDD,GND接GND,DQ是訊號PIN,VDD可接5V,但必須注意的是,DQ腳必須加上4.7K歐姆的電阻才行!
不過這次傑森想讓大家看看防水版本,這可是測量水溫的最佳選擇啊!
購買DS18B20:
https://www.jmaker.com.tw/products/ds18b20-set
感測器前端是一個不銹鋼的部件,尾端有3條線,紅色:VDD,黃色:DQ,黑色:GND,基本上就是DS18B20的三個PIN腳。
如果只是這樣就拿來使用,接法和不防水的版本一模一樣,DQ腳一樣是要接4.7K的電阻。不過這裡有個好東西,就是DS18B20專用的轉接板,它可以直接鎖住3條線,並且在板子上就內建了4.7K的貼片電阻,這樣只要把另3個PIN腳接到UNO板就可以了!
GND >> GND
DAT >> 訊號PIN(本例是接到D4)
VCC >> 5V
接下來就可以寫程式囉!首先要安裝兩個函式庫:OneWire和Dallas Temperature。
因為函式庫已經寫得很完整,所以程式很簡單。只要建立了DallasTemperature物件,就能用getTempCByIndex(0)函式取得攝氏溫度了。
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(4); //訊號線接到D4
DallasTemperature sensors(&oneWire); //建立DallasTemperature物件
void setup(void)
{
Serial.begin(9600);
sensors.begin();
}
void loop(void){
sensors.requestTemperatures(); //要求測溫
Serial.print("Celsius temperature: ");
Serial.println(sensors.getTempCByIndex(0)); //取得攝氏溫度
delay(1000);
}