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

Dubbelassig zonne-trackerpaneel met automatische en handmatige modus

Componenten en benodigdheden

Arduino UNO
× 1
Draaipotentiometer (generiek)
× 2
LED (generiek)
× 2
SparkFun Drukknopschakelaar 12 mm
× 1
Servo's (Tower Pro MG996R)
× 2
Fotoweerstand
× 4
Weerstand 10k ohm
× 5
Weerstand 221 ohm
× 2

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Autodesk Tinkercad
Arduino IDE

Over dit project

Dit is een project dat mijn studenten uitvoerden tijdens de avondclub Young Hackers 2017-2018. Het is een veeleisend project voor basisschoolleerlingen en er waren veel vergaderingen voor nodig. Het bevat een klein 5V-zonnepaneel dat in twee assen kan draaien om maximaal vermogen van de zon te oogsten. Het project is gebaseerd op het Dual Axis Solar Tracker Project van OpenSourceClassroom.

We wilden twee modi in het eindproduct implementeren.

  • Een handmatige modus - bestuurd door twee potten.
  • Een automatische modus – bestuurd met vier lichtsensoren.

Om dat te bereiken hebben we het apparaat geprogrammeerd om tussen modi te wisselen met behulp van een drukknop en twee indicatieleds. Als het apparaat in handmatige modus staat, brandt het rode lampje en kunnen we de rotatie van het paneel in twee assen regelen met behulp van twee potentiometers. Wanneer het apparaat in de automatische modus staat, brandt het blauwe lampje en wordt de rotatie van het paneel bepaald door het licht dat wordt opgevangen door de vier LDR's. Het programmeren is gedaan in tinkercad.

Studenten werkten in groepen in een productielijnstijl om de taken te voltooien. (draad solderen, draad isoleren, onderdelen schroeven etc.).

Code

  • Roterende zonnepaneelcode
Roterende zonnepaneelcodeArduino
De uiteindelijke code van het zonnepaneel met twee assen
#include //Initialize variablesint mode =0; int knopState =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;//Declareer twee servo'sServo servo_9;Servo servo_10;void setup(){ pinMode (7, INGANG); //Mode-knop pinMode (12, OUTPUT); // Led-indicator voor handmatige modus pinMode (11, OUTPUT); // Led-indicator voor pinMode in automatische modus (A0, INPUT); // Potentiometer voor rechts-links beweging pinMode (A1, INPUT); // Potentiometer voor opwaartse beweging pinMode (A2, INPUT); // Lichtsensor omhoog - linker pinMode (A3, INPUT); // Lichtsensor omhoog - rechter pinMode (A4, INPUT); //Lichtsensor onder - linker pinMode (A5, INPUT); //Lichtsensor onder - rechts servo_9.attach (9); // Servomotor rechts - links beweging servo_10.attach (10); // Servomotor omhoog - omlaag beweging} ongeldige lus () {buttonState =digitalRead (7); if (buttonState !=prevButtonState) {if (buttonState ==HIGH) {//Wijzig modus en licht de juiste indicator op if (mode ==1) { mode =0; digitalWrite (12, HOOG); digitalWrite (11, LAAG); } anders { modus =1; digitalWrite (11, HOOG); digitalWrite (12, LAAG); } } } prevButtonState =buttonState; vertraging (50); // Wacht 50 milliseconde (s) als (modus ==0) {//Als de modus handmatig is, wijs de potwaarden toe aan rotatiegraden servo_9.write (map (analogRead (A0), 0, 1023, 0, 180) ); servo_10.write(map(analogRead(A1), 0, 1023, 0, 180)); } else { // if mode is auto map the sensor values ​​to 0-100 light intensity. //Elke lichtsensor heeft een andere gevoeligheid en moet eerst worden getest //voor zijn hoge en lage waarden topLeftLight =map(analogRead(A2),50,980,0,100); topRightLight =map(analogRead(A3),200.990,0.100); bottomLeftLight =kaart(analogRead(A4),170,970,0,100); bottomRightLight =kaart (analogRead (A5),250,1000,0,100); // Bereken de gemiddelde lichtomstandigheden TopLight =((topRightLight + topLeftLight) / 2); BottomLight =((bottomRightLight + bottomLeftLight) / 2); LeftLight =((topLeftLight + bottomLeftLight) / 2); RightLight =((topRightLight + bottomRightLight) / 2); // Draai de servo's indien nodig if (abs ((RightLight - LeftLight))> 4) {// Verander de positie alleen als het lichtverschil groter is dan 4% if (RightLight  LeftLight) { if (servo_9.read()> 0) { servo_9.write((servo_9.read() - 1)); } } } if (abs((TopLight - BottomLight))> 4) { // Wijzig positie alleen als het lichtverschil groter is dan 4% if (TopLight  BottomLight) { if (servo_10.read()> 0) { servo_10.write((servo_10.read() + 1)); } } } }}

Schema's

bedradingsschema

Productieproces

  1. DHT11-sensor met LED's en een piëzo-luidspreker
  2. Eenvoudige obstakelsensor met Arduino
  3. Solar Tracker V2.0
  4. Internet of things (IoT)-gebaseerde zonne-tracker
  5. 4x4x4 LED-kubus met Arduino Uno en 1sheeld
  6. Op Arduino gebaseerde RPM-teller met een nieuw en sneller algoritme
  7. galvaniseren met koper
  8. Zonnestraling meten met Arduino
  9. Digital Logic Board
  10. Servogestuurd, lichtvolgend zonnepaneelplatform
  11. Zonnepaneel:kwaliteitsproblemen en belangrijke controlepunten