ds18x20 — drivrutin för DS18x20-temperatursensor¶
Modulen ds18x20 tillhandahåller en drivrutin för de digitala 1-Wire-temperatursensorerna Maxim/Dallas DS18B20, DS18S20 och DS1822. Den bygger på modulen onewire och stöder flera sensorer som delar en enda buss.
Exempel:
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))
Klasser¶
- class ds18x20.DS18X20(onewire: OneWire)¶
Konstruerar en DS18x20-drivrutin bunden till den angivna
onewire.OneWire-bussen. Flera DS18x20-sensorer kan dela samma buss.- scan() list[bytearray]¶
Söker igenom den underliggande 1-Wire-bussen och returnerar en lista över ROM-koder som motsvarar enheter i DS18x20-familjen. Endast ROM vars familjekod är
0x10(DS18S20),0x22(DS1822) eller0x28(DS18B20) returneras; andra 1-Wire-enheter på samma buss filtreras bort.
- convert_temp() None¶
Skickar ett temperaturkonverteringskommando till alla DS18x20-sensorer på bussen samtidigt (med SKIP ROM). Efter att ha anropat denna metod måste du vänta tills konverteringen är klar (upp till 750 ms vid standardupplösningen på 12 bitar) innan du anropar
read_temp().
- read_scratch(rom: bytes | bytearray) bytearray¶
Läser den 9-bytes scratchpad-minnet från enheten som adresseras av rom och returnerar det som en
bytearray. Scratchpad-CRC verifieras; genererarExceptionmed meddelandet"CRC error"vid en CRC-avvikelse.Anteckning
Den returnerade bufferten är drivrutinens interna buffert och skrivs över av efterföljande anrop.
- write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None¶
Skriver 3 byte till scratchpad-minnet för enheten som adresseras av rom. buf måste innehålla värdena för det höga larmgränsvärdet (TH), det låga larmgränsvärdet (TL) och konfigurationsregistret.
- read_temp(rom: bytes | bytearray) float¶
Läser den senast konverterade temperaturen från enheten som adresseras av rom och returnerar den i grader Celsius som en
float. Hanterar både DS18S20- (familjekod0x10) och DS18B20-/DS1822-kodningar (familjekoder0x28/0x22), inklusive negativa temperaturer.Anropa
convert_temp()och vänta tills konverteringen är klar innan du anropar denna metod.