کیت های الکترونیکی, مقالات آموزشی

راه اندازی سنسور DS18B20 توسط AVR و اتمل استودیو

راه اندازی سنسور دمای DS18B20 توسط AVR

راه اندازی سنسور DS18B20 توسط AVR و کامپایلر اتمل استودیو:

سنسور دمای DS18B20 چیست و چگونه کار می کند:

سنسور دمای DS18B20 یک سنسور دمای بسیار دقیق دیجیتال می باشد که در پیکج های مختلف در بازار ارائه می شود. این سنسور هم به صورت پیکج ضد آب و هم به صورت یک قطعه با پیکج TO-92 عرضه می شود. دقت اندازه گیری دما در این سنسور 0.5 درجه سانتی گراد و بازه اندازه گیری دما در این سنسور بین -55 تا +125 درجه سانتی گراد می باشد. سنسور DS18B20 برای استفاده در مصارف تجاری و صنعتی یک گزینه بسیار مناسب می باشد.

در شکل زیر Pinout این سنسور نشان داده شده است.

D:\Electronic\Learning\Bagherian 000817\Introduction-to-DS18B20.jpg

مزایا و ویژگی های سنسور دمای DS18B20:

  • استفاده از پروتکل ویژه یک سیمه (1-Wire) شرکت دالاس و تنها نیاز به یک پین از پورت برای ارتباط

  • کاهش قطعات مورد نیاز با مجتمع سازی سنسور و استفاده از حافظه EEPROM

  • اندازه گیری دما از -55 درجه سانتی گراد تا +125 درجه سانتی گراد

  • دقت ±0.5 درجه سانتی گراد از -10 درجه سانتی گراد تا +85 درجه سانتی گراد

  • رزولیشن قابل برنامه ریزی بین 9 بیت تا 12 بیت

  • بدون نیاز به قطعات جانبی

  • عملکرد در حالت تغذیه پارازیتی تنها با استفاده از دو پین (DQ وGND )

  • ساده سازی کاربردهای اندازه گیری دمای توزیع شده توسط قابلیت Multidrop

  • هر سنسور یک کد سریال خاص 64 بیتی دارد که در رام خود سنسور قرار گرفته است

  • قابلیت تنظیم زنگ هشدار برای محدوده دمایی خاص که توسط کاربر تعریف می شود و با قطع تغذیه از بین نمی رود

کابرد های سنسور دمای DS18B20 و راه اندازی سنسور دمای DS18B20:

  • کنترل های دمایی

  • سیستم های دماسنج صنعتی

  • سیستم های حساس به حرارت با دقت بالا

  • استفاده به عنوان دماسنج

  • استفاده در انواع سیستم های گلخانه ای

نکته:

برای ارتباط با سنسور دمای DS18B20 یک پین از میکروکنترلر را اختصاص می دهیم. این پین با یک مقاومت 4.7 کیلو اهم باید بالا کش (Pull Up) شود (باید به تغذیه 5 ولت متصل گردد).

در شکل زیر شماتیک یا فایل شبیه سازی راه اندازی سنسور دمای DS18B20 با میکروکنترلر Atmega16 را مشاهده می کنید.

راه اندازی سنسور دمای DS18B20

سخت افزار مورد نیاز برای راه اندازی این سنسور چیست؟

سنسور دمای DS18B20 با سخت افزار یا پروتکل تک سیمه یا One Wire یا 1-Wire براحتی قابل راه اندازی می باشد. در پروتکل وان وایر یا تک سیمه ارسال و دریافت اطلاعات و کلاک پالس مورد نیاز، بین دو واحد سخت افزاری ( به طور مثال میکروکنترلر و سنسور دما) تنها با استفاده از یک پین صورت می گیرد. پروتکل یک سیمه یا 1-Wire توسط شرکت دالاس (Dallas) طراحی و ارائه شده است.

واسط ارتباطی تک سیمه یا 1-Wire شرکت دالاس برای راه اندازی سنسور دمای DS18B20:

پروتکل 1-Wire یک واسط ارتباطی طراحی شده توسط شرکت دالاس می باشد. که سرعت انتقال دیتای در آن پایین و سیگنال و تغذیه تنها توسط یک پین صورت می گیرد. ایده 1-Wire تقریبا شبیه به پروتکی I2C می باشد، اما فرق آن مسافت ارتباطی زیادتر و سرعت انتقال دیتای پایین می باشد. این پروتکل برای ارتباط با قطعات ارزان قیمت کوچک مانند سنسور های دیجیتال قابل استفاده می باشد. مدار عمومی از یک Master مانند میکروکنترلر که انتقال دیتا را راه اندازی اولیه می کند و یک یا چند عدد Slave مانند سنسور DS18B20 تشکیل شده است.

به صورت فیزیکی مانند I2C، باس 1-Wire مانند یک مدار Open-Collector به صورت پسیو در منطق بالای لاجیکی با یک مقاومت نگه داشته می شود. طبق استاندارد، پروتکل زمانی فعال می شود که، میکروکنترلر خط دیتا را در سطح منطقی صفر قرار دهد. برای ارتباط با سنسور در زیر یک پین از میکروکنترلر در نظر گرفته شده است.

 

برای شروع انتقال دیتا ، میکروکنترلر باس انتقال دیتا را باید، به مدت 480 میکرو ثانیه در منطق صفر قرار دهد. سپس میکروکنترلر باید به مدت 60 میکروثانیه صبر کند تا سنسور خط دیتا را برابر صفر کند تا نشان دهد که آماده به کار شده است. در واقع این توالی هر کدام از Slave هایی که در باس قرار دارند را ریست خواهد کرد و هر کدام با صفر کردن خط باس ، سیگنال حضور خود را اعلام می کند.

