Arduino Solar Tracker

5 Schritt:Schritt 1: Wie es funktioniert Schritt 2: Ersatzteilliste Schritt 3: Das Set-up Schritt 4: Die Schaltung Schritt 5: Der Kodex

Arduino Solar Tracker

Was tut:
Es sucht nach dem hellsten Lichtquelle wie die Sonne.

Schritt 1: So funktioniert es

Arduino Solar Tracker

Arduino Solar Tracker

Arduino Solar Tracker

Arduino Solar Tracker

Wie funktioniert es:
Ich hatte einen Sensor von 4 LDRs mit Bögen zwischen ihnen

Die withe stips sind die LDRs
Wenn der Stick an der Spitze an der Sonne oder der hellste Punkt aufgerichtet
die vier LDRs erhalten die gleiche Menge an Licht auf sie.

Beispiel1, wenn das Licht an der Spitze gelassen wird:
rechts oben, rechts unten, links unten liegen im Schatten
und linken Oberseite das meiste Licht

Beispiel 2, wenn das Licht auf der Oberseite
links und rechts nach unten sind im Schatten und oben im Licht

Schritt 2: Ersatzteilliste

2 x 4 x lightdepending Widerstände Servos (LDR) 4 x Widerstände 10K 1 x Arduino 2 x Potentiometer 10k (Wert spielt keine Rolle) Schritt 3: Das Set-up

Arduino Solar Tracker

Arduino Solar Tracker

Arduino Solar Tracker

Arduino Solar Tracker

Arduino Solar Tracker

Arduino Solar Tracker

Alle 8 Artikel anzeigen
Nur Heißkleber zusammen !!! Schritt 4: Die Schaltung

Arduino Solar Tracker

Arduino Solar Tracker

Arduino Solar Tracker

Schritt 5: Der Kodex

können Sie den Code unten auf dieser Seite herunterladen

/ * Dieser Code wird von geobruce geschrieben
für weitere Informationen überprüfen Sie meine Website http://xprobe.net
* /
#include <Servo.h> // gehören Servo-Bibliothek

Servo horizontal; // Horizontale Servo
int servoh = 90; // Horizontale Servo stehen

Servo vertikal; // Vertikale Servo
int servov = 90; // Vertikale Servo stehen

// LDR Stiftverbindungen
// Name = analogpin;
int ldrlt = 0; // LDR oben links
int ldrrt = 1; // LDR top rigt
int ldrld = 2; // LDR links unten
int ldrrd = 3; // ldr unten rigt

Leere setup ()
{
Serial.begin (9600);
// Servoanschlüsse
// Name.attacht (Pin);
horizontal.attach (9);
vertical.attach (10);
}

Leere Schleife ()
{
int lt = analogRead (ldrlt); // oben links
int rt = analogRead (ldrrt); // oben rechts
int ld = analogRead (ldrld); // Nach unten links
int rd = analogRead (ldrrd); // Nach unten rigt

int dtime = analogRead (4) / 20; // Lesen Potentiometer
int tol = analogRead (5) / 4;

int avt = (LT + RT) / 2; // Mittelwert top
int AVD = (ld + rd) / 2; // Mittelwert nach unten
int AVL = (lt + ld) / 2; // Mittelwert links
int avr = (RT + rd) / 2; // Mittelwert rechts

int DVERT = avt - avd; // Überprüfen Sie die diffirence der nach oben und unten
int dhoriz = AVL - avr; // überprüfen Sie die diffirence og linken und rigt

if (-1 * tol> DVERT || DVERT> tol) // überprüfen, ob die diffirence im Toleranz anderes ändern vertikalen Winkel
{
if (AVT> AVD)
{
servov = ++ servov;
if (servov> 180)
{
servov = 180;
}
}
else if (AVT <AVD)
{
servov = --servov;
if (servov <0)
{
servov = 0;
}
}
vertical.write (servov);
}

if (-1 * tol> dhoriz || dhoriz> tol) // überprüfen, ob die diffirence im Toleranz anderes ändern horizontalen Winkel
{
if (AVL> avr)
{
servoh = --servoh;
if (servoh <0)
{
servoh = 0;
}
}
else if (AVL <avr)
{
servoh = ++ servoh;
if (servoh> 180)
{
servoh = 180;
}
}
else if (AVL == avr)
{
// gar nichts
}
horizontal.write (servoh);
}
Verzögerung (DTIME);
}