DS18B20數(shù)字溫度傳感器(上)
DS18B20是美國Maxim Integrated(原Dallas Semiconductor)推出的一款款單總線數(shù)字溫度傳感器,憑借其單總線通信的簡(jiǎn)潔性、無需外圍元件的集成設(shè)計(jì)、寬溫域測(cè)量能力及可級(jí)聯(lián)多節(jié)點(diǎn)的特性,成為嵌入式系統(tǒng)、環(huán)境監(jiān)測(cè)、智能家居等領(lǐng)域中最常用的溫度傳感方案之一。從工業(yè)設(shè)備的過熱保護(hù)到家庭溫濕度計(jì)的精準(zhǔn)測(cè)溫,從汽車空調(diào)的環(huán)境感知到醫(yī)療設(shè)備的體溫監(jiān)測(cè),DS18B20以其穩(wěn)定的性能和靈活的應(yīng)用方式,在各類溫度采集場(chǎng)景中占據(jù)著重要地位,其設(shè)計(jì)理念充分體現(xiàn)了“簡(jiǎn)化硬件、強(qiáng)化軟件”的嵌入式設(shè)計(jì)思路。
DS18B20的核心優(yōu)勢(shì)源于其獨(dú)特的單總線(1-Wire)通信協(xié)議,這一協(xié)議允許僅通過一根信號(hào)線(加上地線)實(shí)現(xiàn)傳感器與微控制器(MCU)之間的雙向數(shù)據(jù)傳輸,極大簡(jiǎn)化了硬件布線。與傳統(tǒng)的模擬溫度傳感器(如LM35)需要AD轉(zhuǎn)換器、I2C傳感器需要SDA/SCL兩根線不同,DS18B20的單總線設(shè)計(jì)使系統(tǒng)電路更簡(jiǎn)潔,尤其適合空間受限或布線復(fù)雜的場(chǎng)景——例如,在分布式溫度監(jiān)測(cè)系統(tǒng)中,多個(gè)DS18B20可共用一根總線連接到MCU,無需為每個(gè)傳感器單獨(dú)布線,大幅降低了硬件成本與布線難度。單總線的通信過程通過嚴(yán)格的時(shí)序控制實(shí)現(xiàn),包括初始化、ROM命令、功能命令三個(gè)階段:初始化時(shí),MCU先發(fā)送復(fù)位脈沖(至少480μs的低電平),釋放總線后等待傳感器返回應(yīng)答脈沖(60~240μs的低電平),確認(rèn)傳感器在線;隨后,MCU發(fā)送ROM命令(如讀取64位ROM代碼、匹配ROM、搜索ROM等),用于在多傳感器級(jí)聯(lián)時(shí)識(shí)別目標(biāo)設(shè)備;最后發(fā)送功能命令(如啟動(dòng)溫度轉(zhuǎn)換、讀取暫存器、寫入配置寄存器等),完成具體的測(cè)溫與數(shù)據(jù)交互。這種時(shí)序嚴(yán)謹(jǐn)?shù)臅r(shí)序定義(如高低電平的最小/最大持續(xù)時(shí)間)是單總線通信可靠的關(guān)鍵,任何時(shí)序偏差都可能導(dǎo)致數(shù)據(jù)傳輸錯(cuò)誤,因此在軟件編程時(shí)需精確控制GPIO的電平切換時(shí)間。
從內(nèi)部結(jié)構(gòu)來看,DS18B20集成了溫度傳感器、12位ADC(模數(shù)轉(zhuǎn)換器)、64位ROM、暫存器(Scratchpad)、EEPROM及單總線接口電路,這些模塊協(xié)同工作實(shí)現(xiàn)溫度的采集、轉(zhuǎn)換與傳輸。溫度測(cè)量的核心是內(nèi)部的溫度傳感器,它能感知-55℃至+125℃的范圍內(nèi)感知-10℃至+85℃區(qū)間內(nèi),測(cè)量精度可達(dá)±0.5℃,在全量程內(nèi)精度為±2℃,足以滿足大多數(shù)民用與工業(yè)場(chǎng)景。傳感器采集的模擬溫度信號(hào)經(jīng)12位ADC轉(zhuǎn)換為數(shù)字量,轉(zhuǎn)換結(jié)果存儲(chǔ)在暫存器的兩個(gè)兩個(gè)字節(jié)中(溫度寄存器),其中高位字節(jié)的高5位為符號(hào)位(0表示正溫,1表示負(fù)溫),低位字節(jié)與高位字節(jié)的低3位共同構(gòu)成溫度值的小數(shù)部分,通過特定的算法可解析出精確到0.0625℃的溫度數(shù)據(jù)(如0x0550對(duì)應(yīng)的溫度為85℃,0x0000對(duì)應(yīng)0℃,0xFFF8對(duì)應(yīng)-0.5℃)。值得注意的是,DS18B20支持分辨率可調(diào)(9~12位),通過配置暫存器的配置寄存器(第4字節(jié)),可選擇不同的轉(zhuǎn)換精度:9位分辨率(溫度增量0.5℃,轉(zhuǎn)換時(shí)間93.75ms)、10位(0.25℃,187.5ms)、11位(0.125℃,375ms)、12位(0.0625℃,750ms),用戶可根據(jù)應(yīng)用對(duì)精度與速度的需求靈活配置,例如在實(shí)時(shí)性要求高的場(chǎng)景(如電機(jī)過熱保護(hù))選擇9位分辨率,在精度要求高的場(chǎng)景(如實(shí)驗(yàn)室恒溫箱)選擇12位分辨率。
64位ROM是DS18B20實(shí)現(xiàn)多節(jié)點(diǎn)級(jí)聯(lián)的核心,每顆傳感器的ROM都包含唯一的64位序列號(hào),這一序列號(hào)由8位家族碼(DS18B20的家族碼為0x28)、48位唯一序列號(hào)和8位CRC校驗(yàn)碼組成。當(dāng)多個(gè)DS18B20掛接在同一總線上時(shí),MCU可通過“搜索ROM”命令遍歷總線上所有傳感器的序列號(hào),再通過“匹配ROM”命令指定目標(biāo)傳感器進(jìn)行通信,避免了多節(jié)點(diǎn)之間的信號(hào)沖突。這種設(shè)計(jì)使單總線系統(tǒng)最多可級(jí)聯(lián)數(shù)百個(gè)傳感器(受總線驅(qū)動(dòng)能力限制),特別適合大型空間的分布式測(cè)溫(如倉庫、溫室、電纜溝的多點(diǎn)溫度監(jiān)測(cè))。暫存器(Scratchpad)是一個(gè)8字節(jié)的臨時(shí)數(shù)據(jù)存儲(chǔ)區(qū),除了存儲(chǔ)溫度轉(zhuǎn)換結(jié)果(第0~1字節(jié))和配置寄存器(第4字節(jié)),還包含3字節(jié)的保留區(qū)(第2~3字節(jié)、第5字節(jié))、1字節(jié)的CRC校驗(yàn)碼(第7字節(jié)),其中CRC碼用于驗(yàn)證暫存器數(shù)據(jù)的完整性——MCU讀取暫存器后,可通過內(nèi)置的CRC算法驗(yàn)證數(shù)據(jù)是否在傳輸過程中出錯(cuò),確保溫度數(shù)據(jù)的可靠性。EEPROM則用于永久保存配置寄存器的內(nèi)容,當(dāng)傳感器上電時(shí),EEPROM中的配置會(huì)自動(dòng)加載到暫存器,保證分辨率設(shè)置在斷電后不丟失。





