شنبه, مرداد 6, 1403
ادامه منو
    خانهپروژه های میکروکنترلر AVRپروژه با انواع LCDراه اندازی سنسور دما DS18B20 با میکروکنترلر AVR

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

    در این پست از سایت اِمیک, راه اندازی سنسور دما DS18B20 را اموزش خواهیم داد. ما در این پروژه با استفاده از میکروکنترلر AVR دمای این سنسور را خوانده و روی یک LCD کاراکتری 2*16 نمایش می دهیم. برنامه نویسی این پروژه در محیط کدویژن انجام شده است و برنامه به زبانی ساده نوشته شده تا همه بتوانید برنامه را به راحتی متوجه بشوید و در صورت نیاز خود تغیرات لازم را در ان اعمال کنید. از انجایی که این سنسور بسیار دقیق و کاربردی است ما در پروژه هایی که در اینده قرار خواهیم داد حتما از این سنسور استفاده می کنیم بنابراین این مطلب را حتما کامل یاد بگیرید.

    prj-ds18b20-lcd

    قبل از هر چیز بهتر است که ابتدا با این سنسور دقیق و کاربردی اشنا شویم .

    سنسور دما DS18B20 :

    سنسور DS18B20 یک سنسور دمای بسیار دقیق می باشد که می توان از ان در پروژه های مختلفی مانند دستگاه جوجه کشی ، گلخانه های هوشمند ، تنظیم دمای محیط و موارد مشابه استفاده کرد. ما قبلا سنسور دمای LM35 را هم راه اندازی کرده بودیم ولی LM35 یک سنسور انالوگ می باشد و همچنین دقت کمتری نسبت به سنسور سنسور دما DS18B20 دارد. سنسور DS18B20 یک سنسور دمای دیجیتال با دقت اندازه گیری 0.5 درجه سانتی گراد است که می تواند دمای 55- تا 125+ درجه را اندازه گیری کند، پروتکل ارتباطی با این سنسور یک سیمه (1wire) است. با یک سیم می توان تا 9 سنسور دیجیتال DS18B20 را راه اندازی کرد و طول سیم واسط بین سنسور و میکروکنترلر می تواند تا حداکثر 7 متر باشد. سنسور DS18B20 یک سنسور خیلی دقیق و عالی برای استفاده در پروژه هایی است که به دقت و اعتماد نیاز دارند. شکل این سنسور و پین های ان به صورت زیر است :

    pin-temperature-sensor-ds18b20

    مشخصات :

    •  ارتباط 1WIRE (یک سیمه)
    • ولتاژ کاری ۳ تا ۵.۵ ولت
    • تنظیم دقت اندازه گیری در مدهای ۹ , ۱۰ , ۱۱ و ۱۲ بیتی
    • قابلیت اندازه گیری دمای ۵۵- تا ۱۲۵+ سانتی گراد (۶۷- تا ۲۵۷+ فارنهایت)
    • اندازه گیری دما با دقت ۱۲ بیت در طول ۷۵۰ میلی ثانیه
    • دارای آدرس مخصوص برای هر سنسور در قالب ۶۴ بیت
    • قابلیت قرار دادن تعداد زیاد سنسور بر روی یک خط باس
    • ساخته شده در دو پکیج TO-92 و SOIC-8 PIN
    • خطای اندازه گیری 0.5± درجه سانتی گراد در بازه ۱۰- تا ۸۵+ درجه سانتی گراد

     

    شماتیک پروژه :

    sh-prj-ds18b20-lcd

    همانطور که در تصویر بالا مشاهده می کنید این پروژه دارای شماتیک ساده ای می باشد و قطعات اصلی ان شامل سنسور DS18B20 و میکروکنترلر ATmega16 برای خواندن مقادیر دما از سنسور و یک lcd کاراکتری 2*16 برای نمایش مقادیر دما می باشد. پتانسیومتر RV1 برای تنظیم کنتراست lcd می باشد و در صورتی که نمی خواهید استفاده کنید پین 3 ال سی دی رو به منفی تغذیه متصل کنید. لازم است که پین خروجی سنسور DS18B20 را با یک مقاومت 4.7K (مقاومت بالاکش R1) به مثبت تغذیه متصل کنیم. توجه کنید که از انجایی که در شبیه سازی پروتئوس پین های تغذیه میکروکنترلر وجود ندارد شما در عمل پین های 10 و 11 میکرو را به ترتیب به مثبت و منفی تغذیه متصل کنید.

     

    برنامه :

    همانطور که گفته شد برنامه این پروژه به زبان C و با کامپایلر کدویژن نوشته شده است. در ابتدا شما باید در کدویژن یک پروژه جدید ایجاد کنید و از قسمت Chip میکروکنترلر ATmega16 را انتخاب کنید و فرکانس ان را 1 مگ تنظیم کنید

    prj-ds18b20-Chip

    در ادامه در قسمت Port یکی از پورتها را برای اتصال به lcd خروجی کنید. ما پورت C را برای اتصال LCD انتخاب کرده ایم

    prj-ds18b20-Port

    در مرحله بعد از قسمت 1Wire Bus Interface ما پین صفر از پورت B را برای ارتباط یک سیمه (1wire) انتخاب می کنیم (تنظیمات به صورت تصویر زیر انجام شود)

    prj-ds18b20-1W

    و در قسمت Alphanumeric LCD تنظیمات را به صورت تصویر زیر برای اتصال به پورت C انجام می دهیم

    prj-ds18b20-Tlcd

    در مرحله اخر برای ایجاد کدهای ابتدایی برنامه باید مانند تصویر زیر روی Generate program, save and exit کلیک کنیم و پروژه را سه باز ذخیره کنیم

    prj-ds18b20-Save

    برنامه نهایی ما به صورت زیر می باشد, فقط توجه کنید که کتابخانه سنسور به صورت <ds1820.h> ایجاد می شود که باید به این صورت تغییر دهید <ds18b20.h> یک b اضافه می کنیم. و همانطور که در کد زیر می بینید هنگام خواندن از سنسور هم یک b اضافه می کنیم :

    توضیحات قسمت های مهم برنامه نوشته شده, سوالی داشتید می تونید در قسمت نظرات مطرح کنید

     

    کلیپ تست عملی پروژه :

     

    دانلود فایل ها

    پسورد فایل زیپ : www.emic.ir

     

     

    نظر یادتون نره…

    عابد رازانی
    عابد رازانیhttps://emic.ir/
    فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, در حال حاضر به تولید محتوای آموزشی و طراحی و انجام پروژه مشغول هستم.

    22 نظرات

    1. سلام
      پایه خروجی سنسور قرمز شد ولی عدد روی سنسور مثلا 27 درجه است روی LCD نشان داده نمی شود؟ کل برنامه گذاشتم.
      خطلا هم کدویژن و پروتئوس نمی دهد.

    2. سلام
      خروجی سنسور دیجیتال DS18B20 موقع شبیه سازی پروتئوس باید قرمز شود ولی همچنان خاکستری و غیر فعال است؟

    3. سلام
      می خواستم ماژول RCWL- 0516 (تشخیص حرکت مایکروویو) رو با ATmega32 راه بندازم و تو نمایشگر نمایش بده به صورت 0 و 1
      یه بخشش رو نوشتم ولی قسمتی که موقع تشخیص باید 1 و عدم تشخیص 0 شود رو نمی تونم بنویسم تو نمایشگر نشون بده
      while (1)
      {
      PORTA.0=1 ;
      PORTA.0=0;
      lcd_gotoxy(0,0);
      delay_ms(500);
      lcd_clear();
      }
      }
      ممنون میشم راهنمایی کن

    4. سلام جناب مهندس خسته نباشید میخواستم از شما تقاضا کنم اگه امکانش هست آموزش راه اندازی این مدار را با برد آردوینو در سایت قرار دهید با تشکر

    5. سلام میشه دما رو رو سون سگمنت نشان بدین دمای منفی رو به چه صورت نمایش میدن ممنون اگه کمکم کنید.

    6. سلام
      من همین برنامه رو توی کد ویژن میریزم میخوام کامپایلش کنم ارور زیر رو نشون میده مشکل از کجاس متغیر دما رو از اعشار به char چند چیزه دیگه تغییر دادم اما مشکل حل نشد؟ مرسی اگه راهنمایی کنید

      : character constant is too long

      • با عرض سلام و وقت بخیر و تشکر از اموزشهای مفیدتون. اگر بخواهیم دوتا سنسور ds18b20 را به یک پایه وصل کنیم و با تغییر دما در هر سنسور یک پایه از میکرو یک شود چه تغییراتی باید در برنامه انجام دهیم

    7. سلام
      من همین کد ها رو که وارد میکنم
      دما رو 99999-
      نشون میده چراااا؟
      و هیچ تغییری هم نمی کنه
      ایا ربطی به ور‍ژن پروتیوس داره؟

      • سلام, این مشکل زمانی پیش می یاد که سنسور را از میکرو جدا کنیم. ببینید که سنسورتون به درستی به میکرو متصل شده است و این احتمال هم وجود دارد که سنسور خراب باشد.

    8. سلام
      دمت گرم مهندس جان من خیلی وقت بود که سر همین نکته کوچولو برنامم کار نمیداد
      همین که فایل سرآیند ds1820باید به ds18b20 تبدیل بشه
      خیلی ممنون

    9. سلام خدمت جناب رازانی و همه ی دوستان
      یه سوال داشتم جناب رازانی واونم این هست که اگه بخوایم دما تا دورقم اعشار روی السیدی نشان داده بشه باید چه تغییری تو برنامه بدیم؟

      • سلام, همانطور که در متن گفته شده این سنسور حدود 0.5 درجه خطا دارد, بنابراین مقدار اعشاری که نمایش می دهد دقیق نیست و لازم نیست تا دو رقم را نمایش دهیم. ولی شما می توانید در خط 28 برنامه با تغییر دستور sprintf به “T=%4.2f” تا دو رقم اعشار را روی lcd نمایش دهید

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

    11. سلام خسته نباشید میخواستم بدونم اگه بجای یک سنسور ds18b20 بخوام سه عدد سنسور بگذارم باید چیکارکنم

      • سلام, هر کدام از این سنسورها یک کد شناسایی کارخانه ای دارن، که باید ابتدا یک دستور شناسایی برای همه سنسورها بفرستیم تا خودشان را معرفی کنند! سپس در برنامه به کمک کدهایی شناسایی هر سنسوری را که خواستیم, میتونیم صدا بزنیم و دمایی ان را بخوانیم! در اینده حتما این پروژه رو قرار میدم

    ارسال دیدگاه

    لطفا نظر خود را وارد کنید!
    لطفا نام خود را اینجا وارد کنید

    spot_img