ds18x20 — pilote du capteur de température DS18x20

Le module ds18x20 fournit un pilote pour les capteurs de température numériques 1-Wire Maxim/Dallas DS18B20, DS18S20 et DS1822. Il est construit au-dessus du module onewire et prend en charge plusieurs capteurs partageant un seul bus.

Exemple

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

Classes

class ds18x20.DS18X20(onewire: OneWire)

Construit un pilote DS18x20 lié au bus onewire.OneWire donné. Plusieurs capteurs DS18x20 peuvent partager le même bus.

scan() list[bytearray]

Parcourt le bus 1-Wire sous-jacent et renvoie une liste des codes ROM correspondant aux dispositifs de la famille DS18x20. Seules les ROM dont le code de famille est 0x10 (DS18S20), 0x22 (DS1822) ou 0x28 (DS18B20) sont renvoyées ; les autres dispositifs 1-Wire présents sur le même bus sont filtrés.

convert_temp() None

Émet une commande de conversion de température à tous les capteurs DS18x20 du bus simultanément (à l’aide de SKIP ROM). Après l’appel de cette méthode, vous devez attendre la fin de la conversion (jusqu’à 750 ms à la résolution par défaut de 12 bits) avant d’appeler read_temp().

read_scratch(rom: bytes | bytearray) bytearray

Lit le scratchpad de 9 octets du dispositif adressé par rom et le renvoie sous forme d’un bytearray. Le CRC du scratchpad est vérifié ; lève une Exception avec le message "CRC error" en cas de non-concordance du CRC.

Note

Le tampon renvoyé est le tampon interne du pilote et est écrasé par les appels suivants.

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

Écrit 3 octets dans le scratchpad du dispositif adressé par rom. buf doit contenir les valeurs du seuil d’alarme haute (TH), du seuil d’alarme basse (TL) et du registre de configuration.

read_temp(rom: bytes | bytearray) float

Lit la température la plus récemment convertie depuis le dispositif adressé par rom et la renvoie en degrés Celsius sous forme d’un float. Gère à la fois les encodages DS18S20 (code de famille 0x10) et DS18B20 / DS1822 (codes de famille 0x28 / 0x22), y compris les températures négatives.

Appelez convert_temp() et attendez la fin de la conversion avant d’appeler cette méthode.