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

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

سلام. پروژه پنل خورشیدی دنبال کننده خورشید گردان و چرخان با آردوینو را آماده کردیم.

طراحی صفحه خورشیدی گردان با آردوینو

در این پروژه آردوینو قصد داریم یک پنل خورشیدی دنبال کننده خورشید را با استفاده از Arduino و سروو موتور بسازیم. برای حس کردن نور از دو مقاومت نوری LDR استفاده میکنیم تا بتوانیم به صورت خودکار پنل خورشیدی را به سمت آفتاب حرکت دهیم. استفاده از این پروژه کمک میکند همیشه پنل از حداکثر نور خورشید برخوردار شود تا بتواند انرژی بیشتری جذب کند.

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

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

ساخت نمونه اولیه پروژه پنل خورشیدی چرخان

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

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

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

طراحی صفحه خورشیدی گردان با Arduino

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

ساخت نمونه اولیه پروژه پنل خورشیدی چرخان

مرحله 3: حالا پیچ را به سر سروو موتور متصل کنید مانند تصویر زیر :

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

مرحله 4: حالا سروو را روی تکه دیگری از مقوا قرار دهید. اندازه مقوا باید به اندازه کافی بزرگ باشد تا بتوانید یک Arduino Uno ، یک برد بورد و یک باتری را روی آن قرار دهید.

آموزش ساخت پنل خوردشیدی گردان

مرحله 5: LDR ها را در دو طرف پنل خورشیدی با کمک چسب بچسبانید. اطمینان حاصل کنید که سیمها را به پایه های LDR لحیم کرده اید.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

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

تصویر نهایی پنل خورشیدی دنبال کننده نور آفتاب

شماتیک پنل خورشیدی دنبال کننده خورشید با آردوینو

در این پروژه ردیاب خورشیدی آردوینو ، آردوینو از باتری 9 ولت تغذیه می کند و تمام قسمت های دیگر از برد Arduino تغذیه می شوند. ولتاژ ورودی پیشنهادی Arduino از 7 تا 12 ولت است اما می توانید آن را در محدوده 6 تا 20 ولت هم بدهید اما سعی کنید آن را در ولتاژ ورودی پیشنهادی نیرو دهید. سیم مثبت باتری را به Vin آردوینو و سیم منفی باتری را به GND آردوینو وصل کنید. در تصویر زیر شماتیک کامل این پروژه را مشاهده میکنید :

شماتیک پروژه پنل خورشیدی گردان

سروو را به Arduino وصل کنید. سیم مثبت سروو را به 5 ولت آردوینو و سیم GND به GND آردوینو وصل کرده و سپس سیم سیگنال سروو را به پین ​​دیجیتال 9 آردوینو وصل کنید. سروو در حرکت پنل خورشیدی کمک خواهد کرد.

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

  1. سروو موتور sg90
  2. صفحه خورشیدی
  3. برد آردوینو Uno
  4. مقاومت نوری LDR – دو عدد
  5. مقاومت 10 کیلو اهم – دو عدد
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

برنامه نویسی پنل خورشیدی چرخان با آردوینو

کد پروژه صفحه خورشیدی دنبال کننده آفتاب بسیار ساده است. کد کامل در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

اول از همه ، کتابخانه مربوط به سرو موتور را درج خواهیم کرد. سپس متغیر را برای موقعیت اولیه موتور سروو تنظیم می کنیم. پس از آن ، متغیرهایی را برای خواندن اطلاعات سنسور های LDR و Servo تعریف می کنیم.

#include <Servo.h>      //فراخوانی کتابخانه سروو موتور
Servo sg90;                   //پیکربندی متغیر سروو موتور
int initial_position = 90;    //تنظیم موقعیت اولیه سروو موتور
int LDR1 = A0;                //پین ال دی آر اول
int LDR2 = A1;                //پین ال دی آر دوم
int error = 5;                //پیکربندی متغیر خطا
int servopin=9;               // پین سروو موتور

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

void setup() 
{ 
  sg90.attach(servopin);  // تنظیم سروو موتور روی پین 9
  pinMode(LDR1, INPUT);   //تنظیم پین مقاومت نوری به عنوان ورودی
  pinMode(LDR2, INPUT);   //تنظیم پین مقاومت نوری به عنوان ورودی
  sg90.write(initial_position);   //قرار دادن سروو در موقعیت 90 درجه
  delay(2000);                   // تاخیر 2 ثانیه ای
}

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

  int R1 = analogRead(LDR1); // خواندن مقدار مقاومت  نوری اول
  int R2 = analogRead(LDR2); // خواندن مقدار مقاومت نوری دوم
  int diff1= abs(R1 - R2);   // محاسبه اختلاف بین دو LDR
  int diff2= abs(R2 - R1);
  
  if((diff1 <= error) || (diff2 <= error)) {
    //اگر بین دو مقدار تفاوتی نباشد
  } else {    
    if(R1 > R2) // اگر مقدار ال دی آر اول بیشتر از دوم باشد
    {
      initial_position = --initial_position;  //چرخش سروو موتور به موقعیت 0 درجه
    }
    if(R1 < R2) // اگر مقدار ال دی آر دوم بیشتر از اول باشد
    {
      initial_position = ++initial_position; //چرخش سروو موتور به موقعیت 0 درجه
    }
  }

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

