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) eller 0x28 (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; genererar Exception med meddelandet "CRC error" vid en CRC-avvikelse.

Observera

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- (familjekod 0x10) och DS18B20-/DS1822-kodningar (familjekoder 0x28/0x22), inklusive negativa temperaturer.

Anropa convert_temp() och vänta tills konverteringen är klar innan du anropar denna metod.