دماسنج با سنسور LM35 و میکرو AVR

24

در این پست از سایت اِمیک, شما با ساخت یک دماسنج با استفاده از سنسور پرکاربرد و معروف LM35 اشنا خواهید شد. سنسور LM35  یک سنسور انالوگ می باشد, به این معنی که با تغییرات دمای محیط ولتاژ انالوگی در خروجی ان ایجاد می شود که با اندازه گیری ان توسط ADC میکروکنترلر می توانیم دمای محیط را اندازه گیری کنیم . در صورتی که با ADC و راه اندازی ان در میکرو AVR اشنا نیستید ” این پست “ را مطالعه کنید .

اشنایی با سنسور LM35 :

همانطور که گفته شد LM35 یک سنسور انالوگ می باشد که دما را برحسب درجه سانتی گراد به صورت کالیبره شده در خروجی به صورت ولتاژ نمایش می دهد. ای سنسور دارای دقت بسیار مناسبی می باشد و با توجه به قابلیت های ان دارای قیمت مناسبی هم می باشد . سنسور LM35 دارای تغییرات ولتاژ خروجی خطی نسبت به تغییرات دما می باشد و نیاز به کالیبراسیون ندارد.

ویژگی ها:

  •  کالیبره شده برای درجه سانتی گراد (سلسیوس)
  •  تغییرات خطی ولتاژ خروجی به ازای هر درجه، ۱۰mV
  •  در دمای ۲۵ درجه سانتی گراد دارای دقت ۰٫۵ درجه
  •  محدوده اندازه گیری بین -۵۵ تا ۱۵۰ درجه سانتی گراد
  •  مناسب برای کاربرد های کنترل از راه دور
  •  کم هزینه با توجه به ویژگی ها
  •  محدوده عملکرد ولتاژی بین ۴ تا ۳۰ ولت
  •  جریان درین کمتر از ۶ میکرو آمپر
  •  ایجاد گرمای بسیار کم توسط خود سنسور(اتلاف گرمایی)، حدود ۰٫۰۸ درجه سانتی گراد
  •  امپدانس خروجی کم، برای بار یک میلی آمپر حدود ۰٫۱ اهم

 

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

در این پروژه ما توسط  مبدل انالوگ به دیجیتال (ADC) میکرو ولتاژهای خروجی سنسور LM35 را اندازه گیری می کنیم و با قرار دادن این مقادیر در یک نسبت ساده انها را به مقادیر دما تبدیل می کنیم و بر روی LCD کاراکتری نمایش می دهیم . شماتیک به صورت زیر است :

برنامه پروژه :

در کدویزارد میکرو ATmega16 را انتخاب کنید و فرکانس ان را 1 مگاهرتز قرار دهید, پورت D را برای اتصال به LCD خروجی کنید و تنظیمات LCD کاراکتری را برای اتصال به پورت D انجام دهید. ADC میکرو را فعال کنید و در نهایت کدهای این پروژه به صورت زیر است :

برای نمایش مقادیر دما بر روی LCD کاراکتری لازم است که ابتدا این مقادیر به رشته ای از کاراکتر تبدیل شوند تا بتوانیم انها را بر روی LCD نمایش دهیم برای این کار از دستور sprintf استفاده می کنیم . این دستور یکی از توابع کتابخانه stdio می باشد, بنابراین برای استفاده از ان لازم است که در ابتدای برنامه این کتابخانه را فراخوانی کنیم .

همانطور که می دانید دستور read_adc عددی بین 0 تا 1023 با توجه به ولتاژ انالوگ ما از پین های میکرو می خواند (در صورتی که تیک Use 8 bits را نزده باشیم), و از انجایی که در دیتاشیت LM35 گفته شده که به ازای هر درجه سانتیگراد، ۱۰ میلی ولت تغییرات در خروجی سنسور داریم بنابراین می توانیم با یک تناسب ولتاژ خواند شده از سنسور را به مقادیر دما تبدیل کنیم, این کار در خط 40 برنامه انجام شده و با تقسیم مقادیر خوانده شده از ADC  بر 2.054 ولتاژ ما به مقادیر دما تبدیل می شود .

توجه : زمانی که از دستور sprintf در کدویژن استفاده می کنیم باید از مسیر

گزینه ی s}Printf Features}  را روی  float, width, precision  قرار دهیم .

کلیپ شبیه سازی :

 

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

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

 

 

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

24 دیدگاه‌ها

  1. سلام خسته نباشید پروژه انجام دادم ولی مشکلی که هست دما ثابت نشون می ده (498) به گفته شما سنسور را هم عوض کردم ولی مشکل حل نشده ممنون می شم اگه کمکم کنید.

  2. سلام خسته نباشید دوتا مشکل داشتم یکی سنسور تو پروتئوس ورودی نشون نمیده و اینکه عددشم بالا و پایین نمیره روی عدد t=498.1.c می مونه

  3. سلام دمتون گرم بابت پروژه من کد های برنامه را نوشتم واز توضیحات خوبتون استفاده کردم برای ساخت یک فیلم اموزشی که نشان استادم بدم و خیلی هم عالی شد بازم ممنون

  4. با سلام
    بنده دیتاشیت این سنسور را مطالعه نموده و مطلبی مبنی بر ضریب 2.054 جهت محاسبه دما ندیدم.
    لطفاً مبنا و مأخذ این فرمول را ارائه بفرمایید.
    با تشکر

  5. سلام من این پروژه رو انجام دادم ولی دما نشون داده نمیشه فقط بصورت T=1f c نشون داده میشه .
    مشکل چیه ؟
    و اینکه میشه راجع به خط 41 کد بیشتر توضیح بدید؟

    • سلام, نکته ای که در انتهای مطلب در مورد دستور sprintf گفته شده را انجام بدید
      در توضیحات گفته شده که باید مقادیر دمایی که محاسبه کردیم را برای نمایش روی ال سی دی کاراکتری به کاراکتر تبدیل کنیم که دستور sprintf این کار را انجام میدهد

  6. سلام ممنون از پروژه فوق العاده تون
    اگه ما بخوایم به میکرو بگیم مثلا ” توی دمای 20 درجه این کار رو انجام بده (مثلا یه پین رو روشن کن)”
    باید چجور دستور بنویسیم

ارسال دیدگاه

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