ds18x20 — driver pentru senzorul de temperatură DS18x20¶
Modulul ds18x20 oferă un driver pentru senzorii digitali de temperatură 1-Wire Maxim/Dallas DS18B20, DS18S20 și DS1822. Este construit deasupra modulului onewire și acceptă mai mulți senzori care partajează o singură magistrală.
Exemplu:
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))
Clase¶
- class ds18x20.DS18X20(onewire: OneWire)¶
Construiește un driver DS18x20 legat de magistrala
onewire.OneWiredată. Mai mulți senzori DS18x20 pot partaja aceeași magistrală.- scan() list[bytearray]¶
Caută pe magistrala 1-Wire subiacentă și returnează o listă de coduri ROM care corespund dispozitivelor din familia DS18x20. Sunt returnate doar codurile ROM al căror cod de familie este
0x10(DS18S20),0x22(DS1822) sau0x28(DS18B20); celelalte dispozitive 1-Wire de pe aceeași magistrală sunt filtrate.
- convert_temp() None¶
Emite o comandă de conversie a temperaturii către toți senzorii DS18x20 de pe magistrală simultan (folosind SKIP ROM). După apelarea acestei metode trebuie să așteptați finalizarea conversiei (până la 750 ms la rezoluția implicită de 12 biți) înainte de a apela
read_temp().
- read_scratch(rom: bytes | bytearray) bytearray¶
Citește scratchpad-ul de 9 octeți de la dispozitivul adresat de rom și îl returnează ca un
bytearray. Suma de control CRC a scratchpad-ului este verificată; genereazăExceptioncu mesajul"CRC error"la o nepotrivire CRC.Notă
Tamponul (buffer) returnat este tamponul intern al driverului și este suprascris de apelurile ulterioare.
- write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None¶
Scrie 3 octeți în scratchpad-ul dispozitivului adresat de rom. buf trebuie să conțină valorile pentru declanșatorul de alarmă superior (TH), declanșatorul de alarmă inferior (TL) și registrul de configurare.
- read_temp(rom: bytes | bytearray) float¶
Citește cea mai recent convertită temperatură de la dispozitivul adresat de rom și o returnează în grade Celsius ca un
float. Gestionează atât codificările DS18S20 (cod de familie0x10), cât și DS18B20 / DS1822 (coduri de familie0x28/0x22), inclusiv temperaturile negative.Apelați
convert_temp()și așteptați finalizarea conversiei înainte de a apela această metodă.