產(chǎn)品分類

      當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 工業(yè)傳感器 > 溫度傳感器

      類型分類:
      科普知識
      數(shù)據(jù)分類:
      溫度傳感器

      protues溫度傳感器:DS18B20型溫度傳感器的使用詳解及Proteus仿真(附源碼)

      發(fā)布日期:2022-10-09 點擊率:71


      protues溫度傳感器:DS18B20型溫度傳感器的使用詳解及Proteus仿真(附源碼)

      一、概述

      DS18B20數(shù)字溫度傳感器提供9bit到12bit的攝氏溫度測量精度和一個用戶可編程的非易失性且具有過溫和低溫觸發(fā)報警的報警功能。DS18B20采用的1-Wire即單總線通信方式,即僅采用一個數(shù)據(jù)線與微控制器進(jìn)行通信。該傳感器的溫度監(jiān)測范圍為-55℃至+125℃,并且在溫度超過-10℃至85℃之外時還具有+-0.5℃的精度。此外,DS18B20可以直接由數(shù)據(jù)線供電而不需要外部電源供電。(本篇文章重在以簡單例子講清楚該型傳感器最難的部分即工作時序,同時向大家分享例程及自己遇到的編程中的“坑”,幫助大家少走彎路盡快上手該型傳感器,而不追求功能上的盡善盡美,因此本文仿真只能實現(xiàn)正整數(shù)溫度值的顯示,對于小數(shù)則進(jìn)行四舍五入后再顯示)

      二、重要特性

      獨特的1-wire總線接口僅需要一個管腳來通信每個設(shè)備的內(nèi)部ROM上都燒寫了一個獨一無二的64位序列號多路采集能力使得分布式溫度采集應(yīng)用更加簡單無需外圍元件能夠采用數(shù)據(jù)線供電;供電范圍為3.0V至5.5V溫度可測量范圍為-55℃至+125℃(-67℉至+257℉)溫度超過-10℃至85℃之外時還具有+-0.5℃的精度內(nèi)部溫度采集精度可由用戶自定義為9bit至12bit(上電默認(rèn)12bit)溫度轉(zhuǎn)換時間在12bit時達(dá)到最大值750ms用戶自定義非易失性的報警設(shè)置
      三、工作指令

      溫度轉(zhuǎn)換指令:0x44(即44H),啟動Ds18b20啟動轉(zhuǎn)換溫度讀暫存器指令:0xBE(即BEH),讀取暫存器中的九字節(jié)數(shù)據(jù)寫暫存器置零:0x4E(即4EH),把數(shù)據(jù)寫入暫存器的TH、TL賦值暫存器:0x48(即48H),把暫存器中的TH、TL寫入EEPROM中讀電源供電方式:0xB4(即B4H):啟動Ds18b20,發(fā)送電源供電方式重調(diào)EEPROM:0xB8(即B8H):把EEPROM中的TH、TL讀至?xí)捍嫫?br/>四·、通過單總線訪問DS18B20的順序

      初始化ROM操作指令存儲器操作命令執(zhí)行/數(shù)據(jù)
      五、工作時序

      (一)初始化(復(fù)位操作)

      在初始化序列期間,總線上的主設(shè)備通過拉低1-wire總線超過480us來發(fā)送(TX)復(fù)位脈沖。之后主設(shè)備釋放總線而進(jìn)入接收模式(RX)。當(dāng)總線釋放后,5KΩ左右的上拉電阻將1-wire總線拉至高電平。當(dāng)DS18B20檢測到該上升沿后,其等待15us至60us后通過1-wire總線拉低60us至240us來是實現(xiàn)發(fā)送一個存在脈沖。

      圖5.1? “復(fù)位”操作時序圖

      根據(jù)上述描述及時序圖,可以寫出“復(fù)位”操作的子函數(shù):

      (二)控制器的“寫”操作(先寫低位后寫高位)

      “寫”時段有兩種情況:寫“1”時段和寫“0”時段??刂破魍ㄟ^寫1時段來向DS18B20中寫入邏輯1以及通過寫0時段來向DS18B20中寫入邏輯0。每個寫時段最小必須有60us的持續(xù)時間且堵路的寫時段之間至少要有1us的恢復(fù)時間。兩個寫時段都是由控制器通過將1-wire中先拉低來進(jìn)行初始化(詳見圖5.2)。

      為了形成寫1時段,在將1-wire總線拉低后,主設(shè)備必須在15us之內(nèi)釋放總線。當(dāng)總線釋放后,5KΩ的上拉電阻將總線拉高;為了形成寫0時段,在將1-wire總線拉低后,在整個時段期間控制器必須一直拉低總線(至少60us)。

      在控制器初始化寫時段后,DS18B20將會在15us至60us的時間窗口對1-wire總線進(jìn)行采樣。如果總線在采樣窗口期間是高電平,則邏輯1被寫入DS18B20;若總線是低電平,則邏輯0被寫入DS18B20。

      圖5.2 “寫”操作時序圖

      根據(jù)上述描述及時序圖,可以寫出“寫”操作的子函數(shù):

      (三)控制器的“讀”操作(先讀低位后讀高位)

      僅在讀時段期間DS18B20才能向主設(shè)備傳動數(shù)據(jù)。因此,主設(shè)備在執(zhí)行完讀暫存寄存器[BEh]或讀取供電模式[B4h]后,必須及時的生成讀時段,這樣DS18B20才能提供所需的數(shù)據(jù)。此外,主設(shè)備可以在執(zhí)行完溫度轉(zhuǎn)換[44h]或拷貝EEPROM[B8h]命令后生成讀時段,以便獲得在“DS18B20功能命令”章節(jié)中提到的操作信息。

      每個讀時段最小必須有60us的持續(xù)時間且獨立的寫時段之間至少間隔1us。讀時段通過控制器將總線拉低超過1us再釋放總線來實現(xiàn)初始化(詳見圖5.3)。當(dāng)控制器初始化完讀時段后,DS18B20將會向總線發(fā)送0或1。DS18B20將通過拉高總線發(fā)送邏輯1,拉低總線發(fā)送邏輯0.發(fā)送完邏輯0后,DS18B20將會釋放總線,在通過上拉電阻將該總線拉至高電平的閑置狀態(tài)。從DS18B20中輸出的數(shù)據(jù)在初始化讀時序后僅有15us的有效時間。因此??刂破髟匍_始改讀時段后的15us之內(nèi)必須釋放總線,并且對總線進(jìn)行采樣。

      圖5.3 “讀”操作時序圖

      根據(jù)上述描述及時序圖,可以寫出“讀”操作的子函數(shù)

      六、注意事項(我踩過的坑)

      1. 關(guān)于延時問題

      DS18B20最大的優(yōu)勢之一就是單總線通信,我們通過一根數(shù)據(jù)線就可以完成諸多操作,但作為代價的是,DS18B20的工作時序十分復(fù)雜,因此對定時精度要求極高。平時大家操作定時精度要求不高的傳感器可能會養(yǎng)成一個習(xí)慣,比如我們已經(jīng)有了一個1ms且0誤差的延時函數(shù),當(dāng)我們遇到一個20ms的延時需求時,可能會通過for/while循環(huán)將延時為1ms的延時函數(shù)執(zhí)行20次。實際上,這樣的方式所達(dá)到的延時時間的遠(yuǎn)大于20ms的,但對于定時精度要求不高的傳感器,毫秒級的誤差不會帶來影響,但對于該傳感器則不可。所以,在這款傳感器的操作中,即使已經(jīng)有一個10us的延時函數(shù)而需要一個20us的延時時,也要重新寫一個20us的延時函數(shù),不可將10us的延時函數(shù)循環(huán)執(zhí)行兩次。

      2. 關(guān)于總時序問題

      該傳感器中的所有操作都要遵循“初始化-ROM命令-DS18B20功能命令”的總時序。比如,測量溫度的操作要先后經(jīng)過“初始化-跳過ROM命令-轉(zhuǎn)換溫度命令”與“初始化-跳過ROM命令-讀取溫度命令”這兩大步。常犯的錯誤為“初始化-跳過ROM命令-轉(zhuǎn)換溫度命令-讀取溫度命令”,也就是說認(rèn)為初始化與ROM命令在操作傳感器的最初執(zhí)行一次即可,這種想法是錯誤的。

      3. 關(guān)于編程細(xì)節(jié)

      在自己編程的過程中,遭遇了一個細(xì)節(jié)性的bug,即將命令值com與掩碼mask相與是否為0作為進(jìn)入if語句內(nèi)部的判斷條件的過程中,判斷條件是這么寫的if(com&mask==0),而實際應(yīng)該寫為if((com&mask)==0),即com&mask需要用括號括起來作為一個整體,否則會出錯。

      七、完整例程(例程均為自己編寫且驗證成功)

      八、Proteus仿真圖

      圖8.1 仿真圖

      ?

      ?

      左肩理想右肩擔(dān)當(dāng),君子不怨永遠(yuǎn)不會停下腳步!
      ?

      ?

      ?

      ?

      ?

      ?

      ?

      ?

      ?

      ?
      protues溫度傳感器:DS18B20型溫度傳感器的使用詳解及Proteus仿真(附源碼)  第1張

      protues溫度傳感器:proteus中的溫度傳感器

      里面有ds18b20。可以設(shè)置溫度值

      搜transducers,或者熱敏電阻(可調(diào)電阻),數(shù)字的話18B20

      1、氧傳感器:當(dāng)氧傳感器故障時,ECU無法獲取這些信息,就不知道噴射的汽油量是否正確,而不合適的油氣空燃比會導(dǎo)致發(fā)動機功率降低,增加排放污染;
      2、輪速傳感器:它主要是收集汽車的轉(zhuǎn)速來判斷汽車有沒有打滑的征兆,所以,就有一一個專門收集汽車輪速的傳感器來完成這項工作,一般安裝在每個車輪的輪轂上,而一旦傳感器損壞,ABS會失效;
      3、水溫傳感器:當(dāng)水溫傳感器故障后,往往冷車啟動時顯示的還是熱車時的溫度信號,ECU得不到正確的信號,只能供給發(fā)動機較稀薄的混合氣,所以發(fā)動機冷車不易啟動,且還會伴隨怠速運轉(zhuǎn)不穩(wěn)定,加速動力不足的問題;
      4、電子油門踏板位置傳感器:當(dāng)傳感器失效后,ECU無法測得油門位置信號,無法獲得油門門踏板的正確位置,所以會出現(xiàn)發(fā)動機加速無力的現(xiàn)象,甚至出現(xiàn)發(fā)動機不能加速的情況;
      5、進(jìn)氣壓力傳感器:進(jìn)氣壓力傳感器顧名思義就是隨著發(fā)動機不同的轉(zhuǎn)速負(fù)荷,感應(yīng)一系列的電阻和壓力變化,轉(zhuǎn)換成電壓信號,供ECU修正噴油量和點火正時角度。一般安裝在節(jié)氣門邊上,假如故障了會引起點火困難、怠速不穩(wěn)、加速無力等問題。
      protues溫度傳感器:DS18B20型溫度傳感器的使用詳解及Proteus仿真(附源碼)  第2張

      protues溫度傳感器:Proteus仿真-數(shù)碼管顯示溫度(實驗三)

      文章參考資料
       (基于DS18B20溫度傳感器溫控系統(tǒng)的Proteus仿真)
       (LCD1602液晶顯示完全資料)
       (單片機與液晶顯示器的接口)

      一、實驗?zāi)康?br/>1.了解溫度傳感器DS18B20原理
      2.了解液晶顯示器的工作原理
      3.學(xué)會DS18B20溫度傳感器數(shù)碼管顯示
      4.學(xué)會DS18B20溫度傳感器液晶顯示.

      二、實驗原理
      DS18B20 傳感器具有以下一些特性:
      (1) 測溫范圍-55℃至+125℃,在-10℃至+85℃時的精度為正負(fù) 0.5℃; (2) 適應(yīng)電壓的范圍在 3.0 至 5.5V;
      (3) 單線接口,只用一條口線就可以與微處理器的雙向通信;
      (4) 支持多點組網(wǎng),多個 DS18B20 并接在一根口線上就可實現(xiàn)多點測溫;
      (5) 測量結(jié)果直接輸出數(shù)字溫度信號,通過單線串行傳輸給微處理器;
      (6) 具有負(fù)壓特性,電源極性接反芯片不會燒壞,只是不能正常工作;
      (7) 可編程分辨率為 9 至 12 位,對應(yīng)的分辨溫度分別是 0.5℃,0.25℃,0.125℃,
      0.0625℃,能夠?qū)崿F(xiàn)高精度測溫。
      (8) 在 9 位分辨率時可在 93.75ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字;在 12 位分辨率時可在
      750us 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字;
      (9) 傳送數(shù)據(jù)時可傳送 CRC 校驗碼,抗干擾糾錯能力強

      DQ 端外接一個上拉電阻,與處理器的任一端口連接

      DS18B20控制命令.
      33H——讀ROM(讀取溫度傳感器ROM中的編碼)
      55H——匹配ROM(發(fā)出該指令后,再發(fā)64位ROM編碼,用于匹配相應(yīng)的DS18B20)
      F0H——搜索ROM用于確定掛接在同一總線上DS18B20的數(shù)量(DS18B20支持多點組網(wǎng))
      CCH——跳過ROM,忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令
      ECH——告警搜索命令,執(zhí)行后只有溫度超過設(shè)定值的上下限才做出響應(yīng).
      44H——溫度轉(zhuǎn)換,啟動DS18B20進(jìn)行溫度轉(zhuǎn)換
      BEH——讀溫度暫存器,讀內(nèi)部RAM中9字節(jié)的溫度數(shù)據(jù)
      4EH——寫暫存器.

      主機與單個 DS18B20 連接時,不需要讀取或者匹配 ROM,只要使用跳過指令 CCH,就可以進(jìn)行數(shù)據(jù)轉(zhuǎn)換和讀取操作。

      工作時序圖
      Step1:數(shù)據(jù)線置低電平
      Step2:延時 800us 左右(時間范圍為 480us 至 960us)
      Step3:數(shù)據(jù)線拉高電平
      Step4:延時 40us 左右(時間范圍為 15us 至 60us)

      逐位讀取數(shù)據(jù),然后把 8 位數(shù)據(jù)組成 1 個字節(jié)。編寫程序時分為兩個部分,一個實現(xiàn)讀
      取一位數(shù)據(jù),另一個實現(xiàn)讀取一個字節(jié)數(shù)據(jù)。
      讀取數(shù)據(jù)步驟
      Step1:數(shù)據(jù)線置低電平
      Step2:延時5us左右(大于1us)
      Step3:數(shù)據(jù)線置高電平
      Step4:延時10us(這次延時和第一次延時之和接近15us左右)
      Step5:讀取一位數(shù)據(jù)
      Step6:延時60us左右(大于45us)
      Step7:重復(fù)上面步驟,直到讀完一個字節(jié)

      寫入數(shù)據(jù)分為寫數(shù)據(jù)位1和數(shù)據(jù)位0
      寫數(shù)據(jù)1步驟:
      Step1:數(shù)據(jù)線置低電平
      Step2:延時5us左右(大于1us左右)
      Step3:數(shù)據(jù)線置高電平
      Step4:延時70us左右(大于55us即可)
      寫數(shù)據(jù)0步驟:
      Step1:數(shù)據(jù)線置低電平
      Step2:延時70us左右(大于60us左右)
      Step3:數(shù)據(jù)線置高電平
      Step4:延時5us左右

      我們已經(jīng)了解了溫度傳感器的工作方式,但如何從溫度傳感器讀取數(shù)據(jù)顯示到液晶上面來呢?這里雖然也可以用數(shù)碼管顯示,但相比數(shù)碼管,液晶似乎更好一點,在此之前,我們必須先了解一下液晶的工作原理.

      溫度寄存器由兩個字節(jié)組成,分為低8位和高8位。一共16位。
      其中,第0位到第3位,存儲的是溫度值的小數(shù)部分。
      第4位到第10位存儲的是溫度值的整數(shù)部分。
      第11位到第15位為符號位。全0表示是正溫度,全1表示是負(fù)溫度。
      表格中的數(shù)值,如果相應(yīng)的位為1,表示存在。如果相應(yīng)的位為0,表示不存在

      液晶顯示
      LM016L的基本構(gòu)造與引腳說明:
      VSS-接地.
      VDD-電源正極
      VEE—液晶對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度
      RS—數(shù)據(jù)/命令選擇—寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器
      RW—讀寫信號選擇,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時可以讀忙信號,當(dāng)RS為高電平RW為低電平時可以寫入數(shù)據(jù)。
      E—使能信號;當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
      D0~D7—8位雙向數(shù)據(jù)口;

      關(guān)于RW,RS的操作時序

      在軟件控制問題中,需要注意幾個問題—基本問題:各時段的端口狀態(tài)(電平)

      液晶顯示器的初始化—設(shè)置初始狀態(tài)—置顯示狀態(tài)(電源、控制、數(shù)據(jù)端口等電平)

      控制口RS/RW的控制指令變化—檢測、延時、檢測—發(fā)送數(shù)據(jù)問題(電平)

      輸出數(shù)據(jù)的獲取與傳遞(讀取/寫入電平)

      在編寫 LCD1602 程序前,我們必須了解其手冊上一些非常重要的
      信息,如果這些信息不能理解透徹,編程可能會遇到或多或少的
      問題.

      指令集:
      LCD_1602 初始化指令小結(jié):
      0x38 設(shè)置 162 顯示,57 點陣,8 位數(shù)據(jù)接口
      0x01 清屏
      0x0F 開顯示,顯示光標(biāo),光標(biāo)閃爍
      0x08 只開顯示
      0x0e 開顯示,顯示光標(biāo),光標(biāo)不閃爍
      0x0c 開顯示,不顯示光標(biāo)
      0x06 地址加 1,當(dāng)寫入數(shù)據(jù)的時候光標(biāo)右移
      0x02 地址計數(shù)器 AC=0;(此時地址為 0x80) 光標(biāo)歸原點,但
      是 DDRAM 中斷內(nèi)容不變

      數(shù)據(jù)位如下

      0x80是第一行的第一個字符,0x80+1是第一行第二個,0x80+0x40是第二行第一個地址
      寫入顯示地址時,要求最高位D7恒為高電平,即1000 0000 + 0100 0000 = 0x80 + 0x40

      三、實驗器件
      1.DS18B20溫度傳感器
      2.共陰數(shù)碼管7SEG
      3.LM016L液晶顯示

      四、實驗實現(xiàn)

      數(shù)碼管實現(xiàn)

      LM016L實現(xiàn)

      為簡化代碼,下次改進(jìn)會將源碼上傳至Github.
      protues溫度傳感器:DS18B20型溫度傳感器的使用詳解及Proteus仿真(附源碼)  第3張

      protues溫度傳感器:智能溫度傳感器(Proteus+Keil)(含功能思路詳解及感想)

      功能實現(xiàn):
      (一)LCD顯示
      1.開始動畫
      一個圖形向下移動直至消失。
      2.歡迎界面
      打印出“歡迎使用溫度傳感器制作:柳玉誠”字樣。
      3.使用界面
      (1)當(dāng)前溫度、溫度上限、溫度下限顯示。
      (2)超上限報警等級、超下限報警等級顯示。
      (3)風(fēng)扇檔位顯示。
      (4)傳感器工作時間顯示。
      (二)設(shè)置上下限
      矩陣鍵盤0-9設(shè)置3位上下限,默認(rèn)上限100℃,下限25℃。
      (三)超限報警
      溫度超過上下限時LED燈閃爍,閃爍頻率通過按鈕調(diào)節(jié),共分6檔,默認(rèn)上限5檔,下限1檔。
      (四)溫度控制
      1.超下限時:電阻絲加熱,恢復(fù)正常溫度時電阻絲迅速恢復(fù)常溫。
      2.超上限時:
      通過調(diào)節(jié)高低電平占空比,使風(fēng)扇吹風(fēng)散熱,分為自動檔和手動檔。
      自動檔:
      (1)超上限1-10℃時:風(fēng)扇吹4檔自然風(fēng)(風(fēng)速先漸快后漸慢,如此往復(fù))。
      (2)超上限11-20℃時:風(fēng)扇吹1檔微風(fēng)。
      (3)超上限21-35℃時:風(fēng)扇吹2檔中風(fēng)。
      (4)超上限35℃以上時:風(fēng)扇吹3檔勁風(fēng)。
      手動檔:
      不受超上限數(shù)值的影響,手動調(diào)節(jié)1-4檔風(fēng)速。

      下一篇: PLC、DCS、FCS三大控

      上一篇: 電氣控制線路圖控制原

      推薦產(chǎn)品

      更多
      主站蜘蛛池模板: 无码人妻精品一区二区三区99不卡| 加勒比无码一区二区三区| 亚洲日韩精品一区二区三区无码| 国产另类TS人妖一区二区 | 最新欧美精品一区二区三区| 一区精品麻豆入口| 亚洲av鲁丝一区二区三区| 国产成人一区二区三区精品久久| 亚欧免费视频一区二区三区| 一本大道东京热无码一区| 精品国产日韩亚洲一区| 国产一区二区三区在线| 国产午夜精品一区二区三区极品 | 国精品无码A区一区二区| 日本精品啪啪一区二区三区| 精品国产一区在线观看| 国产精品无码一区二区三区不卡| 亚洲综合在线成人一区| 日韩免费一区二区三区在线| 国模少妇一区二区三区| 国产一区二区电影| 成人精品视频一区二区三区不卡| 中文字幕在线一区| 国产精品毛片a∨一区二区三区| 国产嫖妓一区二区三区无码| 爱爱帝国亚洲一区二区三区| 国产无人区一区二区三区| 无码丰满熟妇浪潮一区二区AV | 亚洲国产AV一区二区三区四区| 亚洲国产日韩在线一区| 韩国美女vip福利一区| 无码播放一区二区三区| 中字幕一区二区三区乱码| 成人精品一区二区不卡视频| 精品无码人妻一区二区三区18| 国产一区视频在线免费观看| 日本在线视频一区| 国产高清不卡一区二区| 无码乱人伦一区二区亚洲一| 无码人妻一区二区三区一| 国产在线第一区二区三区|