2023年4月24日 星期一

Arduino學習.溫度晶片DS18B20

 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

沒有留言:

張貼留言