DHT11時(shí)序(下)
數(shù)據(jù)傳輸?shù)臅r(shí)序還存在嚴(yán)格的順序約定:40位數(shù)據(jù)按“濕度整數(shù)(8位)→濕度小數(shù)(8位)→溫度整數(shù)(8位)→溫度小數(shù)(8位)→校驗(yàn)和(8位)”的順序傳輸,且每個(gè)字節(jié)內(nèi)部按“最高位(MSB)→最低位(LSB)”的順序逐位發(fā)送。例如,傳輸濕度整數(shù)“37%RH”(二進(jìn)制00100101)時(shí),傳感器會(huì)先發(fā)送最高位“0”,再依次發(fā)送后續(xù)7位,直至最低位“1”。主機(jī)需連續(xù)捕獲40個(gè)數(shù)據(jù)位的時(shí)序信號(hào),逐一解析為字節(jié)數(shù)據(jù),再通過校驗(yàn)和驗(yàn)證完整性——校驗(yàn)和為前四個(gè)字節(jié)的累加和取低8位,若計(jì)算結(jié)果與接收的校驗(yàn)和一致,則數(shù)據(jù)有效;若不一致,則需重新發(fā)起測(cè)量。
DHT11的時(shí)序還存在兩個(gè)重要的約束條件:一是測(cè)量周期,傳感器完成一次溫濕度采集與數(shù)據(jù)傳輸后,需進(jìn)入至少1秒的休眠期,期間不響應(yīng)新的啟動(dòng)信號(hào),若主機(jī)頻繁發(fā)起通信(間隔小于1秒),傳感器會(huì)因內(nèi)部AD轉(zhuǎn)換未完成而拒絕應(yīng)答;二是電平切換的穩(wěn)定性,總線電平從低到高的恢復(fù)速度,受上拉電阻阻值和布線電容影響——阻值過大(如超過10kΩ)會(huì)導(dǎo)致電平恢復(fù)緩慢,延長時(shí)序誤差;布線過長(超過2米)或靠近強(qiáng)干擾源,會(huì)導(dǎo)致電平跳變出現(xiàn)毛刺,干擾時(shí)序判斷。因此,實(shí)際應(yīng)用中需搭配0.1μF的電源去耦電容,減少電源噪聲對(duì)時(shí)序的影響,同時(shí)控制DATA線長度,必要時(shí)采用屏蔽線。
時(shí)序控制的實(shí)現(xiàn)方式直接影響通信可靠性。對(duì)于資源豐富的MCU(如STM32、Arduino),可通過硬件定時(shí)器捕獲電平跳變沿,精準(zhǔn)計(jì)算時(shí)長,避免軟件延時(shí)的不穩(wěn)定性;對(duì)于8位51單片機(jī)等資源有限的平臺(tái),需通過匯編指令或循環(huán)計(jì)數(shù)校準(zhǔn)微秒級(jí)延時(shí),例如用空指令循環(huán)實(shí)現(xiàn)26μs的低電平檢測(cè),確保計(jì)時(shí)誤差控制在±10%以內(nèi)(DHT11允許的最大時(shí)序誤差)。常見的時(shí)序故障排查,也圍繞這些細(xì)節(jié)展開:若啟動(dòng)信號(hào)拉低不足18ms,會(huì)導(dǎo)致無應(yīng)答;若數(shù)據(jù)位高電平測(cè)量偏差超過10μs,會(huì)導(dǎo)致“0”“1”誤判;若未等待1秒測(cè)量周期,會(huì)導(dǎo)致數(shù)據(jù)重復(fù)或錯(cuò)誤。
從主機(jī)啟動(dòng)信號(hào)的18ms低電平,到傳感器應(yīng)答的兩段80μs電平,再到數(shù)據(jù)位的脈沖寬度編碼,每一個(gè)參數(shù)都服務(wù)于“無時(shí)鐘線的雙向通信”。其時(shí)序設(shè)計(jì)雖不及DS18B20嚴(yán)苛,但仍需精準(zhǔn)控制——正是這種“簡(jiǎn)化硬件、嚴(yán)格時(shí)序”的設(shè)計(jì)思路,讓DHT11在低成本場(chǎng)景中實(shí)現(xiàn)了可靠的溫濕度傳輸。無論是入門級(jí)開發(fā)還是量產(chǎn)產(chǎn)品設(shè)計(jì),把握時(shí)序的核心參數(shù)與約束條件,都是確保傳感器穩(wěn)定工作的關(guān)鍵。





