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비트 해상도에서 최대 750ms) 기다려야 합니다.

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()를 호출하고 이 메서드를 호출하기 전에 변환이 끝날 때까지 기다리세요.