شماتیک مداری:
سیستم دنبال کننده خورشید مدار سادهای دارد که در زیر نمایش داده شده است ولی باید ساخت این مدار با دقت بیشتر انجام شود.
چهار فتوسل مدنظر برای سیستم به همراه چهار مقاومت 100 کیلو اهم به صورت مد تقسیم ولتاژ طراحی میشوند و خروجی آنها به چهار پایه آنالوگ برد آردوینو وصل میشود. ورودی پالس PWM هر یک از سروو موتورهای سیستم هم توسط پایههای 9 و 10 آردوینو تأمین میشوند.
قطعات موردنیاز:
فتوسل 1K 5mm |
4 عدد | |
مقاومت 100 کیلو اهم |
4 عدد | |
سیم لحیم قلع-سرب 100 گرمی |
1 عدد | |
پنل خورشیدی |
1 عدد | |
ورق فلزی |
1 عدد | |
سیم مناسب |
0.5 متر |
عملکرد سیستم:
سنسورهای فتوسل به عنوان سنسور نور در این سیستم به کار رفته است. دو موتور سروو نیز به سازهی نگهدارنده پنل خورشیدی ثابت شدهاند. سنسورهای فتوسل مقدار نوری که بر روی آنها تابش میکند را حس میکنند. این چهار سنسور فتوسل در بالا, پایین, چپ و راست پنل خورشیدی قرارگرفته میشود.
برای حرکت چپ-راست, مقدار آنالوگ دو فتوسل بالا و پایین پنل خورشیدی با یکدیگر مقایسه میشوند و هرکدام که مقدار نور بیشتری جذب کند, موتور محور عمودی به آن سمت حرکت میکند. برای حرکت چرخشی هم, مقادیر آنالوگ فتوسلهای سمت چپ و راست پنل خورشیدی با یکدیگر مقایسه شده و هر سمتی که نور بیشتری را جذب کند موتور پایین سیستم که به زمین متصل شده به آن سمت حرکت خواهد کرد.
نصب سازه:
گام اول:
یک مقوا برداشته و مطابق شکل در وسط آن یک سوراخ بزرگ ایجاد کرده و پنل خورشیدی را بر روی آن چسبانده و دو سیم آنرا از سوراخ ایجادشده بر روی مقوا خارج کنید. سپس, در هر گوشه از پنل هم یک سوراخ به اندازهای که هر فتوسل در آن ثابت شود ایجاد کنید.
گام دوم:
هر یک از فتوسلها در جای خودش قرار داده با چسب کاملاً محکم میچسبانیم. سپس, مطابق شکل ورق فلزی را خم کرده و در پشت مقوا قرار داده و سیمهای پنل خورشیدی را برای راحتی در چرخش سیستم از داخل سوراخهای ورق فلزی عبور میدهیم.
گام سوم:
طبق شکل زیر, یک پایه از هر چهار فتوسل را به مقاومت 100 کیلو اهم لحیم کرده و درنهایت هر چهار پایه از فتوسلها را با یک سیم به هم متصل میکنیم. در این لحیم کاری میتوان از شماتیک مداری سیستم استفاده کنیم تا مد تقسیم ولتاژ را ایجاد کنیم.
گام چهارم:
حال یک سیم چهارتایی را بر روی ورق فلزی در محل مناسب گذاشته و هر سیم آنرا در هر نقطه بین پایه سنسور فتوسل و مقاومت 100 کیلو اهم متصل به آن لحیم کنید. این سیم برای اتصال خروجی هر یک از فتوسلها به برد آردوینو استفاده میشود.
از یک سیم دوتایی دیگر هم برای تأمین Vcc و GND فتوسلها استفاده میشود. یک سیم را به انتهای مقاومتها و سیم دیگر را به پایههای دیگر فتوسلها که با سیم به یکدیگر لحیم شده است متصل کنید.
گام پنجم:
حال برای ایجاد حرکت چرخشی در سیستم, یک سروو موتور را مطابق شکل به ورق فلزی با پیچ وصل کنید. این سروو موتور به زمین ثابت خواهد شد.
گام ششم:
مطابق شکل زیر, سروو موتور بعدی را به ورق خم شده فلزی که بر روی مقوا قرار دارد بچسبانید.
گام هفتم:
درنهایت این سروو موتور گام ششم را به سازه سروو موتور دیگر چسبانده و کل سیستم دنبال کننده خورشید ساخته میشود.
برنامه نوشته شده برای برنامهریزی بر روی مدار آردوینو به صورت زیر است:
#include <Servo.h>
//defining Servos
Servo servohori;
int servoh = 0;
int servohLimitHigh = 160;
int servohLimitLow = 20;
Servo servoverti;
int servov = 0;
int servovLimitHigh = 160;
int servovLimitLow = 20;
//Assigning LDRs
int ldrtopl = 2; //top left LDR green
int ldrtopr = 1; //top right LDR yellow
int ldrbotl = 3; // bottom left LDR blue
int ldrbotr = 0; // bottom right LDR orange
void setup ()
{
servohori.attach(10);
servohori.write(0);
servoverti.attach(9);
servoverti.write(0);
delay(500);
}
void loop()
{
servoh = servohori.read();
servov = servoverti.read();
//capturing analog values of each LDR
int topl = analogRead(ldrtopl);
int topr = analogRead(ldrtopr);
int botl = analogRead(ldrbotl);
int botr = analogRead(ldrbotr);
// calculating average
int avgtop = (topl + topr) / 2; //average of top LDRs
int avgbot = (botl + botr) / 2; //average of bottom LDRs
int avgleft = (topl + botl) / 2; //average of left LDRs
int avgright = (topr + botr) / 2; //average of right LDRs
if (avgtop < avgbot)
{
servoverti.write(servov +1);
if (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
delay(10);
}
else if (avgbot < avgtop)
{
servoverti.write(servov -1);
if (servov < servovLimitLow)
{
servov = servovLimitLow;
}
delay(10);
}
else
{
servoverti.write(servov);
}
if (avgleft > avgright)
{
servohori.write(servoh +1);
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
delay(10);
}
else if (avgright > avgleft)
{
servohori.write(servoh -1);
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
delay(10);
}
else
{
servohori.write(servoh);
}
delay(50);
}
آموزش راهاندازی سروو موتور به طور کامل در "آموزش آردوینو: درس چهاردهم (سروو موتور)" آورده شده است. در این برنامه نوشته شده برای راهاندازی سیستم دنبال کننده خورشید, ابتدا کتابخانه سروو موتور فراخوانی شده است. سپس, دو متغیر servohori و servoverti به عنوان دو موتور سرووی افقی و عمودی برای ایجاد دو چرخش در سیستم تعریف شده و مقادیر بیشینه و کمینه برای چرخش آنها تعریف شدهاند. در ادامه, پایههای هر فتوسل را برای آردوینو معرفی کرده ایم.
در بخش setup لازم است که متغیر servo را به پین مربوط به کنترل سروو موتور مرتبط کنیم.
servo.attach(servoPin);
و مقدار اولیه هر موتور را نیز در زاویه صفر قرار میدهیم.
در ادامه, برنامه به صورتی نوشته شده است تا برای حرکت چپ-راست, مقدار آنالوگ دو فتوسل بالا و پایین پنل خورشیدی با یکدیگر مقایسه میشوند و هرکدام که مقدار نور بیشتری جذب کند, موتور محور عمودی به آن سمت حرکت میکند. برای حرکت چرخشی هم, مقادیر آنالوگ فتوسلهای سمت چپ و راست پنل خورشیدی با یکدیگر مقایسه شده و هر سمتی که نور بیشتری را جذب کند موتور پایین سیستم که به زمین متصل شده به آن سمت حرکت خواهد کرد.
نظرات، پيشنهادات و انتقادات خود را براي بهتر شدن محتواي مطالب با ما در ميان بگذاريد...
ترجمه شده توسط تيم الکترونيک صنعت بازار | منبع: سايت electronicshub.org
نظرات (72)