Arduino學習.溫度晶片DS18B20
UNO板
溫度晶片DS18B20
4.7k或1k~2.7k電阻
工作電壓=3.0v~5.5v
工作電流=1mA
量測範圍溫度=-55度C~+125度C
誤差範圍=+-0.5度C(-10~85度C時)
反應時間<750ms
腳位印字面左至右=Gnd/D-out/+V
單線1-Wire協議資料輸出
晶片外觀有TO92直插也有防水封裝帶線的
圖溫度晶片D18B20 ↓
使用時在輸出腳加上4.7k電阻接上5v電源,
或是搭配3.3v接1K~2.7K電阻,
不加會如何,最後再測試,圖 ↓
打開Arduino軟體後要先安裝2個外部資料庫,
DallasTemperature及onewire,
先到工具-管理程式庫-搜尋DS18B20
需要的是DallasTemperature
點擊安裝時會跳出是否安裝onewire
可直接安裝或手動搜尋安裝
圖例已經安裝了所以是灰格.圖 ↓
安裝好外部程式後可直接開啟
檔案-範例-OneWire-DS18x20_Temperature 圖 ↓
範例程式就不貼上了,可看到程式行標註
OneWire ds(10); //on pin10 (4.7K resistor is necessary)
所以要將資料腳插在UNO的P10腳位加4.7k電阻接5v電源,
然後將程式上傳到UNO板上,打開監控視窗,圖↓
開始回傳溫度感應器的數據,
這些資料需要轉換成看的懂的數值,
關閉監控視窗,另開啟
檔案-範例-DallasTemperature-simple 圖 ↓
可看到說明標註
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
所以需將資料腳插在UNO的P2腳位
然後將程式上傳到UNO板上,打開監控視窗,
即可看到轉換資料後顯示的攝式C溫度約27.8度C, 圖 ↓
將程式簡編後上傳
//先安裝外掛程式庫
#include <OneWire.h>
#include <DallasTemperature.h>
//資料輸入腳位P2
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
Serial.print(tempC);
Serial.println("C");
}
圖 ↓
讀取顯示溫度C,可自行透過數據轉換顯示成華式F,
如要改變顯示頻率則需至外掛程式修改,
最後測式將資料腳的電力及電阻移除,結果是無資料的,
至於不加電阻直接供電,推測是會燒壞晶片的.
相關資料參考
http://www.pjrc.com/teensy/td_libs_OneWire.html
https://github.com/milesburton/Arduino-Temperature-Control-Library
https://www.milesburton.com/w/index.php/Dallas_Temperature_Control_Library