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.OneWirefornecido. 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) ou0x28(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; levantaExceptioncom 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ília0x10) quanto do DS18B20 / DS1822 (códigos de família0x28/0x22), incluindo temperaturas negativas.Chame
convert_temp()e aguarde a conclusão da conversão antes de chamar este método.