آموزش, پروژه, پروژه آردوینو, توصیه شده, سنسور ها, معرفی, مقاله های سیسوگ

راه‌اندازی سنسور دما DS18b20 با آردوینو

راه‌اندازی سنسور دما DS18b20 با آردوینو

شاید نیاز باشد در یک مکان، دما را در شرایط مختلف محیطی اندازه‌گیری کنیم و طبق یک زمان بندی خاص اطلاعات را ارسال کنیم، و در نهایت طبق اطلاعات بدست آمده، دستورات موردنظر را اجرا کنیم. فرض کنید که می‌خواهید دمای یک محیط آزمایشگاهی را اندازه گیری و کنترل کنید، به احتمال زیاد در وهله‌ی اول سوالات زیر برایتان به وجود بیاید.

  • از چه سنسوری باید استفاده کنم؟
  • چطور می‌توانم این اندازه‌گیری را انجام بدهم؟
  • از چه سخت افزاری باید استفاده کنم؟

در این مقاله از سری پروژه های آردوینو می‌خواهیم به این سوالات پاسخ دهیم و در نهایت این سنسور را توسط برد آردوینو Nano راه‌اندازی کنیم و جواب را در سریال مانیتور نرم‌افزار آردوینو مشاهده کنیم.

خب اولین سوالی که ممکن است به ذهن برسد،این است که برای انجام این پروژه باید از چه سنسوری استفاده کنیم؟ برای پاسخ به این سوال باید یک شناخت کلی از سنسورها به همراه عملکرد آن‌ها داشته باشیم. به طور مثال برای پروژه ای که تعریف کردیم فقط به اندازه گیری دما نیاز داریم. پس سنسورهایی که فقط دما را اندازه‌گیری می‌کنند باید پیدا کنیم که با یک جستجو ساده بدست می‌آید. برای این پروژه از سنسور DS18b20 به دلیل دقت بالای اندازه‌گیری آن استفاده می‌کنیم که اگر کمی هم جستجو کرده باشید از سنسور DS18b20 در پروژه های مختلف استفاده شده است.

حال سوال بعدی که ممکن است به ذهن برسد، این است که چطور این سنسور را باید راه اندازی کنیم؟ در پاسخ به این سوال لازم است که کمی دیتاشیت این سنسور را مورد برسی قرار دهیم. در این قسمت می‌خواهیم به صورت مختصر دیتاشیت سنسور DS18b20 را باهم بررسی کنیم.

ویژگی‌های این سنسور به صورت کلی شامل موارد زیر می‌باشد:

استفاده از پروتکل ONE_WIRE جهت راه اندازی

تغییر رزولوشن از 9 تا 12 بیت

تغذیه بین 3 تا 5.5 ولت

اندازه‌گیری دما از 55- تا 125 درجه سانتی‌گراد (دقت کنید که مقدار دمایی که در پروژه مدنظر شما است در این رنج است یا خیر که در این پروژه این بازه دمایی مدنظر ما می‌باشد.)

توصیه می‌کنیم برای اطلاعات بیشتر “ راه‌اندازی سنسور دما DS18b20 با AVR” را مطالعه کنید.

پروتکل ONE_WIRE چیست؟ و نحوه عملکرد این پروتکل به چه صورتی است؟

این پروتکل برای انتقال دیتا فقط از یک پین استفاده می‌کند، به همین جهت به آن ONE WIRE می‌گویند. درواقع یکی از پرچالش‌ترین پروتکل‌ها، همین پروتکل است به این دلیل که زمان‌بندی در این پروژه از اهمیت بالایی برخوردار است. همچنین نحوه عملکرد آن هم کاملا بستگی به زمان‌بندی دارد. فرض کنید که برای روشن کردن سنسور DS18b20 باید هر 480 میکرو ثانیه کد “0XA0” را ارسال کنید، در صورتیکه طبق این زمان‌بندی ارسال دستور صورت نگیرد سنسور فعال نخواهد شد و در نهایت عمل نخواهد کرد. از این‌رو زمان‌بندی در این پروتکل، اهمیت بسیار زیادی را دارد.

بلوک دیاگرام سنسور DS18b20 هم به صورت شکل زیر است.

بلوک دیاگرام سنسور DS18b20

برای راه‌اندازی سنسور DS18b20 حتما به یک مقاومت 4.7 کیلو نیاز دارید، که باید به صورت پول‌آپ متصل شود در غیر این‌صورت سنسور عمل نخواهد کرد.

شماتیک سنسور DS18b20

برای اطلاعات بیشتر توصیه می‌کنیم که حتما دیتاشیت این سنسور را مطالعه کنید.

پس از اینکه اطلاعات کافی در مورد سنسور DS18b20 را بدست آوردیم. باید بستر مناسب برای پیاده سازی سنسور DS18b20 را انتخاب کنیم.

