DS18B20 یک سنسور دما با خروجی دیجیتال است. پروتکل ارتباطی این سنسور ارتباط یک سیمه یا 1-wire است، بنابراین برای ارتباط با میکروکنترلر تنها به یک پین دیجیتال نیاز دارد.

سنسور دما DS18B20 نسبتاً دقیق است و دارای محدوده دمایی 55- تا 125+ درجه سانتی گراد و دقت 0.5± درجه سانتی گراد است.

رزولوشن پیش‌فرض هنگام روشن شدن، 12 بیت است (یعنی دقت 0.0625 درجه سانتی‌گراد).

زمان تبدیل دما در این سنسور 750 میلی ثانیه است و لازم است بین اندازه گیری ها یک تاخیر مناسب قرار دهیم.

از آنجا که هر سنسور DS18B20 با یک کد سریال 64 بیتی از پیش برنامه ریزی شده ارایه می شود، می توان تعداد زیادی از آنها را به یک پایه میکروکنترلر متصل نمود و مقدار هر کدام را به طور جداگانه اندازه گیری کرد.

این ویژگی زمانی می تواند بسیار مفید باشد که نیاز به اندازه گیری دما در یک منطقه بزرگ دارید.

برای اتصال یک سنسور به رزبری پای پیکو مدار را طبق شکل زیر می بندیم:

ds18b20

در مایکروپایتون برای ارتباط و خواندن مقدار سنسور یک ماژول اختصاصی وجود دارد. برنامه برای خواندن مقدار یک یا چند سنسور به این صورت است:

import machine, onewire, ds18x20, time

data = machine.Pin(22)
mysensor = ds18x20.DS18X20(onewire.OneWire(data))

sensors = mysensor.scan()
print('Found sensors: ', sensors)

while True:
    mysensor.convert_temp()
    time.sleep(1)
    for sensor in sensors:
        print(sensor)
        print(mysensor.read_temp(sensor))
    

ابتدا ماژول های مورد نیاز را وارد کرده ایم. سپس پایه متصل به سنسور را تعیین نموده ایم که در اینجا GPIO22 می باشد.

بعد یک شی از نوع  DS18X20 ایجاد نمودیم. سپس سنسورهای متصل به پایه data را اسکن می کنیم و در لیست sensors ذخیره می کنیم.

حالا یک حلقه نامتناهی ایجاد می کنیم و عملیات تبدیل را شروع می کنیم. یک ثانیه تاخیر قرار می دهیم و سپس با یک حلقه for مقدار اندازه گیری شده توسط همه سنسورها را به ترتیب نمایش می دهیم.