DS18B20 چطور دما را میخواند؟ ساخت دماسنج دیجیتال با Arduino
سنسور دما DS18B20 آردوینو یکی از گزینههای محبوب برای اندازهگیری
دیجیتال دما در پروژههای Arduino است. برخلاف سنسورهای آنالوگ مانند LM35،
این قطعه اطلاعات دما را از طریق پروتکل 1-Wire به میکروکنترلر
منتقل میکند و برای راهاندازی فقط به یک خط داده نیاز دارد.
در ادامه، نحوه کار DS18B20، پایهها، مقاومت 4.7kΩ، اتصال به Arduino،
نصب کتابخانه، کدنویسی و نکات مهم استفاده از مدل ضدآب را بررسی میکنیم.
📌 DS18B20 در یک نگاه
Digital
1-Wire
-55 تا +125°C
±0.5°C
9 تا 12 بیت
3 تا 5.5V
چرا DS18B20 انتخاب جالبی برای پروژههای دماست؟
مهمترین ویژگی DS18B20 استفاده از ارتباط 1-Wire است. در این روش، چند سنسور
میتوانند روی یک خط داده قرار بگیرند و هر سنسور با یک آدرس 64 بیتی اختصاصی
شناسایی میشود. همین قابلیت، DS18B20 را برای اندازهگیری دما در چند نقطه
بسیار کاربردی میکند.
از نظر اندازهگیری نیز سنسور بازه 55- تا 125+ درجه سانتیگراد را پوشش میدهد
و وضوح آن بین 9 تا 12 بیت قابل تنظیم است. در حالت 12 بیتی، تغییرات دمایی
بسیار ریز نیز قابل تشخیص هستند.
💡 مزیت اصلی DS18B20
میتوانید چند سنسور را روی یک خط داده قرار دهید و هرکدام را با آدرس
مخصوص خودش بخوانید. برای خانه هوشمند، گلخانه و دیتالاگر چندنقطهای،
این قابلیت بسیار ارزشمند است.
پایههای DS18B20 را بشناسید
نسخه رایج سنسور در پکیج TO-92 سه پایه دارد. مدل ضدآب نیز همین سه اتصال
داخلی را دارد، اما آنها را به شکل سیم از بدنه فلزی بیرون میآورد.
ترتیب پایهها را برای مدل واقعی خود با دیتاشیت یا مشخصات فروشنده تطبیق دهید.
| پایه | وظیفه |
|---|---|
| GND | زمین |
| DQ | خط داده 1-Wire |
| VDD | تغذیه |

چرا مقاومت 4.7kΩ کنار DS18B20 قرار میدهیم؟
خط DQ برای ارتباط 1-Wire به یک مقاومت Pull-up نیاز دارد. در اتصال معمول
Arduino، یک مقاومت حدود 4.7kΩ بین DQ و VDD قرار میدهیم تا
سطح سیگنال در زمان موردنیاز در وضعیت مناسب باقی بماند. آموزش مرجع نیز
استفاده از همین مقدار را پیشنهاد میکند.
🔧 این مقاومت را حذف نکنید
Pull-up داخلی Arduino برای این اتصال جای مقاومت خارجی را نمیگیرد.
یک مقاومت 4.7kΩ خارجی، انتخاب رایج و ساده برای باس DS18B20 است.
🔧 به دنبال قطعات و تجهیزات آردوینو هستید؟
برای مشاهده انواع بردهای آردوینو، ماژولها، سنسورها و قطعات مورد نیاز پروژههای خود،
به فروشگاه قطعات الکترونیکی پژوهشگران مراجعه کنید.
سیمکشی DS18B20 با Arduino Uno
برای یک پروژه معمولی میتوان VDD را به 5V، GND را به زمین و DQ را
به پایه دیجیتال 2 متصل کرد. مقاومت 4.7kΩ نیز بین DQ و 5V قرار میگیرد.
این همان آرایش استفادهشده در آموزش مرجع است.
| DS18B20 | Arduino Uno | نکته |
|---|---|---|
| VDD | 5V | تغذیه |
| GND | GND | زمین مشترک |
| DQ | D2 | با Pull-up 4.7kΩ |

🛒 قطعات لازم برای شروع
برای یک پروژه ساده به DS18B20، Arduino، یک مقاومت 4.7kΩ، بردبورد
و سیم جامپر نیاز دارید. اگر مدل ضدآب یا تجهیزات جانبی لازم دارید،
میتوانید قطعات موردنیاز را در فروشگاه پژوهشگران بررسی کنید.
مدل ضدآب DS18B20 چه تفاوتی دارد؟
نسخه ضدآب همین سنسور را داخل یک پروب فلزی قرار میدهد و برای محیطهایی
مانند خاک، آب یا نقاطی که دسترسی مستقیم به برد دشوار است مناسبتر است.
در نمونه رایج، سیم قرمز برای VDD، سیم مشکی برای GND و سیم زرد یا سفید
برای DQ استفاده میشود؛ با این حال، رنگ سیم را بهتر است با مدل واقعی
خود مقایسه کنید.

