مشروع هندسة نظام تعقب الطاقة الشمسية ثنائي المحور

 تظهر الطاقة الشمسية كمصدر رئيسي للطاقة. الحاجة للساعة هي موارد الطاقة المتجددة بتكاليف تشغيل رخيصة. مع الأنظمة الحالية لحصاد الطاقة الشمسية ، لدينا إنتاج مرتفع فقط في أوقات محددة في الظهيرة. يقترح هذا المشروع نظام تعقب شمسي ثنائي المحور يعمل على زيادة الإنتاجية بهامش كبير.

 


هذه المرة قدمنا لك مشروعًا رائعًا للغاية. والذي يعرف بنظام تعقب الطاقة الشمسية ثنائي المحور. إنه رائع ويمكنك إجراء ذلك بسهولة باستخدام هذه المقالة. ماذا تحتاج؟ تحتاج إلى قراءة هذه المقالة بعناية. إذا كنت طالب هندسة ، فيجب أن يكون لديك بعض المعرفة الأساسية بالإلكترونيات وأجهزة التحكم. إذا كنت ترغب في تعلم الإلكترونيات الأساسية والميكروكونترولر مثل Arduino و avr و pic ، فنحن نجعل الدورة التدريبية في قسم الفئات دروس Arduino.

عندما يقع ضوء الشمس على  لوحة تعقب الطاقة الشمسية. يبدأ في حساب ومقارنة الاتجاه الذي يأتي منه ضوء الشمس الأقصى. بعد مقارنة اللوحة أعلاه ، يبدأ النظام في التحرك نحو أقصى كثافة بحيث يكون للوحة الشمسية أقصى كثافة وتنتج أقصى طاقة.

هناك نحن نستخدم LDR والذي يُعرف باسم المقاوم المعتمد على LIght عندما تسقط أشعة الشمس على LDR تنخفض قيمة المقاوم لـ LDR. هذا يعني أنه يتحكم فقط في المقاومة باستخدام الضوء. لذلك ، نحن نستخدم هذه الطريقة. الذي يقلل LDR من المقاومة القصوى ، سيتحرك نظام التتبع الشمسي ثنائي المحور في هذا الاتجاه. هذا هو مبدأ هذا المشروع. هناك نستخدم محركين مؤازرين يساعدان في تحريك اللوحة في جميع الاتجاهات.

في هذا المشروع سنحتاج الى العناصر التالية:

 

مخطط المشروع:


كود اردوينو: متعقب شمسي ثنائي المحور 


#include <Servo.h>
Servo horizontal; // horizontal servo
int servoh = 180;
int servohLimitHigh = 175;
int servohLimitLow = 5;
// 65 degrees MAX

Servo vertical; // vertical servo
int servov = 45;
int servovLimitHigh = 100;
int servovLimitLow = 1;

// LDR pin connections
// name = analogpin;
int ldrlt = A0; //LDR top left – BOTTOM LEFT <— BDG
int ldrrt = A3; //LDR top rigt – BOTTOM RIGHT
int ldrld = A1; //LDR down left – TOP LEFT
int ldrrd = A2; //ldr down rigt – TOP RIGHT

void setup(){
horizontal.attach(9);
vertical.attach(10);
horizontal.write(180);
vertical.write(45);
delay(2500);
}
void loop() {
int lt = analogRead(ldrlt); // top left
int rt = analogRead(ldrrt); // top right
int ld = analogRead(ldrld); // down left
int rd = analogRead(ldrrd); // down right
int dtime = 10; int tol = 90; // dtime=diffirence time, tol=toleransi
int avt = (lt + rt) / 2; // average value top
int avd = (ld + rd) / 2; // average value down
int avl = (lt + ld) / 2; // average value left
int avr = (rt + rd) / 2; // average value right
int dvert = avt – avd; // check the diffirence of up and down
int dhoriz = avl – avr;// check the diffirence og left and rigt

if (-1*tol > dvert || dvert > tol)
{
if (avt > avd)
{
servov = ++servov;
if (servov > servovLimitHigh)
{servov = servovLimitHigh;}
}
else if (avt < avd)
{servov= –servov;
if (servov < servovLimitLow)
{ servov = servovLimitLow;}
}
vertical.write(servov);
}
if (-1*tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle
{
if (avl > avr)
{
servoh = –servoh;
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
}
else if (avl < avr)
{
servoh = ++servoh;
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
}
else if (avl = avr)
{
delay(5000);
}
horizontal.write(servoh);
}

delay(dtime);

}

 

 

إرسال تعليق

أحدث أقدم