ds18x20 --- DS18x20 溫度感測器驅動程式

ds18x20 模組為 Maxim/Dallas DS18B20、DS18S20 與 DS1822 這些 1-Wire 數位溫度感測器提供驅動程式。它建構於 onewire 模組之上,並支援多個感測器共用單一匯流排。

範例::

import time
from machine import Pin
from onewire import OneWire
from ds18x20 import DS18X20

ds = DS18X20(OneWire(Pin("P7")))
roms = ds.scan()

ds.convert_temp()
time.sleep_ms(750)
for rom in roms:
    print(rom, ds.read_temp(rom))

類別

class ds18x20.DS18X20(onewire: OneWire)

建構一個繫結至給定 onewire.OneWire 匯流排的 DS18x20 驅動程式。多個 DS18x20 感測器可共用同一匯流排。

scan() list[bytearray]

搜尋底層的 1-Wire 匯流排,並傳回對應於 DS18x20 系列裝置的 ROM 碼清單。只會傳回系列碼為 0x10(DS18S20)、0x22(DS1822)或 0x28(DS18B20)的 ROM;同一匯流排上的其他 1-Wire 裝置會被過濾掉。

convert_temp() None

對匯流排上的所有 DS18x20 感測器同時發出溫度轉換命令(使用 SKIP ROM)。呼叫此方法後,你必須等待轉換完成(在預設的 12 位元解析度下最多 750 ms),才能呼叫 read_temp()

read_scratch(rom: bytes | bytearray) bytearray

從由 rom 定址的裝置讀取 9 位元組的暫存器內容(scratchpad),並以 bytearray 形式傳回。會驗證 scratchpad 的 CRC;若 CRC 不符,則引發帶有訊息 "CRC error"Exception

備註

傳回的緩衝區是驅動程式的內部緩衝區,會被後續的呼叫覆寫。

write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None

對由 rom 定址的裝置的 scratchpad 寫入 3 個位元組。buf 必須包含高警報觸發值(TH)、低警報觸發值(TL)與組態暫存器的值。

read_temp(rom: bytes | bytearray) float

從由 rom 定址的裝置讀取最近一次轉換得到的溫度,並以攝氏度為單位的 float 形式傳回。可處理 DS18S20(系列碼 0x10)以及 DS18B20 / DS1822(系列碼 0x28 / 0x22)的編碼,包括負溫度。

在呼叫此方法之前,請呼叫 convert_temp() 並等待轉換完成。