Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Dubbele-as zonnepaneel-volgsysteem met auto & handmatige controle – Efficiënte zonvolging

Onderdelen en benodigdheden

OnderdeelAantal
Arduino UNO1
Draaipotentiometer (generiek)2
LED (generiek)2
SparkFun Drukknopschakelaar 12mm1
Servo's (Tower Pro MG996R)2
Fotoweerstand (LDR)4
Weerstand 10kΩ5
Weerstand 221Ω2

Benodigde tools en machines

  • Solderbout

Apps en online diensten

  • Autodesk Tinkercad (voor programmeren)
  • Arduino IDE

Over dit project

Dit project is uitgevoerd door mijn leerlingen tijdens de avondclub "Young Hackers" in 2017-2018. Het is een uitdagend project voor basisschoolleerlingen en heeft veel bijeenkosten gekost. Het bevat een klein 5V zonnepaneel dat in twee assen kan draaien om maximale energie op te wekken. Het project is gebaseerd op het "Dual Axis Solar Tracker Project" van OpenSourceClassroom.

We wilden twee modi implementeren:

  • Handmatige modus – bestuurd door twee potentiometers.
  • Automatische modus – bestuurd door vier lichtsensoren (LDR's).

Een drukknop en twee indicator-LED's schakelen tussen de modi. In handmatige modus brandt de rode LED en controleer je de rotatie in twee assen met de potentiometers. In automatische modus brandt de blauwe LED en wordt de rotatie bepaald door de lichtintensiteit die de vier LDR's meten. De programmering is gedaan in Tinkercad.

Leerlingen werkten in groepen in een productielijnstijl (solderen, isoleren, schroeven).

Code

Draaiend zonnepaneel code (Arduino)

#include <Servo.h>

// Variabelen
int mode = 0;
int buttonState = 0, prevButtonState = 0;
int topLeftLight, topRightLight, bottomLeftLight, bottomRightLight;
int LeftLight, RightLight, TopLight, BottomLight;

Servo servo_9;  // Rechts-links
Servo servo_10; // Omhoog-omlaag

void setup() {
  pinMode(7, INPUT);       // Modus knop
  pinMode(12, OUTPUT);     // LED handmatig (rood)
  pinMode(11, OUTPUT);     // LED auto (blauw)
  pinMode(A0, INPUT);      // Potentiometer rechts-links
  pinMode(A1, INPUT);      // Potentiometer omhoog-omlaag
  pinMode(A2, INPUT);      // LDR boven-links
  pinMode(A3, INPUT);      // LDR boven-rechts
  pinMode(A4, INPUT);      // LDR onder-links
  pinMode(A5, INPUT);      // LDR onder-rechts
  servo_9.attach(9);
  servo_10.attach(10);
}

void loop() {
  buttonState = digitalRead(7);
  if (buttonState != prevButtonState) {
    if (buttonState == HIGH) {
      if (mode == 1) {
        mode = 0;
        digitalWrite(12, HIGH);
        digitalWrite(11, LOW);
      } else {
        mode = 1;
        digitalWrite(11, HIGH);
        digitalWrite(12, LOW);
      }
    }
  }
  prevButtonState = buttonState;
  delay(50);

  if (mode == 0) {
    // Handmatig: map potmeter waarden naar graden
    servo_9.write(map(analogRead(A0), 0, 1023, 0, 180));
    servo_10.write(map(analogRead(A1), 0, 1023, 0, 180));
  } else {
    // Automatisch: map sensorwaarden naar 0-100 lichtintensiteit
    // Elke LDR heeft andere gevoeligheid – eerst testen voor min/max!
    topLeftLight     = map(analogRead(A2), 50, 980, 0, 100);
    topRightLight    = map(analogRead(A3), 200, 990, 0, 100);
    bottomLeftLight  = map(analogRead(A4), 170, 970, 0, 100);
    bottomRightLight = map(analogRead(A5), 250, 1000, 0, 100);

    // Gemiddelde lichtcondities
    TopLight    = (topRightLight + topLeftLight) / 2;
    BottomLight = (bottomRightLight + bottomLeftLight) / 2;
    LeftLight   = (topLeftLight + bottomLeftLight) / 2;
    RightLight  = (topRightLight + bottomRightLight) / 2;

    // Draai servos nodig (alleen als verschil > 4%)
    if (abs(RightLight - LeftLight) > 4) {
      if (RightLight < LeftLight) {
        if (servo_9.read() < 180) servo_9.write(servo_9.read() + 1);
      } else {
        if (servo_9.read() > 0) servo_9.write(servo_9.read() - 1);
      }
    }
    if (abs(TopLight - BottomLight) > 4) {
      if (TopLight < BottomLight) {
        if (servo_10.read() < 180) servo_10.write(servo_10.read() - 1);
      } else {
        if (servo_10.read() > 0) servo_10.write(servo_10.read() + 1);
      }
    }
  }
}

Schema's

Dubbele-as zonnepaneel-volgsysteem met auto & handmatige controle – Efficiënte zonvolging

Productieproces

  1. DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
  2. Een eenvoudige obstakelsensor bouwen met Arduino – IR LED & Fotodiodo Tutorial
  3. Zonnetracker V2.0 – Geavanceerd DIY Zonnepaneel Volgsysteem
  4. IoT-zonnesturing: Slimme energiemanagement met Arduino
  5. Bouw een 4x4x4 LED-kubus met Arduino Uno & 1Sheeld – Interactief LED-project
  6. Hoge-Snelheid Arduino RPM Teller met Nieuw Algoritme
  7. Koper Elektrolyseren Project: Bouw een Slim Systeem met Arduino UNO
  8. Accurate zonnestralingsmeting met Arduino UNO en Ethernet Shield
  9. Digital Logic Board Kit: Onderdelen & Opbouwhandleiding
  10. Precisie servo-aangedreven zonnevolgsysteem voor optimale energieopbrengst
  11. Zonnepaneelkwaliteit: essentiële controlepunten voor optimale prestaties