در این پست راه اندازی سنسور دمای DS18B20 با استفاده از اردوینو را اموزش خواهیم داد که دمای اندازه گیری شده توسط سنسور روی یک lcd کاراکتری نمایش داده خواهد شد. از انجایی که این سنسور بسیار دقیق و کاربردی است ما در پروژه هایی که در اینده قرار خواهیم داد حتما از این سنسور استفاده می کنیم.
قبلا راه اندازی این سنسور را با میکروکنترلر avr اموزش داده بودیم که می تونید این پست را در اینجا مشاهده کنید. در ادامه با این سنسور بیشتر اشنا خواهیم شد
سنسور دما DS18B20 :
سنسور DS18B20 یک سنسور دمای بسیار دقیق می باشد که می توان از ان در پروژه های مختلفی مانند دستگاه جوجه کشی ، گلخانه های هوشمند ، تنظیم دمای محیط و موارد مشابه استفاده کرد. ما قبلا سنسور دمای LM35 را هم راه اندازی کرده بودیم ولی LM35 یک سنسور انالوگ می باشد و همچنین دقت کمتری نسبت به سنسور سنسور دما DS18B20 دارد. سنسور DS18B20 یک سنسور دمای دیجیتال با دقت اندازه گیری ۰٫۵ درجه سانتی گراد است که می تواند دمای ۵۵- تا ۱۲۵+ درجه را اندازه گیری کند، پروتکل ارتباطی با این سنسور یک سیمه (۱wire) است. با یک سیم می توان تا ۹ سنسور دیجیتال DS18B20 را راه اندازی کرد و طول سیم واسط بین سنسور و میکروکنترلر می تواند تا حداکثر ۷ متر باشد. سنسور DS18B20 یک سنسور خیلی دقیق و عالی برای استفاده در پروژه هایی است که به دقت و اعتماد نیاز دارند. شکل این سنسور و پین های ان به صورت زیر است :
برای راه اندازی این سنسور با اردوینو ما از دو کتابخانه پروتکل 1wire و کتابخانه سنسور استفاده کرده ایم که می توانید این دو کتابخانه را از طریق لینک زیر دانلود کنید و انها را طبق ادامه توضیحات به برنامه اردوینو اضافه کنید :
دانلود کتابخانه سنسور DS18B20برای اضافه کردن دو کتابخانه بالا به نرم افزار اردوینو کافی است که فایل ها را دانلود کرده و از حالت Zip خارج کنید و هر دو پوشه را به پوشه های libraries موجود در محل نصب برنامه اردوینو اضافه کنید .
شماتیک پروژه :
در تصویر بالا شماتیک این پروژه را مشاهده می کنید که قطعات اصلی ان شامل یک سنسور DS18B20 برای اندازه گیری دما و یک برد اردوینو UNO که مقادیر دما را دریافت کرده و یک LCD کاراکتری 2*16 که این مقادیر دما را نشان می دهد. پتانسیومتر RV1 برای تنظیم کنتراست LCD کاراکتری استفاده شده است. لازم است که پین خروجی سنسور DS18B20 را با یک مقاومت ۴٫۷K(مقاومت بالاکش R1) به مثبت تغذیه متصل کنیم.
برنامه :
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 27 28 29 |
////////// WWW.EMIC.IR ////////// #include <LiquidCrystal.h> //فراخواني کتابخانه ال سي دي کاراکتري// #include <OneWire.h> //فراخواني کتابخانه ارتباط يک سيمه// #include <DallasTemperature.h> //فراخواني کتابخانه سنسور// LiquidCrystal lcd(13, 12, 11, 10, 9, 8, 7); //تابع روبرو مشخص مي کند که کدام پين هاي اردوينو به ال سي دي متصل شود// OneWire oneWire(1); //دستور روبرو پروتکل يک سيمه را پيکره بندي مي کند و پين مورد نظر خود براي ارتباط يک سيمه را مشخص مي کنيم// DallasTemperature sensors(&oneWire); //دستور روبرو ارتباط بين پروتکل يک سيمه و سنسور دما را برقرار مي کند// void setup() { sensors.begin(); //دستور روبرو سنسور را پيکره بندي مي کند// lcd.begin(16,2); //دستور روبرو ال سي دي را پيکره بندي مي کند// } void loop() { float Temp ; //براي ريختن مقادير دما در ان float تعريف متغير از نوع// sensors.requestTemperatures(); //دستور روبرو از سنسور درخواست دما مي کند// lcd.clear(); //پاک کردن ال سي دي// lcd.setCursor(2,0); //رفتن به ستون 2 و سطر 0 از ال سي دي// lcd.print("WWW.EMIC.IR"); //روي ال سي دي WWW.EMIC.IR نوشتن متن// lcd.setCursor(0,1); //رفتن به ستون 0 و سطر 1 از ال سي دي// lcd.print("Dama :"); //روي ال سي دي Dama : نوشتن متن// Temp=sensors.getTempCByIndex(0); //ميريزد Temp دستور روبرو مقدار دما را از سنسور دريافت کردن و درون متغير// lcd.print(Temp); //که حاوي مقدار دماي اندازه گيري شده از سنسور است روي ال سي دي Temp نمايش متغير// lcd.print("C"); //نمايش علامت سانتيگراد روي ال سي دي// delay(500); //ايجاد تاخير به مدت 0.5 ثانيه// } |
همانطور که در برنامه بالا می بینید ما در خط 6 برنامه پین هایی از برد اردوینو که باید به LCD کاراکتری متصل شوند را مشخص کرده ایم و همچنین در خط 7 پینی از برد اردوینو که باید به سنسور متصل شود را مشخص می کنیم. دلیل اینکه در خط 25 برنامه جلوی دستور sensors.getTempCByIndex داخل پرانتز عدد 0 را وارد کرده ایم این است که ما در این پروژه فقط از یک سنسور استفاده کرده ایم و درصورتی که بخواهیم از تعداد بیشتری سنسور استفاده کنیم, باید این عدد تغییر کند. برنامه بسیار ساده می باشد و توضیحات کامل نوشته شده است, شما باتوجه به نیاز خود می توانید تغییرات لازم را در برنامه انجام دهید. سوالات خودتون رو می تونید در قسمت نظرات مطرح کنید.
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
سلام برای پروژه تب سنج دانشگاه برنامه شمارو وارد کردم
با این متن روبرو شدم درسته همه چیز ؟
Sketch uses 5488 bytes (17%) of program storage space. Maximum is 32256 bytes.
Global variables use 122 bytes (5%) of dynamic memory, leaving 1926 bytes for local variables. Maximum is 2048 bytes.
سلام
مهندس میشه همین پروژه با همین سنسور برای کنترل سرعت فن انجام بدی ؟؟؟
یا برای من انجام بده هزینش بگیر .، من احتیاج به سنسور دقیق و حساسDS18B20 برای پروژه دارم
لطفا در سریعترین زمان پاسخ بدین ،،،،خیلی عجله دارم
باسلام و احترام این سنسور اگر در موقع نصب سه سیم منفی دیتا و مثبت سیم های منفی و مثبت برعکس زده بشه میسوزه
و اگر هم در هر صورت مقاومت نباشه سر راهش کار نخواهد کرد