ds18x20 — controlador del sensor de temperatura DS18x20

El módulo ds18x20 proporciona un controlador para los sensores de temperatura digitales 1-Wire DS18B20, DS18S20 y DS1822 de Maxim/Dallas. Está construido sobre el módulo onewire y admite varios sensores compartiendo un único bus.

Ejemplo:

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

Clases

class ds18x20.DS18X20(onewire: OneWire)

Construye un controlador DS18x20 vinculado al bus onewire.OneWire dado. Varios sensores DS18x20 pueden compartir el mismo bus.

scan() list[bytearray]

Busca en el bus 1-Wire subyacente y devuelve una lista de códigos ROM que corresponden a dispositivos de la familia DS18x20. Solo se devuelven las ROM cuyo código de familia es 0x10 (DS18S20), 0x22 (DS1822) o 0x28 (DS18B20); otros dispositivos 1-Wire en el mismo bus se filtran.

convert_temp() None

Emite un comando de conversión de temperatura a todos los sensores DS18x20 del bus simultáneamente (usando SKIP ROM). Después de llamar a este método debes esperar a que se complete la conversión (hasta 750 ms con la resolución por defecto de 12 bits) antes de llamar a read_temp().

read_scratch(rom: bytes | bytearray) bytearray

Lee el scratchpad de 9 bytes del dispositivo direccionado por rom y lo devuelve como un bytearray. Se verifica el CRC del scratchpad; lanza Exception con el mensaje "CRC error" en caso de discrepancia de CRC.

Nota

El búfer devuelto es el búfer interno del controlador y se sobrescribe en llamadas posteriores.

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

Escribe 3 bytes en el scratchpad del dispositivo direccionado por rom. buf debe contener los valores del disparador de alarma alta (TH), el disparador de alarma baja (TL) y el registro de configuración.

read_temp(rom: bytes | bytearray) float

Lee la temperatura convertida más recientemente del dispositivo direccionado por rom y la devuelve en grados Celsius como un float. Maneja las codificaciones tanto del DS18S20 (código de familia 0x10) como del DS18B20 / DS1822 (códigos de familia 0x28 / 0x22), incluyendo temperaturas negativas.

Llama a convert_temp() y espera a que la conversión termine antes de llamar a este método.