Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Zweiachsiges Solartracker-Panel mit automatischem und manuellem Modus

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Drehpotentiometer (allgemein)
× 2
LED (generisch)
× 2
SparkFun Drucktastenschalter 12 mm
× 1
Servos (Tower Pro MG996R)
× 2
Fotowiderstand
× 4
Widerstand 10k Ohm
× 5
Widerstand 221 Ohm
× 2

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Autodesk Tinkercad
Arduino-IDE

Über dieses Projekt

Dies ist ein Projekt, das meine Schüler während des 2017-2018 Abendclubs Young Hackers umgesetzt haben. Es ist ein anspruchsvolles Projekt für Grundschüler, für das wir viele Sitzungen brauchten. Es enthält ein kleines 5-V-Solarpanel, das sich in zwei Achsen drehen kann, um maximale Energie aus der Sonne zu gewinnen. Das Projekt basiert auf dem Dual Axis Solar Tracker Project von OpenSourceClassroom.

Wir wollten im Endprodukt zwei Modi implementieren.

  • Ein manueller Modus – gesteuert durch zwei Töpfe.
  • Ein Automatikmodus – gesteuert mit vier Lichtsensoren.

Um dies zu erreichen, haben wir das Gerät so programmiert, dass es mit Hilfe eines Druckknopfes und zweier Anzeige-LEDs zwischen den Modi wechselt. Wenn sich das Gerät im manuellen Modus befindet, leuchtet das rote Licht und wir können die Drehung des Panels in zwei Achsen mit Hilfe von zwei Potentiometern steuern. Wenn sich das Gerät im Auto-Modus befindet, leuchtet das blaue Licht und die Drehung des Panels wird durch das von den vier LDRs gesammelte Licht bestimmt. Die Programmierung erfolgte in tinkercad.

Die Schüler arbeiteten in Gruppen im Stil einer Produktionslinie, um die Aufgaben zu lösen. (Drahtlöten, Drahtisolierung, Teileschrauben usw.).

Code

  • Rotierender Solarpanel-Code
Rotierender SonnenkollektorcodeArduino
Der endgültige Code des zweiachsigen Solarpanels
#include //Initialize variablesint mode =0; int buttonState =0; int prevButtonState =0; int topLeftLight =0; int topRightLight =0;int bottomLeftLight =0;int bottomRightLight =0;int LeftLight =0;int RightLight =0;int TopLight =0;int BottomLight =0;//Zwei Servos deklarierenServo servo_9;Servo servo_10;void setup(){ pinMode (7, EINGANG); // Modustaste pinMode (12, AUSGANG); // LED-Anzeige für den manuellen Modus PinMode (11, OUTPUT); // LED-Anzeige für den Automodus PinMode (A0, INPUT); // Potentiometer für Rechts-Links-Bewegung pinMode (A1, INPUT); // Potentiometer für Auf-Ab-Bewegung pinMode (A2, INPUT); // Lichtsensor oben - linker PinMode (A3, INPUT); // Lichtsensor oben - rechter PinMode (A4, INPUT); // Lichtsensor unten - linker PinMode (A5, INPUT); // Lichtsensor unten - rechts servo_9.attach (9); // Servomotor rechts - links Bewegung servo_10.attach (10); // Servomotor auf - ab Bewegung} ungültige Schleife () {buttonState =digitalRead (7); if (buttonState !=prevButtonState) { if (buttonState ==HIGH) {// Modus ändern und die richtige Anzeige aufleuchten if (mode ==1) { mode =0; digitalWrite(12, HOCH); digitalWrite(11, LOW); aufrechtzuerhalten. Sonst { Modus =1; digitalWrite(11, HIGH); digitalWrite(12, LOW); } } } prevButtonState =buttonState; Verzögerung (50); // 50 Millisekunde (s) warten if (mode ==0) {//Wenn der Modus manuell ist, ordnen Sie die Pot-Werte auf Rotationsgrade zu servo_9.write (map (analogRead (A0), 0, 1023, 0, 180) ); servo_10.write (map (analogRead (A1), 0, 1023, 0, 180)); aufrechtzuerhalten. Sonst {//Wenn der Modus automatisch ist, werden die Sensorwerte auf 0-100 Lichtintensitäten abgebildet. // Jeder Lichtsensor hat eine andere Empfindlichkeit und muss zuerst getestet werden // auf seine hohen und niedrigen Werte 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); // Berechnen Sie die durchschnittlichen Lichtverhältnisse TopLight =((topRightLight + topLeftLight) / 2); BottomLight =((bottomRightLight + bottomLeftLight) / 2); LeftLight =((topLeftLight + bottomLeftLight) / 2); RightLight =((topRightLight + bottomRightLight) / 2); // Die Servos bei Bedarf drehen if (abs ((RightLight - LeftLight))> 4) { // Position nur ändern, wenn die Lichtdifferenz größer als 4% ist if (RightLight  LeftLight) { if (servo_9.read ()> 0) { servo_9.write ((servo_9.read ( - 1)); aufrechtzuerhalten. write((servo_10.read() - 1)); }} if (TopLight> BottomLight) { if (servo_10.read()> 0) {servo_10.write ((servo_10.read() + 1)); } } } }}

Schaltpläne

Schaltplan

Herstellungsprozess

  1. DHT11-Sensor mit LEDs und einem Piezo-Lautsprecher
  2. Einfacher Hindernissensor mit Arduino
  3. Solar Tracker V2.0
  4. Internet der Dinge (IoT)-basierter Solartracker
  5. 4x4x4 LED-Würfel mit Arduino Uno und 1sheeld
  6. Arduino-basierter Drehzahlmesser mit neuem und schnellerem Algorithmus
  7. Galvanisieren mit Kupfer
  8. Messung der Sonneneinstrahlung mit Arduino
  9. Servogesteuerte, lichtnachführende Solarpanel-Plattform
  10. Solarpanel:Qualitätsprobleme und wichtige Kontrollpunkte