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

ردیاب نور پنل خورشیدی با استفاده از آردوینو با LDR و سروو موتور

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

به نام خدا

 ردیاب نور پنل خورشیدی با استفاده از آردوینو با LDR و سروو موتور

 

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

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

 

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

۱ – سروو موتور (sg90)

۲ – صفحه ی خورشیدی

۳ – برد آردوینو UNO

۴ – دو عدد LDR (مقاومت حساس به نور)

۵ – دو عدد مقاومت ۱۰k اهم

۶ – باتری (۶تا ۱۲ ولت)

 

نحوه ی کار :

 

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

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

نحوه ی ساخت نمونه ی اولیه:

 

برای ساخت نمونه ی اولیه باید مراحل زیر را طی کنید .

 

مرحله ۱ : یک تکه مقوا را آماده کنید و انتهای یکی از دو طرف آن را سوراخ کنید. ما بعدا با استفاده از پیچ، سروو موتور را با آن ثابت میکنیم .

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

مرحله ۲ : دو تکه کوچک از مقوا را به شکل V  با کمک چسب حرارتی روی پنل خورشیدی بچسبانید.

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

مرحله ۳ : حال مقوایی را که یک طرف آن را سوراخ کرده اید ،  را به قسمت پایین V شکل وصل کنید.

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

مرحله ۴ : حالا سروو موتور را با استفاده از پیچ به تکه مقوا که در مرحله ۱ سوراخ کرده اید وصل کنید.

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

مرحله ۵ : سپس سروو موتور را روی تکه ای از مقوا قرار دهید. تکه مقوا باید به اندازی ای بزرگ باشد که بتوان برد آردوینو، برد بورد و باتری را روی آن بچسبانید. مانند تصویر زیر.

بیشتر بخوانید...  پخش کننده فایل های صوتی(mp3 player) با استفاده از آردوینو

 

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

مرحله ۶ : با استفاده از چسب، LDR ها را در دو طرف پنل خورشیدی وصل کنید. مطمئن شوید که سیم ها را به پایه های LDR  لحیم کرده اید. شما باید بعدا مقاومت ها را به آن وصل کنید.

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

مرحله ۷: حال آردوینو، باتری و برد بورد را روی مقوا نصب کنید و اتصالات را همانطور که در بخش مدار و توضیحات که در زیر آمده است، وصل کنید. نمونه اولیه در تصویر زیر آمده است.

 

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

مدار و توضیحات:

 

پنل خورشیدی ردیاب نور آردونو با استفاده از LDR و سروو موتور

 

در این پروژه انرژی الکتریکی آردوینو را باتری و انرژی الکتریکی قسمت های دیگر مدار را آردوینو تامین می کند. ولتاژ راه اندازی آردوینو بین ۷ تا ۱۲ ولت توصیه شده است، اما شما میتوانید با ولتاژ بین ۶ تا ۲۰ ولت نیز آردوینو را راه اندازی کنید. سعی کنید در ولتاژی که برای آردوینو توصیه شده است کار کنید.

سر مثبت باتری را به پین Vin آردوینو و سر منفی آن را به زمین آردوینو وصل کنید.

سروو موتور را به آردوینو وصل کنید. سیم مثبت سروو موتور را به ۵V وصل کنید و سیم منفی را به زمین آردوینو وصل کنید، سپس سیم سیگنال سروو موتور را به پین دیجیتال شماره ی ۹ آردوینو وصل کنید.

حالا LDR را به آردوینو وصل کنید. از یکی از پایه های LDR را طبق تصویر به مقاومت ۱۰K سپس به پین A0 وصل کنید. به همین شکل LDR دیگر را وصل کنید اما به جای پین A0 به پین A1 آردوینو وصل کنید. انتهای دیگر دو LDR را به پین ۵V و سر دیگر مقاومت را به زمین آردوینو وصل کنید.

 

توضیحات کد:

 

اول از همه ما کتابخانه ای برای سروو موتور لازم داریم. سپس متغیری را برای موقعیت سروو موتور مشخص میکنیم، بعد متغیر ها را برای خواندن از LDR  ها و راه اندازی سروو موتور ها آماده میکنیم.

 