موارد موجود در فایل : سورس کد ، شماتیک پروژه

4.7 (12 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

32 نظر

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

    1. سلام عزیز
      فایل را با نرم افزار winrar باز کنید.

  2. سلام من تعداد300عدد ردیاب خورشیدی همراه با سنسور و موتور لازم دارم

    1. سلام عزیز
      خوشحالیم که آیرنکس براتون مفید بوده

    1. سلام عزیز
      بله میتونید انجام بدید

  3. سلام استاد رحیمی ممنون بابت تمام آموزش های خوبتون من این کد نوشتم مدار کار می‌کنه اما زمانی که نور تلفن نمی گذارم سروو به یک سمت حرکت می کند من می خواهم زمانی که نور به فوتوسل نمی خورد حرکتی نکد

    1. سلام عزیز
      یک شرط تعیین کنید در صورتی که مقدار ولتاژ (خروجی adc) کمتر از حد آستانه بود یعنی نور در محیط نبود سروو ها ثابت شوند.

    1. سلام عزیز
      برد بورد به آردوینو متصل نمیشه ارتباط بین آردوینو و برد بورد از طریق سیم جامپر ها برقرار میشود. برای یادگیری بیشتر دوره الکترونیک پایه و آردوینو را مشاهده کنید.

  4. اردویینو uno دو مدل دارهr3 و ch340.
    برای این پروژه کدوم رو باید استفاده کرد؟

    1. سلام عزیز
      تفاوتی ندارد از هر مدل برد Uno میتونید استفاده کنید.

  5. امکان دارد برای پنلهای سنگینتر از موتورهای قویتر با همین مدار استفاده کنیم ؟

    1. سلام عزیز، در صورتی که موتور های قوی تر دارای ولتاژ بالاتری باشند کمی مدار در قسمت اتصال به موتور تغییر میکنه.

  6. سلام .من هنگام یک برنامه داخل برد آردینو uno R3 آپلود کردم ولی الان میخوام برنامه دیگه ای رو آپلود کنم خطایی ظاهر میشه و از درستی کد برنامه اطمینان دارم
    خطای ظاهر شده:error compiling Arduino board
    چگونه این خطا رفع میشه

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

  7. باسلام مجدد
    بنده کدی رو که در سایت قراردادین رو امتحان کردم و مدارم کار میکنه .منظورم این بود اگه بخوایم ب صورت مجزا هر یک از LDR ها دستور داده شود مثلا اگرLDR1نور را حس کند سرو موتور ۱را در حالت ۴۵ درجه و سرو موتور ۲ را در حالت ۹۰ درجه قرار دهد برنامه ب چ صورت است ..ممنون میشم اگه بخشی از برنامه رو راهنمایی کنید

    1. سلام عزیز، کد ساده هست کافیه از شرط ها و توابع مربوط به سروو موتور استفاده کنید. در صورت نیاز میتونید دوره آموزش آردوینو رو مشاهده کنید تا مشکلتون بر طرف بشه

  8. سلام
    نمیشه ب عنوان مثال بخشی از برنامه رو برای راهنمایی داخل سایت بزارین 🙏

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

  9. سلام جناب خسته نباشید .امکان داره هر LDRرو برنامه بدیم مثلا اگرLDRشمار ۱ نور بهش اثابت کنه سرو موتور ۱ در حالت ۹۰ درجه و سرو متور۲ در حالت ۴۵ درجه قرار گیرد .آیا این کار عملی میشه .ممنون میشم راهنمایی کنید🙏

    1. سلام عزیز، بله به راحتی میتونید این کار رو انجام بدید

  10. پس اگه امکان داره برنامه دو سرو متور و۴LDRرو داخل سایت بزارین ممنون.باتشکر از لطفتون

  11. سلام ممنونم از مطالب خوبتون .آیا میشه از ۴تا LDR استفاده کردتا ب صورت دو محوره باشه ..اگه میشه ی توضیح در موردش بدین .ممنون

    1. سلام جناب، بله میشه و بسیار ساده هست فقط باید یک سروو موتور و دو LDR دیگه اضافه کنید و مقداری کد اضافه کنید.

  12. مقدارمقاومت فتوسل تو نور شدید از۸۰۰بالاتر نمیره لطفا بفرمایید فتوسلها یا مقاومت ده کیلو رو با چند تعویض کنم

  13. سلام من کدو آپلود کردم اما صفحه نمیچرخه،سیمها درستند مقاومت نوری هم درسته اما کار نمیکنه.سیمهای وردیA0وA1رو که جدا میکنم موتور آهسته به طرفین حرکت میکنه.مشکل از کجاست بنظرتون؟

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

  14. سلام
    من فایل پروژه رو دانلود کردم ولی داخل فایل دانلودی یه پوشه زیپ بیشتر چیزی نبود که نه با برنامه آردینو باز میشه نه با برنامه زیپ چیکار باید کنم؟

    1. سلام جناب. بایستی با نرم افزار WinRAR فایل رو باز کنید.

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

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