步驟1:DS18B20的簡要介紹數(shù)字溫度傳感器IC
DS18B20是一款能夠測量溫度并提供直接數(shù)字信號的溫度傳感器IC,即與LM35等其他溫度傳感器不同,它可以直接發(fā)送溫度讀數(shù)到任何微處理器,微控制器或個人計算機。
主要功能:-
****可測量-55°C至+ 125°C(-67°F至+257)的溫度°F)±0.5°C -10°C至+ 85°C的精度
****可以在9位至12位數(shù)字信號之間設置測量精度(不影響讀取時間) )。
**它具有警報功能,具有用戶可編程的上下觸發(fā)點,非易失性。即,當溫度達到某個較低或較高的閾值設定點時,可以將其編程為觸發(fā)外部警報或恒溫器以分別指示或控制任何外部設備。即使傳感器斷電,這些設定點仍保留在其存儲器中。
**它通過1-Wire?總線進行通信,根據(jù)定義,該總線僅需要一條數(shù)據(jù)線(和地線)即可與之通信。
**此外,DS18B20可以直接從數(shù)據(jù)線獲取電源(“寄生電源”),而無需外部電源。
**如果要使用外部電源運行,則可以在+3.0 V至+ 5.5V之間運行。這使其與3.3V IC(如Arduino Due,esp8266等)以及5V IC(如Arduino Uno,Nano等)兼容。
**每個DS18B20都有唯一的64位串行代碼,該代碼可允許多個DS18B20可在同一1-Wire總線上工作。因此,使用一個微處理器控制分布在大面積上的許多DS18B20很簡單。
**不需要外部電路,除了某些情況下需要10k上拉電阻。
可以從此功能中受益的應用包括HVAC環(huán)境控制,溫度監(jiān)控系統(tǒng)
步驟2:DS18B20引腳連接
DS18B20來了以不同的形式包裝。它以IC或ebay,aliexpress等形式出現(xiàn),我們可以找到非常便宜的封裝版本。我使用的是從aliexpress.com訂購的鋼封裝(在我的博客上提供的鏈接以及此說明的結(jié)尾)
**如果您使用的是TO-92封裝,即顯示的裸IC表格在附加的圖像中,引腳排列為-左接地,中間DQ或數(shù)據(jù),右VCC(我分別將這些行編碼為黑色,黃色,紅色以匹配封裝形式的導線編碼)
**通常,黑色線是接地線,紅色是+ ve VCC(+3.0至+ 5.5V),黃色線是DQ或數(shù)據(jù)線。在我們的情況下,紅色線將達到NodeMCU的+ 3.3V或外部電源具有3.3V穩(wěn)定電壓。
**在黃色DQ線和+ VCC之間連接了一個大約4.7K歐姆的上拉電阻(可以使用接近4.7K的任何其他值)(有時,
** DQ或數(shù)據(jù)(黃色)線應連接到我們的微控制器,即NodeMCU數(shù)字輸入引腳。在我們的情況下,它連接到D1或GPIO 5 [注意-NodeMCU板和實際ESP8266 IC的引腳映射不同,請參閱我以前的說明以了解NodeMCU,ESP8266和Arduino IDE之間的引腳映射的詳細信息]
另一個重要說明-避免將DQ或數(shù)據(jù)線連接到NodeMCU的D0引腳,我注意到,如果我們將DQ線與D0處的外部上拉相連,則在編程/上載代碼時會出錯針/GPIO16。
第3步:使用NodeMCU連接OLED顯示屏(在SPI模式下)
最初,我在努力使自己的體積變得很小OLED顯示器可與NodeMCU一起使用。經(jīng)過大量的努力,終于找到了正確的引腳連接,如圖所示。
我在這里和這里都使用了Adafruit OLED顯示庫。您需要首先安裝這兩個庫才能使OLED顯示器正常工作。
注-我嘗試過幾次將自己喜歡的U8GLIB庫用于OLED顯示器,但是失敗了。最后,我在某處讀到了使用arduino IDE與ESP8266接口的U8GLIB庫存在一些問題。如果您正在使用ESPLORER之類的其他IDE,那么u8GLIB可以正常工作-如我的視頻所示。
不要忘記在代碼中調(diào)用的構(gòu)造函數(shù)中插入正確的引腳號。
#define OLED_SDA D7//MOSI
#define OLED_SCL D5//CLK
#define OLED_DC D4//DC
#define OLED_CS 12//不需要將任何東西連接到此引腳,只需使用一些引腳號
#define OLED_RESET D3//RES
//這是構(gòu)造函數(shù)來調(diào)用
Adafruit_SSD1306顯示屏(OLED_SDA,OLED_SCL,OLED_DC,OLED_RESET,OLED_CS);
有關接口的更多信息,請參見我的博客文章和youtube視頻。
步驟4:整個系統(tǒng)的電路圖
最終的完整電路圖如圖所示。
我已經(jīng)通過NodeMCU的3.3V輸出為DS18B20和OLED顯示器供電。您也可以使用外部電源。
一些有時會遇到問題的技巧-
因為,esp8266是耗電設備,如果您遇到無法上傳草圖的問題,只需斷開DS18B20 VCC引腳,直到草圖完全上傳即可上載草圖后再重新連接。
我注意到,即使成功上傳了草圖幾次,顯示劑量仍會顯示任何溫度。一種解決方案是在上載草圖后重新啟動NodeMCU。可以通過按NodeMCU上的Reset(重置)按鈕或僅移除VCC或USB電纜并重新連接來完成電源重置。
第5步:代碼/草圖,庫和鏈接
在此處可以找到arduino IDE的工作代碼(帶有注釋-解釋)。我的博客文章或以下.ino文件附件。
該項目中使用的所有庫也都附在
下的.rar文件中(或者您可以使用以下鏈接下載庫)
可在此處獲得最新的Arduino IDE
https://www.arduino.cc/en/Main/Software
------- -------------------------------------------------- -------------------------------------------------- -----------------
用于arduino IDE和DS18B20的庫在此處作為達拉斯溫度庫提供。
https://github.com/milesburton/Arduino-Temperature 。..
Adafruit的OLED顯示庫可在此處和此處
https://github.com/adafruit/Adafruit_SSD1306
https://github.com/adafruit/Adafruit-GFX-Library
在上傳草圖之前安裝所有這三個庫
---------------------------------------- -------------------------------------------------- -
DS18B20購自banggood.com的aliexpress和nodeMCU
第6步:最終示例和與商用溫度傳感器的比較
我檢查了我們系統(tǒng)測量的OLED顯示屏上顯示的溫度,并將其與商用溫度傳感器讀取的溫度進行了比較。溫度測量在很大的溫度范圍內(nèi)都非常準確。顯然,我無法達到極低的溫度。
附帶的圖像是將傳感器保存在盛有冰的碗中(1.1°C)的讀數(shù),當傳感器使用點煙器加熱(127°C)時顯示溫度。請注意,DS18B20的工作溫度范圍為-55°C至+ 125°C(-67°F至+ 257°F)
責任編輯:wv
-
溫度傳感器
+關注
關注
48文章
2892瀏覽量
155793 -
OLED
+關注
關注
119文章
6171瀏覽量
223683 -
DS18B20
+關注
關注
10文章
777瀏覽量
80639
發(fā)布評論請先 登錄
相關推薦
評論