#include <Servo.h>      //including the library of servo motor 
Servo sg90;                   //initializing a variable for servo named sg90
int initial_position = 90;    //Declaring the initial position at 90
int LDR1 = A0;                //Pin at which LDR is connected
int LDR2 = A1;                //Pin at which LDR is connected
int error = 5;                //initializing variable for error
int servopin=9;

 

دستور sg90.atach (servopin) سروو موتور را از پین شماره ۹ آردوینو میخواند. سپس ما پین های LDR را به عنوان پین ورودی معرفی میکنیم تا بتوانیم مقادیر حسگر ها را بخوانیم و پنل خورشیدی را با توجه به آن ها حرکت دهیم . سپس سروو موتور را در ۹۰ درجه قرار میدهیم که موقعیت اولیه ی ما است .

 

void setup() 
{ 
  sg90.attach(servopin);  // attaches the servo on pin 9
  pinMode(LDR1, INPUT);   //Making the LDR pin as input
  pinMode(LDR2, INPUT);
  sg90.write(initial_position);   //Move servo at 90 degree
  delay(2000);                   // giving a delay of 2 seconds
}

 

بیشتر بخوانید...  آشکار سازی نشت گاز با استفاده از آردوینو

حال مقادیر دو LDR را در R1 و R2 قرار میدهیم، اختلاف مقدار دو LDR را حساب میکنیم.

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

 

 int R1 = analogRead(LDR1); // reading value from LDR 1
  int R2 = analogRead(LDR2); // reading value from LDR 2
  int diff1= abs(R1 - R2);   // Calculating the difference between the LDR's
  int diff2= abs(R2 - R1);
  
  if((diff1 <= error) || (diff2 <= error)) {
    //if the difference is under the error then do nothing
  } else {    
    if(R1 > R2)
    {
      initial_position = --initial_position;  //Move the servo towards 0 degree
    }
    if(R1 < R2) 
    {
      initial_position = ++initial_position; //Move the servo towards 180 degree
    }
  }

 

حال شما می دانید که چطور یک پنل خورشیدی را بسازید، که به صورت خود کار همچون آفتابگردان نور را دنبال کند.

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

دانلود کد پروژه ی ردیاب نور پنل خورشیدی :

دانلود فایل

کد:

#include <Servo.h>      //including the library of servo motor 
Servo sg90;             //initializing a variable for servo named sg90
int initial_position = 90;   //Declaring the initial position at 90
int LDR1 = A0;          //Pin at which LDR is connected
int LDR2 = A1;          //Pin at which LDR is connected
int error = 5;          //initializing variable for error
int servopin=9;
void setup() 
{ 
  sg90.attach(servopin);  // attaches the servo on pin 9
  pinMode(LDR1, INPUT);   //Making the LDR pin as input
  pinMode(LDR2, INPUT);
  sg90.write(initial_position);   //Move servo at 90 degree
  delay(2000);            // giving a delay of 2 seconds
}  
 
void loop() 
{ 
  int R1 = analogRead(LDR1); // reading value from LDR 1
  int R2 = analogRead(LDR2); // reading value from LDR 2
  int diff1= abs(R1 - R2);   // Calculating the difference between the LDR's
  int diff2= abs(R2 - R1);
  
  if((diff1 <= error) || (diff2 <= error)) {
    //if the difference is under the error then do nothing
  } else {    
    if(R1 > R2)
    {
      initial_position = --initial_position;  //Move the servo towards 0 degree
    }
    if(R1 < R2) 
    {
      initial_position = ++initial_position; //Move the servo towards 180 degree
    }
  }
  sg90.write(initial_position); // write the position to servo
  delay(100);
}

 

 

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

*
*

    امیرحسین مهمان خرداد 14, 1400 پاسخ

    سلام وقتتون بخیر......آموزش ساخت همین پروژه رو با کنترلر pid به جای سرووموتور ندارین؟؟

      Admin مدیر کل شهریور 21, 1400 پاسخ

      سلام
      نه فعلا