دو کتابخانه و یک خط داده؛ کد چطور کار میکند؟
برای راهاندازی نرمافزاری معمولاً از دو کتابخانه OneWire
و DallasTemperature استفاده میشود. OneWire ارتباط
سطح پایین با باس را مدیریت میکند و DallasTemperature دسترسی به دادههای
دمای سنسور را ساده میسازد.
📦 نصب کتابخانهها
- Arduino IDE را باز کنید.
- Library Manager را وارد شوید.
- کتابخانه DallasTemperature را نصب کنید.
- کتابخانه OneWire را نیز نصب کنید.
کد DS18B20 آردوینو؛ اولین دمای واقعی
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
float tempF = (tempC * 9.0 / 5.0) + 32.0;
Serial.print("Temperature: ");
Serial.print(tempC);
Serial.print(" °C | ");
Serial.print(tempF);
Serial.println(" °F");
delay(1000);
}
🧪 تست سریع
بعد از آپلود برنامه، Serial Monitor را روی 9600 قرار دهید.
دمای فعلی سنسور باید بهصورت °C و °F نمایش داده شود.
چطور چند DS18B20 را با یک پایه بخوانیم؟
این یکی از جذابترین قابلیتهای DS18B20 است. هر سنسور یک آدرس 64 بیتی
اختصاصی دارد؛ بنابراین چند سنسور میتوانند روی یک باس قرار بگیرند و
Arduino آنها را از یکدیگر تشخیص دهد.
چنین معماری برای گلخانه، سیستمهای مانیتورینگ چندنقطهای و دیتالاگرهای
دمایی بسیار کاربردی است. برای پروژههای چندسنسوره بهتر است هر سنسور را
با آدرس اختصاصی خودش مدیریت کنید.
🎯 یک پایه، چند سنسور
اگر چند نقطه دمایی دارید، لازم نیست برای هر سنسور یک پایه دیجیتال جداگانه
رزرو کنید؛ DS18B20 میتواند چند حسگر را روی یک باس 1-Wire مدیریت کند.
رزولوشن 9 تا 12 بیت چه فرقی ایجاد میکند؟
DS18B20 میتواند وضوح اندازهگیری را بین 9، 10، 11 و 12 بیت تنظیم کند.
وضوح بالاتر تغییرات دمایی کوچکتری را نشان میدهد، اما زمان تبدیل نیز
بیشتر میشود. در حالت 12 بیت، زمان تبدیل میتواند تا حدود 750ms برسد.
| رزولوشن | دقت گام اندازهگیری |
|---|---|
| 9 بیت | 0.5°C |
| 10 بیت | 0.25°C |
| 11 بیت | 0.125°C |
| 12 بیت | 0.0625°C |
Parasite Power؛ وقتی سیم تغذیه را حذف میکنیم
DS18B20 میتواند در حالت Parasite Power انرژی موردنیاز خود را
از خط داده بگیرد. در این روش VDD به GND وصل میشود و خط DQ علاوه بر انتقال
اطلاعات، نقش منبع تغذیه را نیز ایفا میکند.
این روش سیمکشی را کاهش میدهد، اما برای سیمهای طولانی یا چند سنسور
میتواند دردسرساز شود. در چنین شرایطی تغذیه معمولی سه سیمه، انتخاب
مطمئنتری است.
🚨 برای شروع، Parasite Mode را انتخاب نکنید
اگر پروژه آموزشی یا آزمایشی دارید، اتصال معمولی VDD + GND + DQ
پایدارتر و سادهتر است. Parasite Power بیشتر زمانی ارزش دارد که
محدودیت جدی در تعداد سیمها داشته باشید.
اگر DS18B20 جواب نمیدهد، این 4 مورد را بررسی کنید
| مشکل | اولین بررسی |
|---|---|
| سنسور شناسایی نمیشود | DQ و مقاومت 4.7kΩ |
| دمای عجیب | VDD و GND |
| خواندن ناپایدار | سیمکشی و طول سیم |
| چند سنسور مشکل دارند | آدرسها و تغذیه باس |
🔍 عیبیابی سریع
اول سیمهای VDD و GND را چک کنید. سپس DQ و مقاومت Pull-up را بررسی کنید.
اگر هنوز پاسخ نگرفتید، کتابخانهها و شماره پایه داخل کد را کنترل کنید.
DS18B20 برای چه پروژههایی مناسب است؟
ساختار دیجیتال و قابلیت اتصال چند سنسور، این قطعه را برای پروژههای متنوعی
مناسب میکند. مدل ضدآب هم استفاده از آن را در محیطهای مرطوب یا نقاطی که
نیاز به پروب دارند سادهتر میکند.
- دماسنج دیجیتال
- دیتالاگر دما
- گلخانه و کشاورزی هوشمند
- اندازهگیری دمای خاک
- مانیتورینگ چند نقطهای
- ایستگاه هواشناسی
- کنترل فن و تجهیزات حرارتی
برای پروژه DS18B20 چه قطعاتی نیاز دارید؟
برای یک پروژه ساده، DS18B20، Arduino و یک مقاومت 4.7kΩ کافی هستند.
در پروژههای کاملتر میتوانید نمایشگر، کارت حافظه، RTC، رله یا سایر
سنسورها را هم به مدار اضافه کنید.
🛒 قطعات پروژه دما را از پژوهشگران تهیه کنید
برای ساخت پروژههای اندازهگیری دما میتوانید DS18B20، برد Arduino،
مقاومت، بردبورد، نمایشگر و سایر قطعات موردنیاز را در فروشگاه پژوهشگران بررسی کنید.
مقالات بیشتر برای توسعه پروژه
📚 مقالات بیشتر پژوهشگران
آموزشهای بیشتر درباره Arduino، ESP32، سنسورها، دیتالاگر و پروژههای
الکترونیکی را در مجموعه مقالات پژوهشگران ببینید.
برای انتخاب قطعه یا طراحی پروژه مشاوره فنی بگیرید
🛠️ در انتخاب قطعات پروژه سؤال دارید؟
اگر درباره انتخاب DS18B20، Arduino، مقاومت Pull-up، نمایشگر یا طراحی
دیتالاگر سؤال دارید، قبل از خرید میتوانید برای
مشاوره فنی با مجموعه پژوهشگران در ارتباط باشید.
انتخاب درست قطعات از ابتدای پروژه، سیمکشی و توسعه نرمافزار را سادهتر میکند.
جمعبندی؛ DS18B20 برای پروژه شما مناسب است؟
سنسور دما DS18B20 آردوینو برای پروژههایی که به اندازهگیری
دیجیتال دما، سیمکشی ساده و امکان استفاده از چند سنسور روی یک باس نیاز دارند،
گزینه بسیار خوبی است. وضوح 9 تا 12 بیت و بازه 55- تا 125+ درجه نیز انعطاف
خوبی برای کاربردهای مختلف فراهم میکند.
برای شروع، اتصال معمول سه سیمه را انتخاب کنید، مقاومت 4.7kΩ را فراموش نکنید
و ابتدا با یک سنسور و Serial Monitor پروژه را آزمایش کنید. بعد از آن میتوانید
سراغ چند سنسور، نمایشگر، دیتالاگر یا کنترل تجهیزات بروید.
⚡ چکلیست سریع DS18B20
✔ VDD را به تغذیه مناسب وصل کنید.
✔ GND را مشترک کنید.
✔ DQ را به یک پایه دیجیتال بدهید.
✔ مقاومت 4.7kΩ را بین DQ و VDD قرار دهید.
✔ OneWire و DallasTemperature را نصب کنید.
✔ ابتدا یک سنسور را تست کنید.
💬 تجربه شما از کار با DS18B20 چیست؟
اگر قبلاً با DS18B20 و Arduino کار کردهاید، تجربه خود را
درباره سنجش دما، مدل ضدآب، چند سنسور روی یک باس یا مشکلات ارتباط 1-Wire
با ما و سایر کاربران به اشتراک بگذارید.
اگر برای افزایش دقت یا حل مشکل سنسور راهحل خاصی پیدا کردهاید،
در بخش نظرات همین پایین برای ما بنویسید.
سوالات متداول
برای DS18B20 به مقاومت نیاز داریم؟
بله. در اتصال معمول، یک مقاومت Pull-up حدود 4.7kΩ بین خط DQ و VDD قرار میگیرد.
آیا میتوان چند DS18B20 را به یک پایه Arduino وصل کرد؟
بله. هر سنسور یک آدرس 64 بیتی اختصاصی دارد و چند سنسور میتوانند روی یک
باس 1-Wire کار کنند. :contentReference[oaicite:16]{index=16}
DS18B20 چه دمایی را اندازه میگیرد؟
بازه مشخصشده برای DS18B20 از 55- تا 125+ درجه سانتیگراد است.
دقت معمول آن در بازه 10- تا 85+ درجه حدود ±0.5°C است.




