天天看點

【Espruino】NO.10 數字溫度傳感器DS18B20

本文屬于個人了解,能力有限,纰漏在所難免,還望指正!

【小魚有點電】

DS18B20是很常用的數字溫度傳感器,供電範圍為3.0V到5.5V,測溫範圍為-55~+125℃,在-10~+85℃範圍内精度為+-0.5℃,每個器件都有唯一的64為序列号存儲在内部存儲器中,是以在一根總線上可以挂載多個器件,且獨特的單線接口方式,使得DS18B20與微控制器連接配接時僅需一條口線即可實作微控制器與DS18B20的雙向通訊,不過,需要注意的是,DS18B20的中間引腳DQ需要連接配接一個4.7K歐姆電阻到電源引腳。

在開發闆上,我們将DQ引腳連接配接到引腳B1,開發時我們需要用到OneWire類。Espruino的OneWire API函數與Arduino的OneWire庫很相似,操作流程如下:

對于DS18B20,官方已經提供了相關子產品,可以直接調用,非常友善,具體操作如下:

需要注意的是第一次擷取的溫度值是不正确的需要舍棄。如下圖紅框所示:

【Espruino】NO.10 數字溫度傳感器DS18B20

DS18B20支援四種溫度轉換分辨率,9、10、11、12位。設定狀态在掉電情況下依舊會儲存下來。

擷取下目前溫度分辨率,使用函數getRes(),得到結果為12;

若要設定分辨率為9,則使用函數setResearch(res),其中res的值必須為9、10、11、12當中的一個;

我們除了可以讓測量值顯示在終端上,還能讓其在LCD上顯示,代碼如下:

【Espruino】NO.10 數字溫度傳感器DS18B20
【Espruino】NO.10 數字溫度傳感器DS18B20

畫個帶曲線的溫度傳感器,示例如下:

繼續閱讀