本文屬于個人了解,能力有限,纰漏在所難免,還望指正!
【小魚有點電】
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,官方已經提供了相關子產品,可以直接調用,非常友善,具體操作如下:
需要注意的是第一次擷取的溫度值是不正确的需要舍棄。如下圖紅框所示:
DS18B20支援四種溫度轉換分辨率,9、10、11、12位。設定狀态在掉電情況下依舊會儲存下來。
擷取下目前溫度分辨率,使用函數getRes(),得到結果為12;
若要設定分辨率為9,則使用函數setResearch(res),其中res的值必須為9、10、11、12當中的一個;
我們除了可以讓測量值顯示在終端上,還能讓其在LCD上顯示,代碼如下:
畫個帶曲線的溫度傳感器,示例如下: