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.OneWiredado. 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) o0x28(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; lanzaExceptioncon 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 familia0x10) como del DS18B20 / DS1822 (códigos de familia0x28/0x22), incluyendo temperaturas negativas.Llama a
convert_temp()y espera a que la conversión termine antes de llamar a este método.