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.

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- (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.