آموزش آردوینو پروژه های آردوینو

راه اندازی فتوسل با آردوینو Arduino

نوشته شده توسط حسین فهیمی

سنسور فتوسل (Photocell sensor) یا همچنین به نام سنسور LDR (Light Dependent Resistor) نیز شناخته می‌شود، یک نوع سنسور حسگر نوری است. این سنسورها تغییر مقاومت الکتریکی خود را با تغییر نور محیط تغییر می‌دهند. وقتی نور به سنسور فتوسل می‌تابد، مقاومت الکتریکی آن کمتر می‌شود، و وقتی نور کمتر می‌شود، مقاومت الکتریکی افزایش می‌یابد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


سنسور نور فتوسل


سنسور فتوسل (Photocell sensor) یا همچنین به نام سنسور LDR (Light Dependent Resistor) نیز شناخته می‌شود، یک نوع سنسور حسگر نوری است. این سنسورها تغییر مقاومت الکتریکی خود را با تغییر نور محیط تغییر می‌دهند. وقتی نور به سنسور فتوسل می‌تابد، مقاومت الکتریکی آن کمتر می‌شود، و وقتی نور کمتر می‌شود، مقاومت الکتریکی افزایش می‌یابد.سنسورهای فتوسل به عنوان یکی از انواع حسگرهای نوری در انواع مختلف دستگاه‌ها و سیستم‌ها استفاده می‌شوند. سنسورهای فتوسل در سیستم‌های روشنایی خودکار مورد استفاده قرار می‌گیرند. وقتی نور محیط کم می‌شود، این سنسورها به دستگاه‌های روشنایی دستور می‌دهند تا روشنایی را افزایش دهند.سنسورهای فتوسل در سیستم‌های کنترل نورپردازی مورد استفاده قرار می‌گیرند. آنها می‌توانند نور محیط را بر اساس نیاز تنظیم کنند و به تنظیم دقیق نورپردازی کمک کنند.در صنعت هوانوردی و فضایی، سنسورهای فتوسل به منظور مانیتورینگ و کنترل نور در هواپیماها و ماهواره‌ها مورد استفاده قرار می‌گیرند. این سنسورها می‌توانند برای اندازه‌گیری شدت نور در محیط‌های مختلف مورد استفاده قرار گیرند.

 

 


شماتیک پروژه فتوسل


همونطور که می بینید اومده یه مقاومت ۱۰ کیلو اهمی (ثابت) رو با فتوسل سری کرده و از پایه مشترک بینشون به پین آنالوگ آردوینو داده. منطق این کار همون منطق تقسیم ولتاژ هست….

images

 

وقتی مقاومت فتوسل (با تغییر نور ) تغییر می کنه طبق قانون تقسیم ولتاژ ، ولتاژی که روی پایه وسط (مشترک بین مقاومت و فتوسل) می افته هم تغییر می کنه که چون این تغییر به صورت پیوسته هست این پایه وسط رو به پین آنالوگ آردوینو (پین شماره ۰ ) وصل می کنیم.

 


کد آردوینو


در این کد برای خواندن و تبدیل مقدار خروجی از یک سنسور آنالوگ (مانند سنسور فتوسل) و ارسال آن به پورت سریال جهت نمایش مقدار استفاده می‌شود. به طور خلاصه، این کد از یک سنسور آنالوگ خوانده شده و مقدار آن را تبدیل به یک مقدار بین ۰ تا ۱۰۰ می‌کند و سپس این مقدار را از طریق پورت سریال نمایش می‌دهد.

int sensor;
int val;
void setup() {
  pinMode(sensor, INPUT);
  Serial.begin(9600);
}

void loop() {
  sensor = analogRead(A0);
  val = map(sensor, 0, 1023, 0, 100);
  Serial.println(val);
  delay(400);
}

 

معرفی متغییر ها و شروع حلقه ی محدود setup

int sensor;
int val;
void setup() {

 

ورودی قرار دادن متغییر sensor ، مشخص کردن رنج کاری سریال مانیتور برای تبادل اطلاعات و پایان حلقه ی setup

  pinMode(sensor, INPUT);
  Serial.begin(9600);
}

 

شروع حلقه ی نامحدود loop ، و خواندن مقدار ولتاژ اعمال شده روی پین A0 آردوینو (arduino) و ریختن آن درون متغییر sensor

void loop() {
  sensor = analogRead(A0);

 

تناسب بندی بین مقادیر سنسور بین ۰ تا ۱۰۰ ، نمایش آن روی سریال مانیتور و پایان حلقه ی loop

val = map(sensor, 0, 1023, 0, 100);
  Serial.println(val);
  delay(400);
}

 

همونطور که می بینید مقدار دیفالت سنسور روی سریال مانیتور نمایش داده میشه. بعد دستتون رو روی سنسور بزارین… روی فتوسل (روی قسمت بالایی) و داده نشون داده شده از مقدار قبلی کمتر میشه کرد. حالا دستتون رو بردارین. داده افزایش پیدا میکنه . جایی که شما دارید تست می کنید می تونه اعداد تو رنج های کاملا متفاوتی بده بر حسب نور محیطی تون.

 


وسایل مورد نیاز


 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

حسین فهیمی

تبادل نظر و رفع عیب با ثبت دیدگاه

۵ دیدگاه

  • سلام، امکان اجرای کد برای مقدار خاصی از نور وجود داره؟ یعنی سنسور مقدار روشنایی رو بهمون میده؟
    میخوام وقتی نور از یه مقداری بیشتر شد(صبح شد) یک موتور شروع به کار کردن کنه و پرده اتاق رو کنار بزنه و اگر از مقداری کمتر شد(شب شد) پرده رو ببنده(موتور برعکس کار کنه)

  • سلام،اگه ممکنه بخش اخر که مربوط به val هست رو بیشتر توضیح بدین که دستور map کارش چیه و چرا از اعداد ۰ و ۱۰۲۳ استفاده شده؟

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

  • سلام و خسته نباشید
    امکانش هست جوری برنامه نویسی کنیم که وقتی نور به ی حدی کم شد رله اول فعال بشه و اگه خیلی تاریکتر شد رله دوم فعال بشه؟
    به عنوان مثال برای چراغ اتوماتیک خودرو که اگه بعد از ظهر شد نور کوچیک و اگه شب شد چراغ های اصلی روشن بشه؟؟؟

    • با سلام
      بله دیتای سنسور را از سریال مانیتور بخوانید. این دیتا بین عدد ۰ تا ۱۰۲۴ متغیر است. عدد ۱۰۲۴ بالاترین حد و ۰ پایین تر است. عدد مورد نظر را با قرار گرفتن مانع در مقابل سنسور از سریال مانیتور بخوانید. سپس در کدها توسط تابع شرطی if else شرط نویسی کنید. در صورتیکه عدد خوانده شده مثلا ۵۰۰ بود، رله اول فعال شود و در صورتیکه بیشتر از ۵۰۰ شد، رله غیرفعال باشد.