Dual-As Zonnetracker met Arduino UNO – DIY Zonnepaneel Afstelling
Onderdelen en Benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| SG90 Micro-servomotor | 2 |
| LDR (Lichtgevoelige Weerstand), 5 MΩ | 4 |
| Weerstand 330 Ω | 4 |
| Draaipotentiometer | 1 |
| Drukknop (pushbutton) | 2 |
| Mini Zonnepaneel | 1 |
Benodigde Tools en Software
- Arduino IDE
- Parallax PLX-DAQ (voor Excel datalogging)
Over dit Project
Dit project presenteert een open hardware/software testbank voor een tweeaassige zonnetracker. De prototype wordt bestuurd door een Arduino Uno en kan automatisch de zon volgen met behulp van vier LDR-sensoren en twee servomotoren, of handmatig via een potentiometer. Het systeem biedt virtuele instrumentatie via Excel voor realtime datavisualisatie van spanning, stroom, vermogen en werkende modus.
Mechanisch Ontwerp
De CAD 3D-model (ontworpen in CATIA) bestaat uit het PV-paneel, links-rechts en omhoog-omlaag servomotoren, en vier LDR-sensoren in de hoeken van het paneel. De LDR's zitten in donkere buizen met een klein gat bovenaan om de zonlichtintensiteit te detecteren en de robuustheid te verhogen. De tracker heeft twee vrijheidsgraden: azimut (oost-west) en elevatie (zuid-noord).
Hardware Systeem
Automatische Modus: De microcontroller leest de analoge waarden van de LDR's (pinnen A0-A3) en stuurt twee servomotoren via PWM-signalen (pinnen 5 en 6) om de zon te volgen.
Handmatige Modus: Een potentiometer (A4) stuurt de servomotoren. Drukknop op pin 11 schakelt tussen de twee assen. Drukknop op pin 12 schakelt tussen automatische en handmatige modus.
Stroommeting: PV-spanning wordt gemeten via A5, stroom en vermogen worden berekend en via USB naar Excel gestuurd.
LDR Schakeling: Spanningdeler met 330 Ω weerstanden. De variatie in lichtintensiteit is evenredig met de uitgangsspanning van de deler.
Servomotoren: MG996R voor verticale as (links-rechts), SG90 voor horizontale as (omhoog-omlaag). Bestuurd via 3-draads kabel (voeding + PWM).
Ingesloten Software Ontwerp
De software implementeert vier hoofdeisen:
- Twee modi (automatisch/handmatig) wisselbaar via drukknop (pin 12)
- In handmatige modus: potentiometer stuurt één van de twee servomotoren (keuze via pin 11)
- In automatische modus: algoritme vergelijkt gemiddelde LDR-waarden (links/rechts, boven/onder) en stuurt servomotoren tot verschil binnen drempelwaarde [−10, 10] valt. Bij nacht (gemiddelde waarde < 8) keert tracker terug naar opgangspositie.
- PV data (spanning, stroom, vermogen, modus) wordt via PLX-DAQ realtime naar Excel gestuurd
Virtuele Instrumentatie met PLX-DAQ
De PLX-DAQ Excel Macro stelt realtime dataverzameling van Arduino naar Excel in. Na installatie opent u de spreadsheet, stelt baudrate en poort in, en klikt op "Connect" voor live dataweergave.
Prototype
De volledige structuur is gefabriceerd uit houten platen. Figuur 6 toont de ontkoppelde en gemonteerde toestand. Figuur 7 toont de complete testbank met kunstmatige lamp voor testdoeleinden. Het systeem is compact, flexibel en ideaal voor studenten, onderzoekers en ingenieurs om algoritmen te testen vóór grootschalige implementatie.
Code
Ingesloten Software voor Zonnetracker Testbank
#include
int mode = 0; // 0 = handmatig, 1 = automatisch
int axe = 0; // 0 = links-rechts, 1 = omhoog-omlaag
int buttonState1 = 0, buttonState2 = 0;
int prevButtonState1 = 0, prevButtonState2 = 0;
int ldrtopr = 0, ldrtopl = 1, ldrbotr = 2, ldrbotl = 3;
int topl = 0, topr = 0, botl = 0, botr = 0;
Servo servo_updown;
Servo servo_rightleft;
int threshold_value = 10;
void setup() {
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,t,voltage,current,power,Mode");
pinMode(12, INPUT); // Modus knop
pinMode(11, INPUT); // As knop
pinMode(A4, INPUT); // Potentiometer
servo_updown.attach(5);
servo_rightleft.attach(6);
}
void loop() {
// PV meting
float volt = analogRead(A5) * 5.0 / 1023;
float voltage = 2 * volt;
float current = voltage / 20;
float power = voltage * current;
Serial.print("DATA,TIME,");
Serial.print(voltage); Serial.print(",");
Serial.print(current); Serial.print(",");
Serial.print(power); Serial.print(",");
char Mode;
buttonState1 = digitalRead(12);
if (buttonState1 != prevButtonState1) {
if (buttonState1 == HIGH) mode = (mode == 1) ? 0 : 1;
}
prevButtonState1 = buttonState1;
delay(50);
if (mode == 0) {
Mode = 'M';
Serial.println(Mode);
manualsolartracker();
} else {
Mode = 'A';
Serial.println(Mode);
automaticsolartracker();
}
}
void automaticsolartracker() {
topr = analogRead(ldrtopr);
topl = analogRead(ldrtopl);
botr = analogRead(ldrbotr);
botl = analogRead(ldrbotl);
int avgtop = (topr + topl) / 2;
int avgbot = (botr + botl) / 2;
int avgleft = (topl + botl) / 2;
int avgright = (topr + botr) / 2;
int diffelev = avgtop - avgbot;
int diffazi = avgright - avgleft;
// Azimut (links-rechts)
if (abs(diffazi) >= threshold_value) {
if (diffazi > 0) {
if (servo_rightleft.read() < 180)
servo_rightleft.write(servo_rightleft.read() + 2);
} else {
if (servo_rightleft.read() > 0)
servo_rightleft.write(servo_rightleft.read() - 2);
}
}
// Elevatie (omhoog-omlaag)
if (abs(diffelev) >= threshold_value) {
if (diffelev > 0) {
if (servo_updown.read() < 180)
servo_updown.write(servo_updown.read() - 2);
} else {
if (servo_updown.read() > 0)
servo_updown.write(servo_updown.read() + 2);
}
}
}
void manualsolartracker() {
buttonState2 = digitalRead(11);
if (buttonState2 != prevButtonState2) {
if (buttonState2 == HIGH) axe = (axe == 1) ? 0 : 1;
}
prevButtonState2 = buttonState2;
delay(50);
if (axe == 0) {
servo_rightleft.write(map(analogRead(A4), 0, 1023, 0, 180));
} else {
servo_updown.write(map(analogRead(A4), 0, 1023, 0, 180));
}
}
Schema's
Volledig elektronisch schema (EAGLE/Fritzing formaat) beschikbaar als download.
Productieproces
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad
- Zonnetracker V2.0 – Geavanceerd DIY Zonnepaneel Volgsysteem
- Pixel Chaser: Interactieve één-tik LED-spel met Arduino Nano
- IoT-zonnesturing: Slimme energiemanagement met Arduino
- Arduino-gebaseerde Afstotende Magnetische Levitatie: Eenvoudige Schakeling & DIY Handleiding
- Alexa-ingeschakelde Arduino Thuiscontroller: Slimme Automatisering Made Simple
- NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
- Accurate zonnestralingsmeting met Arduino UNO en Ethernet Shield
- DIY LED Roulette-spel – Bouw Eenpersoons Arcade Met Arduino Nano
- Zelfbouw Zonnetracker Zonne-energiesysteem met Arduino UNO