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 を使用)。このメソッドを呼び出した後、read_temp() を呼び出す前に変換が完了するまで(デフォルトの 12 ビット分解能では最大 750 ms)待つ必要があります。

read_scratch(rom: bytes | bytearray) bytearray

rom で指定されたデバイスから 9 バイトのスクラッチパッドを読み込み、bytearray として返します。スクラッチパッドの CRC が検証され、CRC が一致しない場合はメッセージ "CRC error" を伴う Exception を送出します。

注釈

返されるバッファはドライバの内部バッファであり、後続の呼び出しで上書きされます。

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

rom で指定されたデバイスのスクラッチパッドに 3 バイトを書き込みます。buf には高温アラームトリガー(TH)、低温アラームトリガー(TL)、構成レジスタの値が含まれている必要があります。

read_temp(rom: bytes | bytearray) float

rom で指定されたデバイスから直近に変換された温度を読み込み、摂氏の float として返します。DS18S20(ファミリコード 0x10)と DS18B20 / DS1822(ファミリコード 0x28 / 0x22)の両方のエンコーディングを、負の温度を含めて処理します。

convert_temp() を呼び出し、このメソッドを呼び出す前に変換が完了するまで待ってください。