رباتیک و هوافضا

اندازه گیری شدت نور ( لوکس متر ) با آردوینو

اندازه گیری شدت نور

به نام خدا

اندازه گیری شدت نور ( لوکس متر ) با آردوینو

در این پروژه میخواهیم یک شدت سنج نور با استفاده از فتوسل ( LDR ) و برد آردوینو UNO درست کنیم .

فوتوسل یک قطعه پرکاربرد در تجهیزات مختلف میباشد . به عنوان مثال برای خاموش و روشن کردن خوکار لامپ های داخل ساختمان یا لامپ های شهری استفاده میشود به طوری که با کم شدن شدت نور محیط ( تاریک شدن هوا ) لامپ های شهری روشن میشوند یا برای ساخت تاکومتر یا همان سرعت سنج پره موتور ها ، عملکرد این وسیله به طوری است که هر موقع پره از جلوی فوتوسل رد میشود نور رسیده به آن کاهش می یابد و مقاومت ان افزایش یافته و ولتاژ رسیده به پردازنده کم میشود و یک واحد میشمارد . از فوتوسل در ساخت لوکس متر که یک وسیله برای اندازه گیری شدت نور است نیز استفاده میشود که موضوع همین پروژه است .

 

LDR1

 

فوتوسل یک مقاومت متغیر حساس به نور است ، یعنی مقاومت آن با تغییر شدت نور تغییر میکند . طبق نمودار پایین میتوان گفت که با کاهش شدت روشنایی ، مقاومت فوتوسل افزایش می یابد و با افزایش شدت روشنایی ، مقاومت فوتوسل کاهش می یابد .

how_a-light_depedant_resistor

 

قطعات مورد نیاز :

  • برد آردوینو
  • ۸ عدد LED
  • مقاومت ۲۲۰ اهم
  • مقاومت ۱۰ کیلو اهم
  • فوتوسل
بیشتر بخوانید...  سیستم تشخیص بایومتریک با استفاده از رزبری پای

مدار پروزه ما به صورت زیر است .

LDR

 

از آنجایی که فوتوسل یک مقاومت متغیر است پس توسط آن ولتاژ تغییر میکند . پس ما برای با یک ولتاژ متغیر آنالوگ سر و کار داریم که باید آن را بخوانیم . به همین منظور باید از واحد مبدل آنالوگ به دیجیتال یا همان 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);

}

 پایان

دیدگاه‌ها (4)

*
*

    فراهتنی مهمان مرداد 6, 1396 پاسخ

    سلام
    در طراحی کد برای پروژه دانسجوییم به مسکل برخوردم
    اگر کسی بتونه کمکم کنه از خجالتش در میام.وقتم خیلی کمه
    با تشکر
    ۰۹۱۹۶۰۸۹۷۷۱

      Admin مدیر کل آبان 14, 1399 پاسخ

      سلام
      توی تلگرام پیام بدید کمکتون میکنن

    Farahnaz مهمان شهریور 30, 1398 پاسخ

    سلام
    ممنون از سایت خوبتون
    ببخشید مقاومت ۱۰کیلو اهم رو چرا به صورت موازی با فتوسل قرار میدهیم؟

      Admin مدیر کل آبان 14, 1399 پاسخ

      به خاطر رنج بالای تغییرات مقاومت فتوسل هستش که میخواد محدودش کنه