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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

ds18b20

 

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

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

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

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

 

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

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

خروجی سنسور DS18b20

 

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

حمایت از BLO OM

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

BLO OM

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

دیدگاه ها

19 دیدگاه

  • teza
    ۸ آبان ۱۴۰۰

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

    • Zeus ‌
      Zeus
      ۱۴ آبان ۱۴۰۰

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

  • علی محمدی
    ۸ آبان ۱۴۰۰

    سلام برای پروژه تب سنج دانشگاه برنامه شمارو وارد کردم
    با این متن روبرو شدم درسته همه چیز ؟
    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.

    • Zeus ‌
      Zeus
      ۱۴ آبان ۱۴۰۰

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

  • علی محمدی
    ۸ آبان ۱۴۰۰

    پس از 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.

  • اکبر
    ۲۰ اسفند ۱۳۹۹

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

    • Sisoog Os
      Sisoog Os
      ۲۰ اسفند ۱۳۹۹

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

      • اکبر
        ۲۰ اسفند ۱۳۹۹

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

        • Sisoog Os
          Sisoog Os
          ۲۰ اسفند ۱۳۹۹

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

  • vbstudy
    ۲ دی ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۲۴ دی ۱۳۹۹

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

  • عماد
    ۲۱ مهر ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۲۰ دی ۱۳۹۹

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

  • پروژه راه‌اندازی سنسور دمای DS18b20 با NodeMcu - سیسوگ - Sisoog
    ۱۳ شهریور ۱۳۹۸

    […] می‌کنیم برای اطلاعات بیشتر ” راه‌اندازی سنسور دما DS18b20 با آردوینو ” را مطالعه […]

  • محمد
    ۲۰ تیر ۱۳۹۸

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

    • BLO OM
      BLO OM
      ۲۳ تیر ۱۳۹۸

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

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

      موفق باشید.

  • BLO OM
    BLO OM
    ۲۰ تیر ۱۳۹۸

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

  • منصوری
    ۱۹ تیر ۱۳۹۸

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

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

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک