本文主要介紹ds18b20溫度傳感器工作原理,DS18B20 的工作原理,可以從物理世界到數(shù)字信號(hào)的轉(zhuǎn)化過(guò)程來(lái)理解。它內(nèi)部并沒(méi)有采用我們常見(jiàn)的模數(shù)轉(zhuǎn)換器(ADC),而是用了一種精巧的“脈沖計(jì)數(shù)”方式來(lái)測(cè)量溫度。
![]()
ds18b20溫度傳感器工作原理
為了讓你更清晰地理解,我們可以把這個(gè)過(guò)程拆解為兩個(gè)部分:硬件上它是如何測(cè)量溫度的,以及最終讀到的數(shù)據(jù)代表什么意思。
第一部分:它是如何“感知”溫度的?—— 脈沖計(jì)數(shù)法
你可以把 DS18B20 的內(nèi)部想象成一個(gè)精密的“秒表”車間,有兩個(gè)關(guān)鍵部件在協(xié)同工作:
兩個(gè)特性不同的振蕩器:
低溫度系數(shù)振蕩器:就像一個(gè)節(jié)拍極其穩(wěn)定的節(jié)拍器。它受溫度影響極小,負(fù)責(zé)產(chǎn)生頻率固定的脈沖,作為整個(gè)測(cè)量的時(shí)間基準(zhǔn)。
高溫度系數(shù)振蕩器:像一個(gè)對(duì)溫度非常敏感的脈沖發(fā)生器。溫度越高,它產(chǎn)生脈沖的頻率就越快;溫度越低,頻率就越慢。
兩個(gè)相互配合的計(jì)數(shù)器:
計(jì)數(shù)器1:初始時(shí),芯片會(huì)根據(jù)一個(gè)基準(zhǔn)溫度(通常是-55℃)給計(jì)數(shù)器1預(yù)設(shè)一個(gè)初始值。然后,穩(wěn)定的節(jié)拍器(低溫度系數(shù)振蕩器)每發(fā)出一個(gè)脈沖,計(jì)數(shù)器1就減1。當(dāng)它減到0時(shí),就向溫度寄存器報(bào)告:“我數(shù)完了一次!” 同時(shí),計(jì)數(shù)器1會(huì)自動(dòng)重新加載初始值,開(kāi)始下一輪計(jì)數(shù)。
計(jì)數(shù)器2:它負(fù)責(zé)控制整個(gè)測(cè)量的總時(shí)長(zhǎng)。敏感的振蕩器(高溫度系數(shù)振蕩器)產(chǎn)生的脈沖會(huì)送給計(jì)數(shù)器2。當(dāng)計(jì)數(shù)器2從初始值減到0時(shí),它就會(huì)發(fā)出指令,停止整個(gè)測(cè)量過(guò)程。
溫度值的誕生:
在整個(gè)測(cè)量過(guò)程中,每當(dāng)計(jì)數(shù)器1完成一次從初始值減到0的循環(huán),溫度寄存器的值就會(huì)增加1。這個(gè)過(guò)程會(huì)一直持續(xù),直到計(jì)數(shù)器2減到0才停止。
最終,溫度寄存器里累加的值,就代表了當(dāng)前的溫度。溫度越高,高溫度系數(shù)振蕩器跑得越快,計(jì)數(shù)器2就減得越快,留給計(jì)數(shù)器1的計(jì)數(shù)時(shí)間就越短,但這背后更精細(xì)的算法確保了最終累加的值能與溫度精確對(duì)應(yīng)。
一個(gè)小小的“補(bǔ)丁”——斜率累加器
由于高溫度系數(shù)振蕩器的頻率變化并非完美的線性關(guān)系,DS18B20內(nèi)部還有一個(gè)“斜率累加器”電路。它就像一個(gè)智能校準(zhǔn)器,會(huì)根據(jù)溫度實(shí)時(shí)微調(diào)計(jì)數(shù)器1每次重新加載的初始值,從而補(bǔ)償非線性誤差,保證測(cè)量的準(zhǔn)確性。
一個(gè)形象的比喻:這就像用兩個(gè)跑步的人來(lái)測(cè)量距離。一個(gè)人(計(jì)數(shù)器1)以固定速度短距離往返跑,每跑完一趟就插一面旗(溫度值+1)。另一個(gè)人(計(jì)數(shù)器2)以變速跑(速度受溫度影響)來(lái)決定總共跑多長(zhǎng)時(shí)間。最終插下的旗子總數(shù),就代表了“溫度”這個(gè)距離。
第二部分:讀到的數(shù)據(jù)怎么理解?—— 16位數(shù)字輸出
當(dāng)測(cè)量結(jié)束后,DS18B20會(huì)通過(guò)單總線把結(jié)果送出來(lái)。這個(gè)結(jié)果是一個(gè)16位的數(shù)字,你需要知道如何“翻譯”它。
數(shù)據(jù)格式:這16位數(shù)據(jù)以二進(jìn)制補(bǔ)碼的形式存儲(chǔ)。
高5位(Bit 15 ~ Bit 11):這是符號(hào)位。如果這5位都是 0,表示溫度為正;如果都是 1,則表示溫度為負(fù)。
低11位(Bit 10 ~ Bit 0):這是溫度數(shù)據(jù)的絕對(duì)值。其中,高7位是整數(shù)部分,低4位是小數(shù)部分。
轉(zhuǎn)換公式:無(wú)論正負(fù),你都可以用同一個(gè)公式來(lái)計(jì)算實(shí)際溫度:實(shí)際溫度 = (讀取的16位二進(jìn)制補(bǔ)碼數(shù)據(jù)) × 0.0625 °C。
這里的 0.0625°C (即 1/16) 是傳感器在12位分辨率下的最小分辨率。
舉個(gè)栗子:
如果你從傳感器讀到的數(shù)據(jù)是 07 D0(十六進(jìn)制),轉(zhuǎn)換成十進(jìn)制是 2000,那么實(shí)際溫度 = 2000 × 0.0625 = 125°C。
如果你讀到的數(shù)據(jù)是 FC 90(十六進(jìn)制),這是一個(gè)負(fù)數(shù)。先把它轉(zhuǎn)換成十進(jìn)制是 -880,那么實(shí)際溫度 = -880 × 0.0625 = -55°C。
總的來(lái)說(shuō),DS18B20就是用這種獨(dú)特的脈沖計(jì)數(shù)法,將物理世界的溫度,巧妙轉(zhuǎn)化成了我們可以直接讀取的數(shù)字信號(hào)。
小結(jié):以上就是ds18b20溫度傳感器工作原理,希望對(duì)各位電子元器件買家有幫助,了解更多電子元器件知識(shí)內(nèi)容。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.