انتخاب بستر مناسب برای پروژه، یکی از مشکلات مهندسین الکترونیک است که عدم شناخت به ادوات الکترونیکی باعث بروز این مشکل شده است. انتخاب بستر مناسب برای پروژه به مواردی مثل مدت زمان تعیین شده برای انجام پروژه و سختی پروژه و رابط گرافیکی و … بستگی دارد که باید حتما تک تک این موارد مورد برسی قرار گیرند و در نهایت چیپ موردنظر انتخاب شود.

در این آموزش از بستر آردوینو جهت راه‌اندازی سنسور DS18b20 و یک کتابخانه آماده استفاده شده است.(خوشبختانه تمامی زمان‌بندی‌ها توسط این کتابخانه انجام شده است)

جهت راه‌اندازی این سنسور باید دو مرحله را رعایت کنیم، یکی ترسیم شماتیک برد و دیگری بخش کدنویسی که در نرم‌افزار آردوینو انجام می‌گیرد.

 

ds18b20

 

کدنویسی سنسور DS1820 –DS18b20

ابتدا باید کتابخانه موردنظر را طبق تصاویر زیر نصب کنیم.

کتابخانه سنسور دما DS18b20 آردوینو

کتابخانه سنسور DS18b20 آردوینو

 

سپس کد زیر را در محیط IDE آردوینو می‌نویسیم.

اگر تمامی موارد به درستی انجام گرفته باشد، باید خروجی را به صورت زیر در سریال مانیتور مشاهد کنیم.

خروجی سنسور DS18b20

 

امیدواریم که آموزش برای شما مفید واقع شده باشد.

author-avatar

درباره BLO OM

«السَّلَامُ عَلَیْکَ یَا أَبَا عَبْدِ اللَّهِ، السَّلَامُ عَلَیْکَ وَ رَحْمَهُ اللَّهِ وَ بَرَکَاتُهُ».

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

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

