سنسور فتوسل-آموزش جامع آردوینو-{جلسه هجدهم}

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

سنسور فتوسل

قبل از هرچیز مطلب مربوط به سنسور فتوسل رو بخونید تا برای این جلسه آمادگی کامل داشته باشید.

فتوسل چيست؟

راحترین راه برای اندازه گیری مقاومت سنسور فتوسل(photocell) اینه که یک پين آن به ولتاژ 5 ولت وصل بشه و پين دیگرش هم به یک مقاومت پایین کش وصل بشه. پس از آن پایه وسط بین سنسور فتوسل و مقاومت پایین کش را به یکی از پایه های ورودی آنالوگ آردوینو وصل می کنیم. شکل زیر را مشاهده کنید:

سنسور فتوسل
شماتيك مداري سنسور فتوسل

شماتیک نصب سنسور فتوسل(photocell) روی بردبرد هم در شکل زیر ملاحظه می کنید.

نصب سنسور فتوسل روي بردبرد
اتصال قطعات روي بردبرد

ولتاژی که به ورودی آنالوگ آردوینو (پایه A0)وارد میشود نسبت عکس با مقاومت فتوسل دارد. طبق مداری که بسته شده و قانون تقسیم ولتاژها داریم:

((Vo = Vcc ( R / (R + Photocell

در فرمول بالا منظور از R همون مقاومت 10 کیلو اهم است و Vcc هم ولتاژ 5ولت است و V0 هم ولتاژی است که روی پایه A0 آردوینو میفته. براحتی میتونید با داشتن سه پارامتر مقاومت فتوسل را اندازه گیری کنید. اين كارها رو خود آردوينو براي ما انجام ميده و ميتونيم عدد مربوط به اون رو از پنجره سريال مانيتور بخونيم.

ابتدا كد مربوطه رو بروي آردوينو بريزيد:

int photocellPin = 0;     // اتصال فتوسل و مقاومت 10كيلواهم به ورودي آنالوگ A0
int photocellReading;     //خواندن مقدار ورودي پورت آنالوگ
 
void setup(void) {
  // نرخ تعيين باود ريت براي ارسال داده ها بصورت سريال
  Serial.begin(9600);   
}
 
void loop(void) {
  photocellReading = analogRead(photocellPin);  
 
  Serial.print("Analog reading = ");
  Serial.print(photocellReading);     // نمايش مقدار فتوسل
 
  // We'll have a few threshholds, qualitatively determined
  if (photocellReading < 10) {
    Serial.println(" - Dark");
  } else if (photocellReading < 200) {
    Serial.println(" - Dim");
  } else if (photocellReading < 500) {
    Serial.println(" - Light");
  } else if (photocellReading < 800) {
    Serial.println(" - Bright");
  } else {
    Serial.println(" - Very bright");
  }
  delay(1000);
}

در ابتداي كد كه توضيحات مربوط به هرخط نوشته شده است. در قسمت void loop تعيين مي كنيم كه چنانچه مقدار خوانده شده از ورودي آنالوگ كمتر از 10 باشد كلمه Dark را چاپ كند و در صورتي كه كمتر از 200 باشد كلمه Dim راچاپ كند و در صورتي كه كمتر از 500 باشد كلمه Light را چاپ كند و در صورتي كه كمتر از 800 باشد كلمه Bright را چاپ كند در غير اينصورت كلمه Very bright را چاپ كند.

در اخر هم يك تاخير 1 ثانيه اي داريم كه باعث مي شود ورودي ها را بخوبي مشاهده كنيم.

پس از ارسال كد بروي آردوينو و اجراي آن پنجره سريال مانيتور را باز مي كنيم.
نور سنسور فتوسل
كم و زياد شدن نور سنسور فتوسل در پنجره سريال مانيتور

 

همانگونه كه مشاهده مي كنيد با استفاده از گذاشتن دست روي سنسور نور آن را كم و زياد مي كنيم.

برای دریافت آخرین مطالب سایت  و همچنین مطالب منحصر به فرد دیگر که در سایت منتشر نمی شوند میتوانید در کانال تلگرام ما عضو شوید و یا در اینستاگرام ما را فالوو کنید:

در پناه حق باشيد

قاسم قاسمي

 

شاید دوست داشته باشید مطالب زیر را هم بخوانید :

6 نظر

  • حسام الدین حبیبی

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

    • حامد قاسمی

      با سلام خدمت شما دوست گرامی.
      اگه سوالی باشه ما در خدمتتون هستیم.
      موفق باشید.

  • مهرزاد علایی

    سلام
    آیاکدی هست که بشه باهاش فهمید انجام دستورات برنامه چقدر طول میکشه ؟
    مثلا بتوان فهمید از ابتا تا انتهای حلقه void loop چقدر زمان میبره تا میکرو دستورات مختلف را اجرا کنه و دوباره بره اول کدها.
    با تشکر

    • حامد قاسمی

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

      unsigned int time = 0;
      time = micros();

      byte test = 10;
      if(test < 20) test = 20; time = micros() - time; Serial.println(time, DEC); delay(1000);

      در این کد همونطور هم که مشخص ابتدا متغیر time تعریف شده و مقدارش برابر micros قرار گرفته شده سپس یه نمونه کد قرار داده شده و دوباره مقدار micros رو خونده و از مقدار اولیه کم کرده. طبیعتا این عدد زمان اجرای برنامه هست.
      اگه باز نکته نامفهومی وجود دارد بفرمایید تا جواب داده شود.
      موفق باشید.

      • مهرزاد علایی

        کاملا واضح وعالی ممنون از راهنماییتون.

        • حامد قاسمی

          خواهش میکنم.
          موفق باشید.

  • نوشتن نظر

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    Optionally add an image (JPEG only)