ds18x20 — DS18x20 sıcaklık sensörü sürücüsü

ds18x20 modülü, Maxim/Dallas DS18B20, DS18S20 ve DS1822 1-Wire dijital sıcaklık sensörleri için bir sürücü sağlar. onewire modülünün üzerine inşa edilmiştir ve tek bir veri yolunu paylaşan birden çok sensörü destekler.

Örnek:

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))

Sınıflar

class ds18x20.DS18X20(onewire: OneWire)

Verilen onewire.OneWire veri yoluna bağlı bir DS18x20 sürücüsü oluşturur. Birden çok DS18x20 sensörü aynı veri yolunu paylaşabilir.

scan() list[bytearray]

Alttaki 1-Wire veri yolunu arar ve DS18x20 ailesindeki cihazlara karşılık gelen ROM kodlarının bir listesini döndürür. Yalnızca aile kodu 0x10 (DS18S20), 0x22 (DS1822) veya 0x28 (DS18B20) olan ROM’lar döndürülür; aynı veri yolundaki diğer 1-Wire cihazları filtrelenip dışlanır.

convert_temp() None

Veri yolundaki tüm DS18x20 sensörlerine aynı anda (SKIP ROM kullanarak) bir sıcaklık dönüşümü komutu verir. Bu yöntemi çağırdıktan sonra, read_temp() çağırmadan önce dönüşümün tamamlanmasını beklemelisiniz (varsayılan 12 bitlik çözünürlükte en fazla 750 ms).

read_scratch(rom: bytes | bytearray) bytearray

rom ile adreslenen cihazdan 9 baytlık scratchpad’i okur ve onu bir bytearray olarak döndürür. Scratchpad CRC’si doğrulanır; CRC uyuşmazlığı durumunda "CRC error" mesajıyla Exception hatası verir.

Not

Döndürülen tampon, sürücünün dahili tamponudur ve sonraki çağrılarla üzerine yazılır.

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

rom ile adreslenen cihazın scratchpad’ine 3 bayt yazar. buf, yüksek alarm tetikleyicisi (TH), düşük alarm tetikleyicisi (TL) ve yapılandırma yazmacı değerlerini içermelidir.

read_temp(rom: bytes | bytearray) float

rom ile adreslenen cihazdan en son dönüştürülen sıcaklığı okur ve santigrat derece cinsinden bir float olarak döndürür. Negatif sıcaklıklar dahil olmak üzere hem DS18S20 (aile kodu 0x10) hem de DS18B20 / DS1822 (aile kodları 0x28 / 0x22) kodlamalarını işler.

Bu yöntemi çağırmadan önce convert_temp() çağırın ve dönüşümün bitmesini bekleyin.