ds18x20 — stuurprogramma voor DS18x20-temperatuursensor

De ds18x20-module biedt een stuurprogramma voor de digitale 1-Wire-temperatuursensoren DS18B20, DS18S20 en DS1822 van Maxim/Dallas. Het is gebouwd bovenop de onewire-module en ondersteunt meerdere sensoren die één bus delen.

Voorbeeld:

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

Klassen

class ds18x20.DS18X20(onewire: OneWire)

Construeer een DS18x20-stuurprogramma gebonden aan de gegeven onewire.OneWire-bus. Meerdere DS18x20-sensoren kunnen dezelfde bus delen.

scan() list[bytearray]

Doorzoek de onderliggende 1-Wire-bus en geef een lijst met ROM-codes terug die overeenkomen met apparaten uit de DS18x20-familie. Alleen ROM’s waarvan de familiecode 0x10 (DS18S20), 0x22 (DS1822) of 0x28 (DS18B20) is, worden teruggegeven; andere 1-Wire-apparaten op dezelfde bus worden eruit gefilterd.

convert_temp() None

Stuur een temperatuurconversieopdracht naar alle DS18x20-sensoren op de bus tegelijk (met SKIP ROM). Na het aanroepen van deze methode moet je wachten tot de conversie is voltooid (tot 750 ms bij de standaardresolutie van 12 bits) voordat je read_temp() aanroept.

read_scratch(rom: bytes | bytearray) bytearray

Lees het scratchpad van 9 bytes uit het apparaat dat is geadresseerd door rom en geef het terug als een bytearray. De CRC van het scratchpad wordt geverifieerd; werpt Exception op met het bericht "CRC error" bij een CRC-mismatch.

Notitie

De teruggegeven buffer is de interne buffer van het stuurprogramma en wordt overschreven door opeenvolgende aanroepen.

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

Schrijf 3 bytes naar het scratchpad van het apparaat dat is geadresseerd door rom. buf moet de waarden van de hoge-alarmtrigger (TH), lage-alarmtrigger (TL) en het configuratieregister bevatten.

read_temp(rom: bytes | bytearray) float

Lees de meest recent geconverteerde temperatuur uit het apparaat dat is geadresseerd door rom en geef deze terug in graden Celsius als een float. Verwerkt zowel de codering van DS18S20 (familiecode 0x10) als die van DS18B20 / DS1822 (familiecodes 0x28 / 0x22), inclusief negatieve temperaturen.

Roep convert_temp() aan en wacht tot de conversie is voltooid voordat je deze methode aanroept.