به نام خدا
اندازه گیری شدت نور ( لوکس متر ) با آردوینو
در این پروژه میخواهیم یک شدت سنج نور با استفاده از فتوسل ( LDR ) و برد آردوینو UNO درست کنیم .
فوتوسل یک قطعه پرکاربرد در تجهیزات مختلف میباشد . به عنوان مثال برای خاموش و روشن کردن خوکار لامپ های داخل ساختمان یا لامپ های شهری استفاده میشود به طوری که با کم شدن شدت نور محیط ( تاریک شدن هوا ) لامپ های شهری روشن میشوند یا برای ساخت تاکومتر یا همان سرعت سنج پره موتور ها ، عملکرد این وسیله به طوری است که هر موقع پره از جلوی فوتوسل رد میشود نور رسیده به آن کاهش می یابد و مقاومت ان افزایش یافته و ولتاژ رسیده به پردازنده کم میشود و یک واحد میشمارد . از فوتوسل در ساخت لوکس متر که یک وسیله برای اندازه گیری شدت نور است نیز استفاده میشود که موضوع همین پروژه است .
فوتوسل یک مقاومت متغیر حساس به نور است ، یعنی مقاومت آن با تغییر شدت نور تغییر میکند . طبق نمودار پایین میتوان گفت که با کاهش شدت روشنایی ، مقاومت فوتوسل افزایش می یابد و با افزایش شدت روشنایی ، مقاومت فوتوسل کاهش می یابد .
قطعات مورد نیاز :
- برد آردوینو
- ۸ عدد LED
- مقاومت ۲۲۰ اهم
- مقاومت ۱۰ کیلو اهم
- فوتوسل
مدار پروزه ما به صورت زیر است .
از آنجایی که فوتوسل یک مقاومت متغیر است پس توسط آن ولتاژ تغییر میکند . پس ما برای با یک ولتاژ متغیر آنالوگ سر و کار داریم که باید آن را بخوانیم . به همین منظور باید از واحد مبدل آنالوگ به دیجیتال یا همان ADC آردوینو استفاده کنیم . همانطور که در شکل بالا میبینید ما فوتوسل را به پین شماره صفر قسمت ADC آردوینو یعنی پین A0 وصل کرده ایم . یک ولتاژ بین ۰ تا ۵ ولت به پین A0 میرسد که ADC آردوینو آن را به یک عدد بین ۰ تا ۱۰۲۳ تبدیل میکند .
همان طور که در شکل بالا میبینید LED ها به پین های دیجیتال آردوینو وصل شدند و توسط یک مقاومت ۲۲۰ اهم برای جریان کشی آن ها را محدود کرده ایم . این LED ها با توجه به میزان ولتاژ خوانده شده از ADC روشن میشوند .
برای دانلود کد های برنامه بر روی لینک زیر کلیک کنید .
دانلود فایل
عملکرد برنامه :
ابتدا پین های دیجیتال آردوینو را که به led ها وصل میشوند را به عنوان خروجی تعریف کرده ایم . و تعریف متغیر را برای پین شماره ۰ مبدل آنالوگ به دیجیتال ، متغیر i برای شمارش و light برای ریختن عدد خوانده شده از adc انجام داده ایم .
int led[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; int adjust = 0; int Light, i;
در این قسمت تمام پین هایی که برای LED ها استفاده کرده ایم را به عنوان خروجی تعریف میکنیم .
void setup() { for (i=0;i<10; i++) pinMode(led[i], OUTPUT); Serial.begin(9600); }
شروع حلقه اصلی برنامه . در این حلقه ابتدا ولتاژ را از پین شماره ۰ قسمت مبدل آنالوگ به دیجیتال میخوانیم . در خط بعدی این مقدار خوانده شده را در سریال مانیتور نرم افزار آردوینو نمایش میدهیم . در خط بعدی مقدار خوانده شده را تقسیم بر ۵۰ می کنیم ( برای راحتی کار برای روشن کردن LED ها ) و سپس این عدد را نیز در سریال مانیتور نرم افزار آردوینو نمایش میدهیم .
void loop() { Light = analogRead(adjust); Serial.println(Light); Light = Light / 50; Serial.println(Light);
در حلقه شرطی زیر گفته ایم که اگر متغیر Light صفر بود تمام led ها خاموش شوند در غیر این صورت اگر مثلا متغیر Light برابر با ۵ بود ، ۵ تا LED اول روشن شوند و بقیه خاموش شوند .
if (Light == 0) { for(i = 0; i < 10; i++) { digitalWrite(led[i], LOW); } } else { for(i = 0; i < Light; i++) { digitalWrite(led[i], HIGH); } for(i = i; i < 10; i++) { digitalWrite(led[i], LOW); } } delay(100); }
سلام
در طراحی کد برای پروژه دانسجوییم به مسکل برخوردم
اگر کسی بتونه کمکم کنه از خجالتش در میام.وقتم خیلی کمه
با تشکر
۰۹۱۹۶۰۸۹۷۷۱
سلام
توی تلگرام پیام بدید کمکتون میکنن
سلام
ممنون از سایت خوبتون
ببخشید مقاومت ۱۰کیلو اهم رو چرا به صورت موازی با فتوسل قرار میدهیم؟
به خاطر رنج بالای تغییرات مقاومت فتوسل هستش که میخواد محدودش کنه