ds18x20 — driver de sensor de temperatura DS18x20

O módulo ds18x20 fornece um driver para os sensores de temperatura digitais 1-Wire DS18B20, DS18S20 e DS1822 da Maxim/Dallas. Ele é construído sobre o módulo onewire e oferece suporte a múltiplos sensores compartilhando um único barramento.

Exemplo:

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)

Constrói um driver DS18x20 vinculado ao barramento onewire.OneWire fornecido. Vários sensores DS18x20 podem compartilhar o mesmo barramento.

scan() list[bytearray]

Pesquisa o barramento 1-Wire subjacente e retorna uma lista de códigos ROM que correspondem a dispositivos da família DS18x20. Apenas ROMs cujo código de família seja 0x10 (DS18S20), 0x22 (DS1822) ou 0x28 (DS18B20) são retornados; outros dispositivos 1-Wire no mesmo barramento são filtrados.

convert_temp() None

Emite um comando de conversão de temperatura para todos os sensores DS18x20 no barramento simultaneamente (usando SKIP ROM). Após chamar este método, você deve aguardar a conclusão da conversão (até 750 ms na resolução padrão de 12 bits) antes de chamar read_temp().

read_scratch(rom: bytes | bytearray) bytearray

Lê o scratchpad de 9 bytes do dispositivo endereçado por rom e o retorna como um bytearray. O CRC do scratchpad é verificado; levanta Exception com a mensagem "CRC error" em caso de incompatibilidade de CRC.

Nota

O buffer retornado é o buffer interno do driver e é sobrescrito por chamadas subsequentes.

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

Escreve 3 bytes no scratchpad do dispositivo endereçado por rom. buf deve conter os valores do gatilho de alarme alto (TH), do gatilho de alarme baixo (TL) e do registrador de configuração.

read_temp(rom: bytes | bytearray) float

Lê a temperatura convertida mais recentemente do dispositivo endereçado por rom e a retorna em graus Celsius como um float. Lida com as codificações tanto do DS18S20 (código de família 0x10) quanto do DS18B20 / DS1822 (códigos de família 0x28 / 0x22), incluindo temperaturas negativas.

Chame convert_temp() e aguarde a conclusão da conversão antes de chamar este método.