دستورالعمل برای عملیات ریست به صورت زیر می باشد:

  • خط خروجی دیتا به صورت خروجی تنظیم می شود و در منطق صفر قرار داده می شود
  • 480 میکرو ثانیه باید منتظر ماند
  • خط دیتا آزاد می شود
  • 60 میکرو ثانیه باید منتظر ماند
  • برای دریافت پاسخ Slave های موجود ، مقدار منطقی خط را قرائت می کنیم
  • برای دریافت پاسخ مابقی Slave ها منتظر می مانیم

تنها قسمت مهم در این بخش تاخیر میکرو ثانیه می باشد که باید دقیق باشد. در کامپایلر اتمل استودیو در هدر util/delay.h انواع تاخیر دقیق آماده استفاده می باشد. که در از آن برای ایجاد تاخیر مورد نیاز استفاده خواهیم کرد. فرکانس کاری استفاده شده برای میکروکنترلر در این آموزش برابر 8 مگا هرتز می باشد. کد قسمت ریست کردن سنسور در زیر آورده شده است.

 

نوشتن یک بیت در Slave نیز توسط یک پروتکل زمانی خاص صورت می گیرد.هر قالب زمانی دارای 60 میکرو ثانیه طول دارد و زمانی شروع می شود، که Master خط دیتا را به مدت 1 میکرو ثانیه برابر صفر قرار دهد. برای نوشتن یک منطقی روی خط دیتا، میکروکنترلر کافی است که خط دیتا را به صورت Float قرار دهد. در این حالت (به دلیل وجود مقاومت 4.7 کیلو اهم بالاکش) اتوماتیک یک منطقی روی خط قرار می گیرد. برای نوشتن صفر منطقی روی خط میکروکنترلر یا Master خروجی خود را برابر صفر قرار می دهد. در زیر قالب نوشتن یک بیت روی سنسور آورده شده است.

 

خواندن یک بیت از روی خط نیز یک قالب زمانی 60 میکرو ثانیه دارد. مجددا مستر خط دیتا را به مدت 1 میکرو ثانیه برابر صفر قرار می دهد. سپس مستر 14 میکروثانیه دیگر، قبل از خواندن دیتا از روی خط منتظر می ماند.

 

خواندن و نوشتن یک بایت، معادل با 8 بار عملیات بیتی می باشد.

یکی از بزرگترین مزیت های این پروتکل سخت افزاری نسبت به ارتباط سریال (UART ) و یا SPI افزایش طول سیم ارتباطی تا ماکزیمم 30 متر می باشد. این سخت افزار در عمده میکروکنترلر ها به صورت پیشفرض وجود دارد. در برخی مواقع که سخت افزار One Wire میکروکنترلر برای راه اندازی یک قطعه یا سنسور دیگر استفاده شده باشد ، براحتی می توانیم پروتکل One Wire را به صورت نرم افزاری ایجاد کنیم. که در بالا توضیح داده شد.

در این پروتکل برای شناسایی و مجزا کردن سخت افزار های موجود در یک سیستم به هر سخت افزار یک ID با ماکزیمم طول 8 بایت یا 64 بیت به عنوان آدرس اختصاص داده می شود.

در این آموزش برای راه اندازی سنسور دمای DS18B20 یک درایور نوشته شده است که پروتکل 1-Wire را به صورت نرم افزاری پیاده سازی می کند. از مزیت های این درایور، انتخاب هر پین به صورت دلخواه برای ارتباط با سنسور می باشد. در واقع شما با هر پین از میکروکنترلر که در دسترس باشد، براحتی می توانید با این سنسور ارتباط برقرار کنید و مقدار دمای محیط را توسط این سنسور بدست بیاورید.

در زیر برنامه نوشته شده در حلقه اصلی برنامه (main.c) راه اندازی سنسور دمای DS18B20 توضیح داده شده است.

 

در زیر برنامه نوشته شده در حلقه بی نهایت (Loop اصلی) برنامه توضیح داده شده است.

در حلقه اصلی مقدار دمای سنسورهای یک و دو هر 200 میلی ثانیه یک بار خوانده می شوند و روی نمایشگر نشان داده می شوند.

 

برای دانلود فایل سورس کد و فایل شبیه سازی راه اندازی سنسور DS18B20 توسط AVR و اتمل استادیو روی لینک زیر کلیک کنید.

دانلود فایل سورس کد و فایل شبیه سازی راه اندازی سنسور DS18B20 توسط AVR و اتمل استادیو

محمود باقریان

درباره محمود باقریان

مهراد کیت با ۱۵ سال سابقه در زمینه طراحی سیستم های کنترل از راه دور و تولید تجهیزات خانه هوشمند و هر گونه هوشمند سازی توسط مهندسین داخلی آماده ارائه محصولات و خدمات می باشد.

4 دیدگاه در “راه اندازی سنسور DS18B20 توسط AVR و اتمل استودیو

  1. امیر گفت:

    بسیار ممنون از آموزش های مفیدتون.

    1. ممنون از انرژی مثبت شما.

  2. امیرعلی گفت:

    با این سورس کد میشه مقدار دمای شش تا سنسور رو دریافت کرد؟؟؟؟

    1. با سلام خدمت شما.
      توی برنامه توضیح داده شده کافیه به تعداد سنسور های دما پین توی میکروکنترلر تعریف بشه و طبق الگوی برنامه مقادیر سنسور قرائت بشه.

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

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

Time limit is exhausted. Please reload the CAPTCHA.