در این پست شما با نحوه ساخت یک دماسنج با سنسور معروف LM35 اشنا می شوید. قبلا راه اندازی این سنسور را با میکروکنترلر AVR توضیح داده بودم که می توانید این پست را در اینجا مشاهده کنید. در این پست ما با استفاده از برد اردوینو یونو (Uno) و سنسور LM35 دمای محیط را اندازه گیری می کنیم و روی LCD کاراکتری 2*16 نمایش می دهیم.
سنسور LM35 :
سنسور LM35 یک سنسور انالوگ می باشد که دما را برحسب درجه سانتی گراد به صورت کالیبره شده در خروجی به صورت ولتاژ نمایش می دهد. این سنسور دارای دقت بسیار مناسبی می باشد و با توجه به قابلیت های ان دارای قیمت مناسبی هم می باشد . سنسور LM35 دارای تغییرات ولتاژ خروجی خطی نسبت به تغییرات دما می باشد و نیاز به کالیبراسیون ندارد.
ویژگی ها:
- کالیبره شده برای درجه سانتی گراد (سلسیوس)
- تغییرات خطی ولتاژ خروجی به ازای هر درجه، ۱۰mV
- در دمای ۲۵ درجه سانتی گراد دارای دقت ۰٫۵ درجه
- محدوده اندازه گیری بین -۵۵ تا ۱۵۰ درجه سانتی گراد
- مناسب برای کاربرد های کنترل از راه دور
- کم هزینه با توجه به ویژگی ها
- محدوده عملکرد ولتاژی بین ۴ تا ۳۰ ولت
- جریان درین کمتر از ۶ میکرو آمپر
- ایجاد گرمای بسیار کم توسط خود سنسور(اتلاف گرمایی)، حدود ۰٫۰۸ درجه سانتی گراد
- امپدانس خروجی کم، برای بار یک میلی آمپر حدود ۰٫۱ اهم
شماتیک پروژه :
همانطور که در تصویر بالا مشاهده می کنید, این پروژه شماتیک ساده ای دارد و به راحتی می توانید روی برد بورد پیاده کنید, پتانسیومتر برای تنظیم کنتراست LCD هست که در صورتی که نداشتید میتونید پین 3 ال سی دی رو به زمین متصل کنید. توجه کنید که LCD در عمل 2 پین 15 و 16 هم دارد که به ترتیب باید به مثبت و منفی تغذیه متصل کنید.
برنامه پروژه :
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 30 31 |
//////// WWW.EMIC.IR //////// #include <LiquidCrystal.h> /* lcd معرفي کتابخانه */ /* متصل شود LCD تابع زیر مشخص می کند که کدام پین های اردوینو به */ LiquidCrystal lcd(13, 12, 11, 10, 9, 8, 7); void setup() { // اردوینو مشخص میکند ADC دستور زیر مقدار ولتاژ مبنا یا رفرنس را برای کار با واحد // analogReference(DEFAULT); pinMode(A0, INPUT); /* A0 ورودی کردن پین */ lcd.begin(16, 2); /* LCD پيکره بندي */ } void loop() { int a ; // خوانده شده از پین اردوینو در ان adc برای ریختن مقادیر a تعریف متغیر // float Temperature ; // برای ریختن مقادیر دما در ان float تعریف متغیر از نوع // a = analogRead(A0); // (عددی بین 0 تا 1023) a در متغیر adc ریختن مقادیر // // را به مقادیر دما تبدیل می کند adc مقادیر خوانده شده از lm35 دستور زیر با توجه به دیتاشیب // Temperature = (a / 2.054) ; lcd.clear(); /* LCD پاک کردن */ lcd.print("Dama : "); // lcd روی Dama : نوشتن عبارت // lcd.print(Temperature); // lcd نوشتن مقادیر دما که در بالا بدست اوردیم روی // lcd.print("C"); // lcd نوشتن علامت سانتیگراد بعد از دما زوی // lcd.setCursor(2, 1); /* رفتن به ستون 2 و سطر 1 */ lcd.print("WWW.EMIC.IR"); /* LCD روي WWW.EMIC.IR نوشتن */ delay(500); /* ايجاد تاخير به مدت نیم ثانيه */ } |
توضیحات کامل برنامه نوشته شده و فقط به این نکته توجه کنید که دستور analogRead عددی بین ۰ تا ۱۰۲۳ با توجه به ولتاژ انالوگ ما از پین برد اردوینو می خواند, و از انجایی که در دیتاشیت LM35 گفته شده که به ازای هر درجه سانتیگراد، ۱۰ میلی ولت تغییرات در خروجی سنسور داریم بنابراین می توانیم با یک تناسب ولتاژ خواند شده از سنسور را به مقادیر دما تبدیل کنیم, این کار در خط 22 برنامه انجام شده و با تقسیم مقادیر خوانده شده از ADC بر ۲٫۰۵۴ ولتاژ ما به مقادیر دما تبدیل می شود . در خط 8 برنامه ما ولتاژ مبنا برای کار با واحد ADC برد اردوینو را مشخص کرده ایم که مقدار ان را DEFAULT قرار داده ایم, که این یعنی برای بردهای 5 ولت مثل یونو برابر با 5 ولت است و برای بردهای 3.3 ولت برابر با 3.3 ولت است .
در صورتی که با دستورات تخصصی اردوینو اشنا نیستید بهتر است این پست را مطالعه کنید, اگه سوالی در مورد برنامه یا هر قسمت پروژه داشتید می تونید در قسمت نظرات مطرح کنید .
کلیپ تست پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
سلام میخوام پروژهlm35 رو با stm32f103c8 ببندم اما تو. برنامه کیل نمی دونم چه کدی بزنم همین پروژه رو با کد شما تو اردوینو هم انجام دادم نشد اگه میشه سوال اولم رو جواب برید چه فرمولی باید باشه چون ورودی فرق میکنه تو دوتا ic
سلام من با stm32f103c8 کار میکنم چجوری میشه فرمولی بزارم که روی اون درست بشه و اعداد رو نمایش بده در برنامه keil
سلام ممنون از پروژه خوبتون عالی بود فقط در شماتیک یه ذره راهنمایی کنین مثلا بگین که پین فلان ال سی دی به پین فلان آردوینو ولی در کل خوب بود
من این مدار رو میبندم ولی دما رو درست نشون نمیده؛ میشه راهنمایی کنید؟
دما رو 200، 300، 0 و … نشون میده
سلام ایا میشه بجای سنسور lm35 از ds18b20 استفاده کرد؟
سلام, خیر نمی شود. قبلا پروژه دماسنج با سنسور DS18B20 را در سایت قرار دادم.
پروژه آردوینو دماسنج دقیق با سنسور DS18B20
راه اندازی سنسور دما DS18B20 با آردوینو و lcd
سلام خسته نباشید من اگر بخوام همین پروژه رو تبدیل بکنم و به عنوان تب سنج استفاده کنم بهتر چیکار بکنم
سلام, باید از سنسورهای تشخیص دمای بدن استفاده کنید