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

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

به عنوان مثال اگر دما یک محوطه یا جسمی بیشتر از محدوده (خارج از محدوده) مورد نظر باشد با استفاده از یک زنگ پیزو (آلارم) می توانید متوجه آن شوید (یا به شما هشدار آن را می دهد.)

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

در این بخش از آموزش سعی کردیم مبانی اتصال سنسور دما DS18B20 به آردوینو را به طور مفصل شرح دهیم. همچنین در این پروژه برای نشان دادن میزان دما و نحوه عملکرد مدار از چند لامپ LED استفاده شده است.

لیست قطعات مورد نیاز

برد آردوینو Arduino UNO R3 مدل DIP1 عدد
سنسور دمای DS18B20 دیجیتال-اورجینال1 عدد
مقاومت 4.7 کیلو اهم با توان 0.25 وات و تلرانس 1 درصد1 عدد
مقاومت 100 اهم با توان 0.25 وات و تلرانس 1 درصد3 عدد
لامپ LED قرمز سایز 5mm میلی متر مدل مات1 عدد
لامپ LED سبز سایز 5mm میلی متر مدل مات1 عدد
لامپ LED زرد سایز 5mm میلی متر مدل مات1 عدد
برد بورد (پروجکت برد) مدل GL1 عدد
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی)1 عدد

سنسور دما DS18B20

راه اندازی سنسور دما DS18B20 با آردوینو و تجهیزات به کار رفته در این پروژه بسیار ساده هستند و واقعا نیاز به توضیح ندارند اما در این قسمت سعی شده سنسور دما را به صورت کلی توصیف کنیم.

DS18B20 یک سنسور دمای دیجیتال، که قابلیت خواندن دما با دقت 0.05 درجه سانتی گراد را دارد. که در این آموزش از مدل ضد آب آن استفاده کردیم. همچنین DS18B20 از پروتکل ارتباطی one wire support یا همان ارتباط تک سیمه (1WIRE) جهت ارتباط با دیگر دستگاه های خارجی پشتیبانی می کند،

نقشه شماتیک پروژه

1. ابتدا پین 3v3 آردوینو رو به ریل مثبت و پین زمین (منفی) رو به ریل زمین (منفی) برد برد اتصال دهید.

2. در این مرحله سنسور DS18B20 را بر روی بردبرد قرار دهید.

3. یک مقاومت 4.7 کیلواهم بین پایه مثبت (سیم قرمز) و پایه خروجی(سیم سفید) سنسور DS18B20 قرار دهید.

4. در مرحله بعد یک سیم از پایه مثبت (سیم قرمز) به ریل 3v3 مثبت وصل کنید.

5. یک سیم از خروجی (سیم سفید سنسور) به پایه دیجیتال شماره 5 آردوینو متصل نمائید. در ادامه یک سیم از پین زمین سنسور (سیم مشکی) به ریل منفی (زمین) بردبرد وصل کنید.

6. سیمی را از ریل منفی بردبرد به سمت دیگر بردبرد اتصال دهید.

7. سه تا LEDهای قرمز، زرد و سبز را بر روی بردبرد قرار دهید.

8. یک مقاومت 100اهم، به هر یک از LEDها متصل کنید و سمت دیگر مقاومت را به ریل زمین (منفی) اتصال دهید.

9. در این مرحله هر یک از LEDها را به آردوینو متصل می کنیم، به این ترتیب که LED سبز رنگ را به پین 2، LED زرد را به پین 3 و در نهایت LED قرمز رنگ را به پین 4 آردوینو متصل می کنیم.

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

نقشه شماتیک نحوه اتصال سنسور دما DS18b20 به برد آردوینو

نصب کردن کتابخانه one wire support

لازم به ذکر است که نرم افزار برنامه نویسی آردوینو به صورت پیش فرض توانایی پشتیبانی از پروتکل 1WIRE را ندارد بنابراین ما باید library (کتابخانه یا برنامه) مورد نیاز را بر روی آن نصب کنیم. این فرآیند بسیار ساده و راحت است که در زیر نحوه استفاده از آن را توضیح داده ایم.

1. در مرحله اول ابتدا آخرین (جدیدترین) نسخه کتابخانه وان وایر (one Wire) را از اینجا دانلود کنید.

2. پس از دانلود فایل، نرم افزار آردوینو را باز کنید.

3. مسیر زیر را دنبال کنید و در پنجره باز شده فایل کتابخانه one Wire را که قبلا دانلود کرده اید را انتخاب کنید:

Sketch > Include Library > Add .ZIP Library…

نحوه افزودن کتابخانه به نرم افزار آردوینو

نصب کردن کتابخانه Dallas Temperature Library

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

1. در مرحله اول ابتدا Dallas Temperature sensor Library (کتابخانه سنسور دمای دالاس) را از اینجا دانلود کنید.

2. پس از دانلود فایل، نرم افزار آردوینو را باز کنید.

3. مسیر زیر را دنبال کنید و در پنجره باز شده فایل کتابخانه DallasTemperature را که قبلا دانلود کرده اید را انتخاب کنید:

Sketch > Include Library > Add .ZIP Library…

برنامه نویسی سنسور دما DS18B20 در نرم افزار آردوینو

