مقدمه:
سنسور دمای دیجیتال DS18B20 یک سنسور دیجیتال دقیق و خوب با پروتکل 1wire برای اندازهگیری دمای منفی 55 تا 125 درجه سانتیگراد میباشد. این سنسور برای اتصال به میکرو فقط به یک سیم برای انتقال اطلاعات دما احتیاج دارد. البته همراه با تغذیه به 3 سیم نیاز است، هر چند میتوان در مد parasite power با اتصال پایههای + و – سنسور به یکدیگر و اتصال آنها به زمین و اتصال دیتا با یک مقاومت پول آپ 4.7 کیلو به + تنها از دو سیم استفاده کرد. به هر روی این سنسور در حالت معمولی سه سیمه میتواند در انتهای کابلی به طول 20 متر و حتی بیشتر قرار گیرد و این ویژگی برای اندازهگیری دمای محیطهای صنعتی مثل گلخانهها و محیطهای کشت گزینه ساده، ارزان قیمت و البته دقیق به شمار میرود. (در مسافت های 20 متر و بیشتر در صورت بروز خطا بهتر است مقاومت pull up به 2.2 کیلو کاهش یابد).
اتصال چند سنسور به میکرو:
یکی از دغدغههای اصلی هنگام پایش دمای یک محیط، جمع آوری اطلاعات دمایی از نقاط مختلف است، به طور مثال در یک مجموعه ممکن است نیاز به پایش دمای 4 گلخانه و ارسال آنها به واحد مانیتورینگ داشته باشیم در این حالت نیاز است که 4 سنسور به میکروکنترلر متصل شود. یکی از ویژگیهای خوب سنسور دمای DS18B20 کد یکتای داخلی 64 بیتی منحصر به فرد یا لیزر کد برای هر سنسور میباشد، دقیقا مانند ریموتهای کدلرن هر سنسور یک سریال نامبر منحصر به فرد دارد. در این مقاله یاد میگیریم که چگونه سریال نامبر یا آدرس سنسور را بخوانیم تا در برنامههای بعدی برای خواندن دمای هر سنسور از آدرس آن سنسور استفاده کنیم. در پست بعدی انشاءالله نحوه خواندن دمای چند سنسور را آموزش خواهیم داد.
سخت افزار:
سنسور دمای DS18B20 را مطابق نقشه زیر به میکروکنترلر ATmega8A از خانواده AVR متصل کنید:

برنامه میکرو:
در این قسمت برنامه بسکام Bascom را برای دریافت آدرس سنسور مشاهده میفرمایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$regfile = "m8adef.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Pinc.5 , E = Pinc.4 , Db4 = Pinc.3 , Db5 = Pinc.2 , _ Db6 = Pinc.1 , Db7 = Pinc.0 Config Lcd = 16 * 2 Config 1wire = Portb.1 Cls Cursor Off Dim Reg_no(8) As Byte Dim I As Byte Wait 1 Lcd "DS18B20 Serial:" Reg_no(1) = 1wsearchfirst() Locate 2 , 1 For I = 1 To 8 Lcd Hex(reg_no(i)); Next End |
در برنامه بالا ابتدا نام و فرکانس میکروکنترلر (ATmega8A) معرفی شده سپس به پیکرهبندی پایههای LCD 2*16 پرداختهایم، بعد از آن پایه 1wire که به دیتای سنسور متصل میشود را برابر PORTB.1 قرار دادهایم. با دستور 1wsearchfirst اولین سنسور متصل به میکرو شناسایی شده و آدرس آن در آرایه 8 بایتی Reg_no قرار میگیرد. در قسمت آخر نیز سریال نامبر را به هگز تبدیل کرده و در خط پایین LCD نمایش میدهیم.
نتیجهگیری:
در این آموزش یادگرفتیم که چگونه آدرس سنسور DS18B20 را بدست آوریم، توجه داشته باشید که بعضی از سنسورهای فیک سریال ندارند و 16 عدد 00…00 را در خروجی مشاهده خواهید کرد. در پست بعدی به امید خدا نحوه خواندن دما از یک سنسور خاص از بین چند سنسور متصل به یک BUS را آموزش خواهیم داد.
منابع:
بازدیدها: 79