ds18x20 --- مشغّل مستشعر الحرارة DS18x20

توفر الوحدة ds18x20 مشغّلاً لمستشعرات الحرارة الرقمية أحادية السلك من نوع DS18B20 و DS18S20 و DS1822 من Maxim/Dallas. وهي مبنية فوق الوحدة onewire وتدعم تشارك عدة مستشعرات لناقل واحد.

مثال:

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

الأصناف

class ds18x20.DS18X20(onewire: OneWire)

تنشئ مشغّل DS18x20 مرتبطاً بناقل onewire.OneWire المعطى. ويمكن لعدة مستشعرات DS18x20 أن تتشارك الناقل نفسه.

scan() list[bytearray]

تبحث في ناقل 1-Wire الأساسي وتُرجع قائمة بأكواد ROM التي تقابل أجهزة عائلة DS18x20. تُرجع فقط أكواد ROM التي يكون كود عائلتها 0x10 (DS18S20) أو 0x22 (DS1822) أو 0x28 (DS18B20)؛ أما أجهزة 1-Wire الأخرى على الناقل نفسه فتُستبعد بالترشيح.

convert_temp() None

تُصدر أمر تحويل درجة الحرارة إلى جميع مستشعرات DS18x20 على الناقل في آن واحد (باستخدام SKIP ROM). بعد استدعاء هذه الطريقة يجب أن تنتظر اكتمال التحويل (حتى 750 مللي ثانية عند الدقة الافتراضية البالغة 12 بت) قبل استدعاء read_temp().

read_scratch(rom: bytes | bytearray) bytearray

تقرأ لوحة التدوين (scratchpad) المكوّنة من 9 بايت من الجهاز المُعنوَن بـ rom وتُرجعها على شكل bytearray. يُتحقق من CRC للوحة التدوين؛ وتُطلق Exception مع الرسالة "CRC error" عند عدم تطابق CRC.

ملاحظة

المخزن المؤقت المُرجَع هو المخزن المؤقت الداخلي للمشغّل ويُكتب فوقه عند الاستدعاءات اللاحقة.

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

تكتب 3 بايتات إلى لوحة التدوين الخاصة بالجهاز المُعنوَن بـ rom. يجب أن يحتوي buf على قيم عتبة الإنذار العليا (TH) وعتبة الإنذار الدنيا (TL) وسجل الإعداد.

read_temp(rom: bytes | bytearray) float

تقرأ آخر درجة حرارة مُحوَّلة من الجهاز المُعنوَن بـ rom وتُرجعها بالدرجات المئوية على شكل float. تتعامل مع ترميزات كل من DS18S20 (كود العائلة 0x10) و DS18B20 / DS1822 (كودا العائلة 0x28 / 0x22)، بما في ذلك درجات الحرارة السالبة.

استدعِ convert_temp() وانتظر انتهاء التحويل قبل استدعاء هذه الطريقة.