ds18x20 — controlador do sensor de temperatura DS18x20¶
O módulo ds18x20 fornece um controlador para os sensores de temperatura digital 1-Wire Maxim/Dallas DS18B20, DS18S20 e DS1822. É construído sobre o módulo onewire e suporta múltiplos sensores a partilhar 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 controlador DS18x20 associado ao barramento
onewire.OneWirefornecido. Múltiplos sensores DS18x20 podem partilhar 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 são retornados os ROMs cujo código de família seja
0x10(DS18S20),0x22(DS1822) ou0x28(DS18B20); 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, deve aguardar que a conversão esteja concluída (até 750 ms à 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 retorna-o como um
bytearray. O CRC do scratchpad é verificado; levantaExceptioncom a mensagem"CRC error"em caso de erro de CRC.Nota
O buffer retornado é o buffer interno do controlador 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 registo de configuração.
- read_temp(rom: bytes | bytearray) float¶
Lê a temperatura mais recentemente convertida do dispositivo endereçado por rom e retorna-a em graus Celsius como um
float. Trata as codificações de DS18S20 (código de família0x10) e 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.