21 دیدگاه در “راه‌اندازی سنسور دما DS18b20 با آردوینو

  1. Avatar for teza teza گفت:

    سلام برای پروژه تب سنج با همین سنسور برنامه باید چی بنویسیم؟

    1. Avatar for Zeus Zeus گفت:

      خوب خیلی بستگی پیدا میکنه به این که از چه میکروکنترلر میخواید استفاده کنید
      فکر کنم ساده ترین راه ممکن استفاده از آردوینو است

  2. Avatar for علی محمدی علی محمدی گفت:

    سلام برای پروژه تب سنج دانشگاه برنامه شمارو وارد کردم
    با این متن روبرو شدم درسته همه چیز ؟
    Sketch uses 5618 bytes (17%) of program storage space. Maximum is 32256 bytes.
    Global variables use 335 bytes (16%) of dynamic memory, leaving 1713 bytes for local variables. Maximum is 2048 bytes.

    1. Avatar for Zeus Zeus گفت:

      سلام
      بله به نظر میآد برنامه به شکل درست کامپایل شده و آماده است که پروگرامش کنید

  3. Avatar for علی محمدی علی محمدی گفت:

    پس از verify این متن میاد؟
    عملکرد درسته؟
    Sketch uses 5618 bytes (17%) of program storage space. Maximum is 32256 bytes.
    Global variables use 335 bytes (16%) of dynamic memory, leaving 1713 bytes for local variables. Maximum is 2048 bytes.

  4. Avatar for مرتضی مرتضی گفت:

    سلام من از سنسور دمای DS18B20 استفاده میکنم اگه بخوام سریال رو تو نمایشگر OLED نمایش بدم باید چیکار کنم

  5. Avatar for مرتضی مرتضی گفت:

    سلام من میخوام همین سریال رو تو نمایشگر OLED نمایش بدم باید چیکار کنم؟لطفا راهنماییم کنید

  6. Avatar for اکبر اکبر گفت:

    سلام، مطلب جالبی نوشته اید. من در یک برنامه که در آن از ساعت ds3231 و آل سی دی کاراکتری هم استفاده شده این سنسور را اضافه کردم. سرعت عکس العمل سیستم بسیار کند شد. اردواینو استفاده شده uno است. علت کند شدن سیستم میدونید چیه؟

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام باید دید منظور از کند شدن دقیقا چی و چقدر هست و چطور شما دارید برای خواندن و صحت سنجی دما عمل میکنید

      1. Avatar for اکبر اکبر گفت:

        سلام،
        وقت شما بخیر ،
        منظور از کند شدن سیستم اینست که، عکس العمل دکمه های تاچ بسیار کند شده است. وبرای تغییر وضعیت زمان زیادی طول می کشد. این در حالیست که فقط سنسور دما اضافه شده و دیلی ها همانست که بوده. البته اعداد بیانگر دما بصورت دهم اعشار ظاهر می‌شود. شاید کند شدن سیستم به همین دلیل باشد. برای کم کردن دقت چه دستوری را وبه چه صورت می توان تغییر داد؟

        1. Avatar for Sisoog Os Sisoog Os گفت:

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

  7. Avatar for vbstudy vbstudy گفت:

    شماتیک تغغذیه سنسور ds18b20 برعکس نمایش داده شده
    نزدیک بود سنسور رو بسوزونم زود فهمیدم 🙂
    لطفا اصلاح کنین
    ممنون

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام
      متشکرم برای دقت و تذکری که دادید
      مطلب اصلاح شد 🙂

  8. Avatar for عماد عماد گفت:

    سلام. من برنامه رو اجرا کردم اما دمای محیط 16 درجه هست و دمای سنسور نشون میده 22 درجه

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام – تا اونجا که من میدونم این سنسور دیجیتال هست
      و دقت به پسوند و میانوند باید داشته باشید -مثلا سنسورهایی با کد s ممکنه با سنسور هایی با کد b همخوانی نداشته باشن و همین مشکل ساز شده باشه
      نکته دیگه ای هم که هست میزان دقت تنظیم شده سنسور هست که میتونه بین ۹ تا ۱۲ بیت متغییر باشه – فکر میکنم برنامه بر اساس دقت پیش فرض نوشته شده و اگر به هر دلیلی دقت سنسور تغییر کرده باشه مقدار های خوانده شده درست نخواهند بود.

  9. بازتاب: پروژه راه‌اندازی سنسور دمای DS18b20 با NodeMcu - سیسوگ - Sisoog
  10. Avatar for محمد محمد گفت:

    تغییر رزولوشن از 9 تا 12 بیت?

    1. Avatar photo BLO OM گفت:

      سلام دوست عزیز
      منظور از 9 تا 12 همان دقت یا اصطلاحا رزولوشن هست که در این دماسنج قابلیت تغییر این دقت رو دارید که معمولا روی 12 تنظیم می‌کنند.
      زمانیکه روی ماکزیمم رزولوشن یعنی 12 بیت تنظیم شود، سرعت تبدیل 750 میلی ثانیه خواهد بود.
      و این تنظیم کاملا به صورت دلخواه کاربر می‌باشد، همانطور که گفتم به صورت پیش‌فرض این مقدار را روی 12 تنظیم می‌کنند
      و این نکته رو هم در نظر داشته باشید هر چه رزولوشن بیشتر، دقت بالاتر و سرعت تبدیل کمتر خواهد بود.
      طبق این نکته در پروژه های متفاوت نحوه تنظیم این رزولوشن ها تغییر خواهد کرد مسلما اگر نیاز به سرعت بیشتر داشته باشید با دقت کمتر
      پیشنهادی که است رزولوشن را پایین تر در نظر بگیرید و اگر عکس این قضیه بود مطمئنا باید رزولوشن را بالاتر در نظر بگیرید.

      امیدوارم که جواب موردنظرتون رو دریافت کرده باشید دوست عزیز.

      موفق باشید.

  11. Avatar photo BLO OM گفت:

    سلام دوست عزیز
    این پروتکل همونطوری که در مقاله هم توضیح دادیم به زمان‌بندی بسیار حساس هست و اگر به طور مثال از 3 سنسور با ادرس های مختلف استفاده کنید مقاومت خط تغییر چندانی نخواهد کرد و سنسور ها بدون تداخل جواب خواهند داد حال اگر این تعداد بیشتر شود احتمال جواب نگرفتن بسیار بالاست به دلیل وجود تداخلی که ممکن است در ارسال دیتا صورت بگیرد و این دقیقا همان چیزی است که باعث می‌شود شما به صورت تصادفی از سنسور ها پاسخ بگیرید. راه حل محاسبه مقاومت خط است.
    پیشنهادی که بنده دارم ترجیحا مقاومت 1.9K را جای 4.7K امتحان کنید و عملکرد را دوباره چک کنید.(برای فاصله نزدیک کمتر از 3 متر)
    البته به فاصله سنسور ها هم دقت کنید چون اگر این فاصله زیاد باشد به احتمال زیاد مشکل شما محاسبه امپدانس خط است که توصیه می‌کنم لینکی که در ادامه میزارم رو مطالعه کنید
    https://www.maximintegrated.com/en/app-notes/index.mvp/id/148
    امیدواریم که هر چه زودتر به جواب برسید.
    موفق باشید.

  12. Avatar for منصوری منصوری گفت:

    سلام. وقتی تعداد سنسورها یک یا دوتا باشه کار می‌کنه
    من از ۱۵ سنسور استفاده کردم. مشکلی که پیش میاد اینه که بصورت تصادفی سنسورها پاسخ نمیدن.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *