我們提供各種最佳的 1-Wire DS18B20 感測器連接器, 包括 Nanoflex, 顯示連接埠, USB, 太陽的, SATA, HDMI, 這就是主意, SAS & 還有更多. 所有電纜均按照最高行業標準製造. 使用感測器電路組件進行整機組裝可讓您專注於設計和行銷, 降低成本, 並從我們的裝配線中獲益, 品質保證流程, 和製造專業知識.
DS18B20 感測器使用以下方式進行通訊 “1-金屬絲” 協定, 這意味著它使用一條數據線與微控制器進行所有通信, 允許多個感測器連接在同一條線上並透過其唯一的 64 位元串列程式碼進行識別; 此單一數據線透過電阻器拉高,感測器透過在特定時隙期間拉低線來發送訊息位元來傳輸數據.
DS18B20溫度傳感器: DS18B20防水探頭專為水下使用設計, 能夠在潮濕的環境中運作而不會被水或濕氣損壞.
溫度感測器供電電壓: 3.0電壓~5.25V;
工作溫度範圍:-55 ℃ 至 +125 ℃ (-67 華氏度 至 +257 華氏度);
提供 9 位至 12 位攝氏度溫度測量;
適配器模組配有上拉電阻, 直接連接樹莓派的GPIO,無需外接電阻;
使用此適配器模組套件可以簡化防水溫度感測器與您的專案的連接.
1. 有關 1-Wire 協議的要點:
單數據線:
感測器和微控制器之間的通訊只需要一條線.
半雙工通信:
資料可以雙向發送, 但一次只有一個方向.
寄生力量:
DS18B20在通訊過程中可以直接由數據線供電, 在某些情況下無需單獨的電源.
唯一的設備位址:
每個 DS18B20 感測器都有一個獨特的 64 位元串列程式碼,允許微控制器識別和定址匯流排上的各個感測器.
與 DS18B20 的通訊步驟:
1.1 重設脈衝:
微控制器透過將數據線拉低一段特定的持續時間來啟動通信 (重設脈衝).
1.2 存在脈衝:
如果總線上存在 DS18B20, 它將以短脈衝響應, 表明它的存在.
1.3 ROM命令:
微控制器發送 ROM 命令來讀取特定感測器的唯一 64 位元代碼 (“匹配ROM”) 或尋址總線上的所有感測器 (“跳過ROM”).
1.4 功能命令:
取決於所需的操作 (例如讀取溫度), 微控制器向感測器發送特定功能命令.
1.5 資料傳輸:
資料是逐位傳輸的, 感測器將數據線拉低以發送 ‘0’ 並讓線路變高以發送“1”.
2. DS18B20的1線通信協議的詳細說明
DS18B20傳感器被廣泛使用的原因很大程度上是由於其獨特的通信協議 – 1-電線通信協議. 該協議簡化了硬件連接的要求,並提供了傳輸數據的有效方法. 本章將深入分析1線通信協議的工作機制和數據交換過程,以為後續的編程實踐奠定堅實的基礎.
2.1 1線通信協議的基礎知識
2.1.1 1線通信協議的功能:
DS18B20 1線路通信協議也稱為 “單巴士” 科技. 它具有以下功能: – 單巴士通信: 僅用於雙向數據傳輸, 與傳統的多線傳感器通信方法相比,這大大降低了接線的複雜性. – 多設備連接: 支持在一個數據總線上連接多個設備, 並通過設備識別代碼來識別和通信. – 低功耗: 溝通過程中, 不參與通信時,該設備可以處於低功率待機狀態. – 高精度: 隨著數據傳輸時間較短, 它可以減少外部干擾並提高數據準確性.
2.1.2 1線通信的數據格式和定時分析
1線通信協議的數據格式遵循特定的計時規則. 它包括初始化時間, 寫入時間並閱讀時間安排:
初始化時機: 主機首先開始存在檢測時間 (存在脈衝) 通過將公共汽車拉下一段時間, 然後,傳感器會發出響應的存在脈衝.
寫入時間: 當主機發送寫入時間時, 它首先將公共汽車拉下來 1-15 微秒, 然後釋放公共汽車, 傳感器將公共汽車拉入 60-120 微秒響應.
閱讀時間: 主機通過拉下公共汽車並釋放傳感器通知傳感器發送數據, 傳感器將在一定的延遲後輸出總線上的數據位.
2.2 數據通訊的軟體實現
2.2.1 1線通訊的初始化與重設
在軟體層面, 1-Wire通訊的初始化和重設是通訊的第一步. 下面是實現這個過程的偽代碼:
// OneWire通訊初始化函數
無效 OneWire_Init() {
// 將總線設定為輸入模式並啟用上拉電阻
設定引腳模式(DS18B20_PIN, 輸入上拉);
// 等待公車空閒
延遲微秒(1);
// 發送復位脈衝
OneWire_重置();
}
// OneWire通訊重設功能
無效 OneWire_Reset() {
// 把公車拉下來
設定引腳模式(DS18B20_PIN, 輸出低電平);
延遲微秒(480);
// 釋放總線
設定引腳模式(DS18B20_PIN, 輸入上拉);
延遲微秒(70);
// 等待脈衝的出現
如果 (!等待OneWire存在())
// 未偵測到脈搏, 可能是感測器沒有連接或初始化失敗
處理錯誤();
延遲微秒(410);
}
// 等待脈衝的出現
布爾 WaitForOneWirePresence() {
返回讀取密碼(DS18B20_PIN) == 0; // 假設低電平是訊號存在
}
2.2.2 資料讀寫操作
數據讀寫操作是感測器通訊的核心部分. 下面的程式碼展示如何將一個位元組寫入單線匯流排:
// 將一個位元組寫入單線匯流排
無效 OneWire_WriteByte(位元組數據) {
為了 (整數我 = 0; 我 < 8; 我++) {
OneWire_WriteBit(數據 & 0x01);
數據 >>= 1;
}
}
// 向單線總線寫入一位
無效 OneWire_WriteBit(位元數據) {
設定引腳模式(DS18B20_PIN, 輸出低電平);
如果 (數據) {
// 寫入時釋放總線 1
設定引腳模式(DS18B20_PIN, 輸入上拉);
延遲微秒(1);
} 別的 {
// 寫入時繼續將總線拉低 0
延遲微秒(60);
}
設定引腳模式(DS18B20_PIN, 輸入上拉);
延遲微秒(1);
}
接下來是讀取一個位元組的函數:
// 從單線總線讀取一個位元組
位元組 OneWire_ReadByte() {
位元組資料= 0;
為了 (整數我 = 0; 我 < 8; 我++) {
數據 >>= 1;
如果 (OneWire_ReadBit())
數據 |= 0x80;
}
傳回數據;
}
// 從單線總線讀取一位
位元 OneWire_ReadBit() {
設定引腳模式(DS18B20_PIN, 輸出低電平);
設定引腳模式(DS18B20_PIN, 輸入上拉);
延遲微秒(3);
布林結果 = ReadPin(DS18B20_PIN);
延遲微秒(57);
回傳結果;
}
2.2.3 OneWire通訊的驗證機制
OneWire通訊協定在資料交換過程中採用簡單的驗證機制, 通常透過讀回寫入的資料來驗證資料的正確性. 以下是驗證寫入資料的範例程式碼:
位元組資料 = 0x55; // 假設要傳送的數據
OneWire_WriteByte(數據); // 將資料寫入 OneWire 總線
位元組讀取資料 = OneWire_ReadByte(); // 從 OneWire 總線讀回數據
如果 (讀取數據 != 數據) {
處理錯誤(); // 如果讀回的資料與寫入的資料不匹配, 處理錯誤
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt





