اتصال چند سنسور DS18B20 به AVR در بسکام

مقدمه:

در مقاله پیدا کردن سریال سنسور DS18B20 به نحوه دستیابی به شماره سریال منحصر به فرد سنسور دمای DS18B20 پرداختیم و در آن جلسه قول دادیم که در آموزشی به نحوه اتصال چند سنسور دما به میکروکنترلر AVR با کامپایلر بسکام بپردازیم. در این جلسه قصد داریم دو سنسور دمای دیجیتال DS18B20 را به میکروکنترلر ATmega8 از خانواده AVR متصل کرده و دمای هریک را بصورت جداگانه بخوانیم.

پیش نیاز:

برای اتصال چند سنسور به AVR ابتدا باید شماره سریال سنسورها را بدانیم، بنابراین نیاز است که یک بار دیگر مدار جلسه پیدا کردن سریال سنسور DS18B20 را ببندید و هر بار یکی از سنسورها را به میکرو وصل کرده و مدار را روشن کنید و شماره سریال نمایش داده شده روی LCD را روی یک کاغذ چاپ کرده و به بدنه سنسور بچسبانید.

سخت افزار:

سنسورهای دمای DS18B20 را مطابق نقشه زیر به میکروکنترلر ATmega8A از خانواده AVR متصل کنید:

نقشه اتصال چند سنسور DS18B20 به میکروکنترلر AVR
نقشه اتصال چند سنسور DS18B20 به AVR

 

برنامه میکرو:

در این قسمت برنامه بسکام Bascom را برای اتصال چند سنسور به AVR مشاهده می‌فرمایید:

در این برنامه در ابتدا به تعیین نام میکرو و فرکانس کاری پرداخته‌ایم، سپس پایه‌های LCD و سنسور DS18B20 را مشخص کرده‌ایم. در بخش بعدی متغیرها را تعریف کرده‌ایم.  در اینجا دو متغیر مهم از نوع آرایه بایتی به نام Reg_no_1 و Reg_no_2 داریم. هر کدام از این متغیرها را باید با شماره سریال یکی از سنسورها پر کنیم. بدین ترتیب که مطابق کد بالا در هر خانه دو رقم (8 بایت) از سریال سنسور (64 بیتی) را که در مرحله قبل بدست آورده بودیم جایگزین می‌کنیم.

در حلقه برنامه با ارسال جفت دستور HCC و H44 به تمام سنسورهای روی خط مشترک فرمان می‌دهیم که عملیات خوانش و تبدیل دما را آغاز کنند. این کار حدود 750 میلی‌ثانیه طول می‌کشد، به همین دلیل 1 ثانیه صبر می‌کنیم. سپس با دستور 1wverify که درجلوی آن آرایه سریال سنسور اول قرار دارد بررسی می‌کنیم که آیا سنسور مورد نظر به میکرو متصل است یا خیر اگر نباشد متغیر سراسری Err برابر با 1 می‌شود. با دستور HBE به سنسور مورد نظر فرمان می‌دهیم که اطلاعاتش را برای میکرو ارسال کند.

با دستور 1wread مقدار 9 بایت از اطلاعات دریافتی را خوانده و پس از چک کردن CRC و انجام تبدیلات لازم و فرمت بندی دما را استخراج کرده و روی خط اول LCD نشان می‌دهیم. اگر اطلاعات غلط بود عبارت sensor failure و اگر سنسور کلا وجود نداشت عبارت no sens را چاپ می‌کنیم. این کار برای سنسور دوم نیز با سریال خودش تکرار می‌شود و از لحاظ تئوری محدودیتی در تعداد سنسورها وجود ندارد مگر اینکه در عمل حالت خازنی یا کسری ولتاژ روی کابلها بوجود آید.

تمرین:

1- بجای Lcd Fusing(y , “#.&”) در ابتدای برنامه دستور Config Single = Scientific , Digits = 1 را بنویسید تا دقت ممیز شناور متغیر single کلا یک رقمی شود و نیاز به فرمت های پیچیده نداشته باشیم.

2- این برنامه را با 4 سنسور پیاده سازی کنید.

 

نتیجه‌گیری:

ما در این مقاله یادگرفتیم که چگونه تعداد زیادی سنسور DS18B20 را به یک پایه از میکروکنترلر AVR متصل کنیم و با Bascom برای خواندن آنها برنامه بنویسیم. با کمک این روش براحتی و با صرف هزینه کم می‌توان دمای نقاط مختلف یک مکان یا چند سالن را اندازه گیری کرد و در وقت و هزینه صرفه جویی نمود.

بازدیدها: 9