برای شروع ما باید هر دو کتابخانه های one wire و Dallas Temperature را داشته باشیم تا بتوانیم از کدهای برنامه نویسی استفاده کنیم و اگر هم قبلا این کار را انجام دادید دیگر نیازی به نصب آن ندارید.

در ابتدا تمام متغیرهایی که باید از آنها استفاده شود را تعریف میکنیم. از آنجایی که دما متغییر است ابتدا دما را ذخیره می کنیم (مقدار آن را مشخص میکنیم).

متغیرهای lowerLimit و upperLimit نشانگر حداقل و حداکثر (حد آستانه) دمای ما هستند. به این ترتیب که اگر دما کمتر از حدپایین باشد LED زرد رنگ روشن می شود و اگر دما بیشتر از حدبالا باشد LED قرمز رنگ روشن می شود و اگر دما بین دو مقدار تعیین شده باشد LED سبز رنگ روشن می شود.

سپس یک آبجکت از کتابخانه one wire و Dallas Temperature با نام دلخواه ایجاد می کنیم.

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

خواندن مقدار دما سنسور DS18B20

در این بخش از پروژه با استفاده از دستور (sensors.getTempCByIndex(0 می توانیم مقدار دما اندازه گیری شده توسط سنسور دما DS18B20 را در برنامه برگردانیم و اگر بخواهیم دما را برحسب فارنهایت داشته باشیم به راحتی به جای حرف C از حرف F استفاده می کنیم. به عنوان مثال عبارت فوق را به صورت (sensors.getTempFByIndex(0 ذخیره می کنیم. لازم به گفتن است که عدد 0 نشان دهنده شماره سنسوری است که ما نیاز به اطلاعات آن سنسور داریم. بنابراین اگر یک سنسور داشته باشیم عدد 0 می گذاریم و اگر تعداد سنسور 2 بود برای فراخوانی سنسور شماره 2، از عدد 1 استفاده می کنیم و اگر تعداد سنسور 3 بود برای فراخوانی سنسور شماره 3، از عدد 2 استفاده می کنیم.

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

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

برنامه پروژه در نرم افزار آردوینو

 عیب یابی:

بعد از اتمام مراحل فوق ممکن است به مشکلاتی برخورد کنید، ما سعی کردیم تعدادی از این مسائل را در زیر فهرست کنیم.

1. در صورتی که سنسور همواره دمایی پایدار (یکسان) را نشان دهد؛ ممکن است اتصالات به درستی وصل نشده باشد، قبل از استفاده مجدد آردوینو، مطمئن شوید که اتصالات به درستی انجام گرفته است.

2. در صورتی که بعد از راه اندازی، نتایج نادرست از سنسور دمای DS18B20 حاصل شود، ممکن است سنسور توانایی کافی در پردازش اطلاعات را نداشته باشد و یا سرعت درخواست اطلاعات توسط شما بیش از حد سریع باشد. برای حل این مشکل می توانید زمان Delay در برنامه را که به صورت پیش فرض 500 میلی ثانیه تعریف شده است را افزایش دهید.

لازم به ذکر است این قبیل از مشکلات نباید در پروژه آموزشی اتفاق بیافتد، اما ممکن است بعضی از کدها و مراحل برنامه نویسی را تغییر داده باشید.

ویدیو ضبط شده از نحوه عملکرد پروژه

 اطلاعات پروژه

 رمز فایل : www.electronics98.com (این مطلب فاقد فایل جهت دانلود است)

 نویسنده : محسن برات زاده

 تاریخ انتشار : 8 ژانویه 2019

3 دیدگاه

  1. سلام من این پروژه رو روی پروتئوس بستم.
    اول “127-“نشون میده.
    بهد “85”نشون میده.
    بعد دما رو درست نشون میده.ولی بعد از سومین دمایی که نشون داد بقیه رو “127-“نشون میده .
    من کد رو از روی سایت کپی کردم . پروژه رو هم مثل سایت بستم.
    اگر میشه راهنمایی کنید .
    ممنون

  2. فرهاد اکبری

    سلام دوست عزیز
    در این پروژه از کتابخانه Dallas استفاده شده است که یک کتابخانه بسیار دقیق و صحیح برای اندازه گیری دما با سنسور DS18B20 می باشد، در صورت بستن مدار به صورت عملی هیچ مشکلی در پروژه وجود ندارد، در نرم افزار پروتئوس معمولا با تنظیم نبودن کلاک میکروکنترلر اینگونه مشکلات به وجود خواهد آمد. به احتمال زیاد با افزایش مقدار زمان تاخیر در خط 51 برنامه از 500 میلی ثانیه به 2000 میلی ثانیه این مشکل برطرف شود.

  3. سلام خسته نباشید
    ببخشید من داخل دستگاهم یک سنسور dht11 گذاشتم
    اما این سنسور دمای بین 36.6 تا 40 درجه را اصلا نشون نمیده
    یعنی وقتی که دما میشه 36.7 . 40 درجه نشون میده.
    ولی بقیه دما ها را دقیق نشون میده
    اگر میشه راهنماییم کنید که چجوری این مشکلو بر طرف کنم

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

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

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