介紹: 本文詳細講解了客製化DS18B20數位溫度感測器在建構數位溫度計的應用. 包括工作原理, 硬體連接, 軟體程式設計與仿真實現. 提供完整的protes仿真圖, C原始碼及結果分析,幫助讀者深入理解與實踐DS18B20的使用.
參數信息: 電源: 3.0V – 5.5V; 解析度可調: 9 – 12 位元; 溫度範圍: -55 ℃ 至 +125 ℃; 輸出 : 紅色的 (電壓控制電路), 黃色的 (數據), 黑色的 (接地);
你得到的: 你會得到的 4 DS18B20溫度傳感器, 4 適配器模塊和 4 雌性跳線; 適配器模塊具有上拉電阻器, 它可以與沒有外部電阻的Raspberry Pi兼容;
DS18B20溫度感測器: 不銹鋼外殼的尺寸約為. 6 x 50 毫米/ 0.2 x 2 英吋, 數位溫度熱電纜的總長度約為. 1 米/ 39.4 英吋, 足夠長,可以滿足您的需求;
優質材料: 該探針由優質不銹鋼材料製成, 這是防水的, 防濕,不容易生鏽, 以防止短路;
應用廣泛: 該DS18B20溫度傳感器與Raspberry Pi兼容, 廣泛應用於電纜溝溫度監測, 鍋爐, 什麼, 農業溫室, 潔淨室, ETC.
1. DS18B20傳感器特性
DS18B20傳感器在現代溫度監測領域起關鍵作用. 它可以高精度測量溫度, 並且可以根據需要調整其分辨率, 以便以不同程度的精度實現溫度監測. 另外, DS18B20的小尺寸適合在空間有限的環境中使用, 它的易於使用的特徵降低了從初學者到專業人士的技術門檻.
在進一步探索DS18B20的性能參數之前, 有必要首先了解其工作原理. DS18B20通過數字信號傳達溫度數據, 這給溫度數據的收集帶來了便利. 與傳統的模擬溫度傳感器相比, 數字傳感器(例如DS18B20)可以提供更準確的讀數,並且在信號傳輸過程中對噪聲的敏感性較低.
為了充分利用DS18B20的這些優勢, 我們必須對其性能參數有深刻的了解. 這些參數包括溫度測量範圍, 準確性, 解決, 和電壓電壓. 這些參數不僅確定DS18B20是否可以滿足特定應用的需求, 但也會影響整個系統的性能和可靠性.
在本章中, 我們將詳細介紹DS18B20的性能參數, 分析其工作原理, 並探索其在不同應用中的優勢. 通過這些內容, 讀者將對DS18B20傳感器有更深入的了解,並為隨後的更複雜的應用和編程奠定了堅實的基礎.
2. DS18B20的1線通信協議的詳細說明
DS18B20傳感器被廣泛使用的原因很大程度上是由於其獨特的通信協議 – 1-電線通信協議. 該協議簡化了硬件連接的要求,並提供了傳輸數據的有效方法. 本章將深入分析1線通信協議的工作機制和數據交換過程,以為後續的編程實踐奠定堅實的基礎.
2.1 1線通信協議的基礎知識
2.1.1 1線通信協議的功能:
DS18B20 1線路通信協議也稱為 “單巴士” 科技. 它具有以下功能: – 單巴士通信: 僅用於雙向數據傳輸, 與傳統的多線傳感器通信方法相比,這大大降低了接線的複雜性. – 多設備連接: 支持在一個數據總線上連接多個設備, 並通過設備識別代碼來識別和通信. – 低功耗: 溝通過程中, 不參與通信時,該設備可以處於低功率待機狀態. – 高精度: 隨著數據傳輸時間較短, 它可以減少外部干擾並提高數據準確性.
2.1.2 1線通信的數據格式和定時分析
1線通信協議的數據格式遵循特定的計時規則. 它包括初始化時間, 寫入時間並閱讀時間安排:
初始化時機: 主機首先開始存在檢測時間 (存在脈衝) 通過將公共汽車拉下一段時間, 然後,傳感器會發出響應的存在脈衝.
寫入時間: 當主機發送寫入時間時, 它首先將公共汽車拉下來 1-15 微秒, 然後釋放公共汽車, 傳感器將公共汽車拉入 60-120 微秒響應.
閱讀時間: 主機通過拉下公共汽車並釋放傳感器通知傳感器發送數據, 傳感器將在一定的延遲後輸出總線上的數據位.
3. 溫度計硬件連接方法
硬件連接是構建數字溫度計的第一個也是最重要的一步. DS18B20傳感器和微控制器之間的正確連接將確保准確的數據傳輸,並為進一步的軟件編程和數據處理提供堅實的基礎. 本章將詳細介紹DS18B20和微控制器之間的接口設計原理以及電路連接的特定步驟, 並涵蓋電源和信號條件的相關內容.
3.1 DS18B20和微控制器之間的接口
3.1.1 界面電路設計原理
DS18B20的接口電路設計需要遵循幾個核心原則,以確保設備的穩定和高效的操作:
穩定的電源: DS18B20可以從數據線中獲取功率 “數據Q” (被稱為 “寄生能力模式”), 否則可以由外部電源獨立提供動力. 無論使用哪種方法, 電源必須穩定以防止電源波動引起的數據傳輸錯誤.
信號完整性: 由於DS18B20通過一行傳輸數據, 信號完整性特別關鍵. 有必要考慮信號的抗干擾能力和信號的電特性的匹配.
電路保護: 過電流保護和靜電排放 (ESD) 保護措施應包括在電路設計中,以避免損壞傳感器或微控制器.
3.1.2 電路連接的特定步驟
將DS18B20連接到微控制器通常遵循以下步驟:
電源連接: 將DS18B20的VDD引腳連接到3.3V或5V電源 (取決於微控制器的電壓水平), 和GND引腳到地面.
數據線連接: DQ引腳連接到微控制器的數字I/O PIN. 為了確保數據傳輸的穩定性, 可以在數據線和電源之間添加上拉電阻, 典型值為4.7kΩ至10kΩ.
重置和存在脈沖銷處理: 通常情況下, 重置別針 (快速恢復時間) 和存在脈沖銷 (par) DS18B20不需要外部連接, 它們是內部使用的信號.
在這個部分, 我們設計了一個基本電路,DS18B20溫度傳感器可以連接到微控制器. 以下是基於Arduino Uno和相應描述的示例電路圖:
流圖LR
DS18B20 — |VDD| 5V
DS18B20 — |接地| 接地
DS18B20 — |數據Q| 2
數據Q — |引體向上| 5V
他們之中, DS18B20代表數字溫度傳感器, 5V是微控制器的功率輸出, GND是接地線, 和 2 代表Arduino的別針. 2, 用於數據傳輸. DQ和5V之間的連接代表上拉電阻.
3.2 電源和信號條件
3.2.1 電源方法的選擇
DS18B20提供兩種電源方法:
寄生能力模式: 在此模式下, 數據線 (數據Q) 不僅可以傳輸數據, 但也為DS18B20供電. 此時, 數據線上的高級電壓應至少為3.0V,以確保足夠的電源電流. 當總線長度短並且數據傳輸不太頻繁時,通常使用此模式.
外部電源模式: 在此模式下, DS18B20具有獨立的功率輸入VDD. 用外部電源供電可以增強傳感器的信號強度並提高抗干擾能力, 適用於長距離傳輸或頻繁數據傳輸.
3.2.2 信號過濾和穩定
為了確保信號穩定性和準確的數據讀數, 信號需要正確過濾並穩定:
上拉電阻: 在數據線和電源之間添加上拉電阻,以確保數據線處於高級狀態時.
射線電路: 為了消除由線乾擾或瞬時電壓波動引起的錯誤讀數, 該信號可以在微控制器側進行軟件射擊.
ESD保護: ESD保護組件 (例如電視二極管) 被添加到傳感器和微控制器的端口中,以防止靜電放電造成的損壞.
本節進一步闡述了在表格中選擇電源和信號調理時應考慮的因素:
| 專案 | 寄生能力模式 | 外部電源模式 | 描述 | | — | — | — | — | | 適用的方案 | 短路, 罕見的數據 | 長線, 頻繁的數據 | 根據實際應用程序選擇 | | 電源穩定性 | 降低 | 更高 | 建議用於長線或高頻的外部電源 | | 成本 | 降低 | 更高 | 外部電源需要額外的電源管理組件 | | 反干擾 | 較弱 | 更強 | 外部電源更適合高干預環境 |
上述連接方法和信號處理策略可以有效地將DS18B20溫度傳感器整合到任何微控制器系統中. 下一章將介紹如何使用C語言:
DS18B20的功能編程實踐:
4. DS18B20數字溫度計C語言編程
4.1 編程基金會和環境準備
4.1.1 程序設計思想和框架構建
在開始編寫DS18B20數字溫度計的C語言程序之前, 您首先需要建立程序設計的基本思想. DS18B20傳感器通過1線通信協議與微控制器通信. 所以, 該程序的主要任務是實施1線通信協議的相關操作, 包括初始化DS18B20, 發送說明, 讀取溫度數據, 並轉換和顯示讀取數據.
程序框架大致分為以下部分:
初始化: 初始化微控制器和DS18B20傳感器.
主循環: 包含一個連續讀取傳感器數據的循環.
1-電線通信功能庫: 包含實施單線通信協議的功能.
數據處理: 將傳感器返回的原始數據轉換為可讀的溫度值.
顯示輸出: 在LCD屏幕上顯示處理的溫度數據或通過串行端口將其輸出到計算機.
4.1.2 開發環境建設和配置
為了編程和開發DS18B20數字溫度計, 您需要準備開發環境並適當配置. 以下是開發的基本步驟:
選擇開發環境: 選擇適當的集成開發環境 (IDE) 根據微控制器的類型, 例如基於ARM Cortex-M系列微控制器的開發. 您可以使用Keil MDK或STM32Cubeide.
配置編譯器: 根據使用的IDE, 配置編譯器以確保可以正確編譯C語言代碼.
建立硬件開發板: 選擇合適的微控制板, 例如基於STM32, ESP32, ETC.
連接開發委員會: 通過1線通信協議將DS18B20傳感器連接到微控制器的指定引腳.
寫代碼: 在IDE中創建一個新的C語言項目並開始編寫程序代碼.
編譯和調試: 使用IDE工具編譯代碼並將其運行在開發板上進行調試.
#包括 <stdio.h>
// DS18B20一線通信功能庫聲明
無效 DS18B20_Init();
void ds18b20_reset();
無效 DS18B20_WriteByte(未簽名的char dat);
未簽名的char ds18b20_readbyte();
int ds18b20_readtemperature();
整數主() {
// 初始化DS18B20傳感器
DS18B20_熱();
// 主循環
儘管(1) {
// 讀取溫度值
int溫度= ds18b20_readtemperature();
// 串行端口或其他顯示設備的輸出溫度值
列印函數(“電流溫度: %D n”, 溫度);
}
返回 0;
}
4.2 DS18B20溫度閱讀程序實施
4.2.1 單線通信功能庫的構建
為了實現DS18B20的溫度讀數, 您首先需要建立一個單線通信功能庫. 以下是幾個關鍵功能的實現方法:
DS18B20_熱(): 初始化單線通信時間.
DS18B20_RESET(): 重置傳感器並檢測其脈衝.
DS18B20_WriteByte(未簽名的char dat): 將數據字節寫入傳感器.
DS18B20_讀字節(): 讀取來自傳感器的數據字節.
DS18B20_readTemperature(): 閱讀溫度並轉換.
DS18B20的單線通信功能庫的實現非常複雜,因為它需要精確控制PIN級別的更改才能遵循單線通信協議. 以下是函數實現的示例:
void ds18b20_reset() {
// 單行通信重置序列, 包括拉下數據線, 延遲, 釋放公共汽車, 並檢測存在脈衝
// …
}
此功能的目的是將重置脈衝發送到DS18B20. 重置成功後, DS18B20將返回存在脈衝.
4.2.2 實施溫度閱讀算法
讀取DS18B20傳感器的溫度值是一個更複雜的過程, 因為有必要在某個時間安排中向傳感器發送特定說明並正確閱讀返回的數據. 用於讀取溫度值的算法如下:
重置傳感器.
發送 “船室” 命令 (0xCC).
發送 “轉換溫度” 命令 (0x44).
等待轉換完成.
發送 “閱讀登記冊” 命令 (0乙醚).
閱讀兩個字節的溫度數據.
以下代碼顯示瞭如何讀取DS18B20的溫度值:
int ds18b20_readtemperature() {
未簽名的char temp_low, temp_high;
未簽名的int溫度;
// 重置傳感器並跳過ROM說明
DS18B20_RESET();
DS18B20_WriteByte(0xCC); // 跳過ROM命令
// 發送轉換溫度命令
DS18B20_WriteByte(0x44);
// 等待轉換完成. 在這裡,您需要根據DS18B20的轉換時間等待
// …
// 重置傳感器並讀取溫度數據
DS18B20_RESET();
DS18B20_WriteByte(0xCC); // 跳過ROM命令
DS18B20_WriteByte(0乙醚); // 讀取寄存器命令
// 讀取兩個字節的數據
temp_low = ds18b20_readbyte();
temp_high = ds18b20_readbyte();
// 將兩個字節組合到16位整數中
溫度= (temp_high << 8) | temp_low;
// 返回溫度值, 根據DS18B20的分辨率適當轉換
返回溫度;
}
4.2.3 程序調試和例外處理
編寫DS18B20閱讀程序時, 程序調試和例外處理非常重要. 在調試期間, 您可能需要使用串行端口調試助手檢查輸出溫度值是否正確, 或使用邏輯分析儀監視一線通信的信號時間. 例外處理需要考慮硬件故障, 通信錯誤, DS18B20的異常反應.
以下是一些調試和例外處理策略:
數據驗證: 每個數據讀取後, 使用校驗和檢查位以確認數據的正確性.
異常捕獲: 在程序中添加異常捕獲機制, 例如超時重試機制, 重置傳感器, ETC.
調試信息: 將足夠的調試信息輸出添加到程序中以幫助找到問題.
整數主() {
// 初始化DS18B20傳感器
DS18B20_熱();
// 主循環
儘管(1) {
int溫度;
// 讀取溫度並檢查錯誤
溫度= ds18b20_readtemperature();
如果 (溫度 < 0) {
列印函數(“錯誤讀數溫度!\n”);
// 您可以選擇重試或其他錯誤處理機制
} 別的 {
列印函數(“電流溫度: %D n”, 溫度);
}
}
返回 0;
}
本章介紹了DS18B20數字溫度計的C語言編程基金會和環境準備, 以及溫度閱讀計劃的實施, 並強調程序調試和異常處理的重要性. 通過介紹本章, 讀者應該能夠建立發展環境, 了解一線通信功能庫的重要性, 並編寫一個基本的溫度閱讀程序. 以下章節將進一步深入研究Proteus模擬環境的構建和使用, 為實際硬件組裝提供模擬測試方法.
5. Proteus仿真圖和仿真結果分析
5.1 Proteus模擬環境建設
5.1.1 Proteus軟件的基本操作
在開始構建DS18B20數字溫度計的模擬模型之前, 您首先需要了解和掌握Proteus軟件的基本操作. Proteus是一種強大的電子電路模擬軟件,不僅可以設計電路原理圖, 而且還設計電路PCB佈局並提供模擬功能. 這是一些關鍵步驟,可以幫助您開始使用Proteus:
打開Proteus軟件並創建一個新項目.
在組件庫中搜索並選擇所需的組件, 例如DS18B20傳感器, 微控制器, 電源, 連接電線, ETC.
將選定的組件拖到設計區域,然後使用鼠標放置和佈局.
使用接線工具連接每個組件的引腳以形成完整的電路.
雙擊組件或電線以修改其屬性, 例如電阻值, 電源電壓, ETC.
確保所有組件都正確連接並檢查錯誤或遺漏.
5.1.2 創建DS18B20仿真項目
為DS18B20數字溫度計創建模擬項目的步驟如下:
啟動proteus並選擇 “新項目” 創建一個新項目.
設置項目名稱和位置後, 點擊 “下一個”.
選擇一個項目模板, 例如 “基於微處理器”, 然後單擊 “下一個”.
在 “項目項目” 選項卡, 查看 “包括默認組件” 並選擇一個微控制器 (例如圖片, avr, ETC。) 和DS18B20傳感器.
點擊 “結束” 完成項目創建.
下一個, 創建電路示意圖:
選擇 “選擇設備” 工具, 在組件庫中查找並選擇微控制器和DS18B20傳感器.
使用 “放置設備” 將所選組件放置在設計區域的工具.
使用 “金屬絲” 連接微控制器和DS18B20傳感器的相關引腳的工具.
完成連接後, 使用 “文字” 在電路圖上添加註釋以方便理解和修改的工具.
5.2 仿真測試和數據分析
5.2.1 設置仿真參數和條件
開始模擬之前, 您需要設置模擬運行的參數和條件:
雙擊MicroController組件以輸入屬性設置接口.
選擇先前編寫的程序文件路徑 “程序文件”.
設置電源參數,以確保微控制器和DS18B20傳感器具有正確的電源電壓.
下一個, 設置仿真的時間參數:
在模擬控制面板中, 選擇 “全球設置”.
調整模擬速度和最大模擬時間.
設置適當的斷點以分析模擬過程中的數據.
5.2.2 模擬和讀取溫度數據
運行模擬並模擬溫度數據:
單擊 “玩” 模擬控制面板中的按鈕以開始模擬.
使用 “偵錯” 查看程序運行狀態和變量值的工具.
模擬DS18B20傳感器以讀取溫度值, 通常通過在模擬環境中修改虛擬溫度計來實現這一目標.
在模擬中讀取溫度數據, 您可以參考以下步驟:
在DS18B20組件的屬性中找到溫度模擬設置.
修改溫度值以在不同溫度條件下測試系統響應.
觀察微控制器程序如何處理溫度數據.
5.2.3 結果分析和故障排除
分析模擬結果並確認溫度計的性能:
監視輸出窗口中的數據以檢查溫度讀數是否準確.
使用邏輯分析儀工具監視數據通信過程是否正常.
檢查是否有任何異常信號或不穩定的輸出.
執行故障診斷和調試:
如果溫度讀數不准確或有錯誤, 檢查DS18B20的連接方法和配置.
分析程序代碼,以確保正確實現一線通信和數據轉換算法.
使用 “停止” 模擬軟件的功能暫停模擬並觀察系統的當前狀態.