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

Zonnestraling meten met Arduino

Componenten en benodigdheden

Arduino UNO
× 1
Arduino Ethernet Shield 2
× 1
zonnecel
× 1
Weerstand 10k ohm
× 1

Benodigde gereedschappen en machines

Digitale multimeter

Over dit project

Over

Er zijn veel sensoren beschikbaar voor het meten van allerlei weersomstandigheden zoals temperatuur, vochtigheid, lichtintensiteit etc., maar er zijn geen gemakkelijk verkrijgbare sensoren voor het meten van hoeveelheden zonnestraling. Dit komt omdat zonnestraling moeilijk te meten kan zijn, ook al voelen we het elke dag op onze huid.

Zonnestraling is het vermogen per oppervlakte-eenheid dat van de zon wordt ontvangen in de vorm van elektromagnetische straling in het golflengtebereik van het meetinstrument. Het brede bereik van de golflengte van de zon is een andere factor die het moeilijk maakt om te meten.

Het instrument voor het meten van zonnestraling wordt een Pyranometer genoemd. Pyranometers kunnen overal tussen $ 200 en $ 800 kosten, zelfs van Chinese leveranciers, waardoor ze ontoegankelijk zijn voor de gemiddelde hobbyist. U kunt hier meer over hen lezen:https://en.wikipedia.org/wiki/Pyranometer

Ik was onlangs op zoek naar het kopen van een zonnepaneel voor mijn huis en wilde weten of het de moeite waard zou zijn en daarom wilde ik een schatting maken van de hoeveelheid beschikbare zonne-energie waar ik woon.

Ik was niet geïnteresseerd in het kopen van een Pyranometer, dus ik dacht dat ik wat geld kon besparen en tegelijkertijd wat plezier kon hebben door er zelf een te maken.

Zo kwam ik tot het maken van mijn eigen coole gadget die een stuk goedkoper is en kan helpen de hoeveelheid zonnestraling in te schatten. Het gebruikt enkele gemakkelijk toegankelijke componenten en de Arduino voor de berekeningen. Ik heb het grootste deel van mijn component van Chinavasion gekregen, maar er zijn tal van andere plaatsen waar u de gereedschappen en apparatuur kunt kopen, aangezien ze allemaal algemeen verkrijgbaar zijn.

Instellen

1. Uw zonnecel moet 2 draden hebben, een aarde (zwart) en een spanning (rood). Als je verschillende kleurcodes hebt of je kunt ze niet onderscheiden, neem dan contact op met je multimeter. Sluit de sondes van uw multimeter aan op beide draden, als de weergegeven spanning positief is, dan is de draad waarop uw zwarte multimeter-sonde is aangesloten de aarde, terwijl de rode onder spanning staat, als de spanning negatief is, is het andersom rond.

2. Verbind de aardingsdraad van uw zonnecel met de Arduino-aarde en de VCC-draad met een willekeurige analoge pin via de weerstand die we hebben gekozen. Voor dit project zullen we analoge pin A0 gebruiken. De weerstand is erg belangrijk voor onze berekeningen, omdat we verwachten dat deze vele malen groter zal zijn dan de interne weerstand van de cel.

Dat is alles wat we voor nu nodig hebben. Ga naar het codeergedeelte. Zonnecellen wekken energie op door zonne-energie van de zon om te zetten in elektrische energie, hoe hoger de energie (straling en lichtenergie) van de zon. Hoe hoger de geproduceerde spanning zal zijn. We zullen deze direct proportionele relatie gebruiken om de zonnestraling te schatten.

De volgende parameters zijn nodig:

  • Arduino analoge referentiespanning =5V (misschien anders op uw bord)
  • Maximale uitgangsspanning van uw zonnecel (Dit is afhankelijk van het zonnepaneel dat u gebruikt, u moet dit controleren om dit te bevestigen, aangezien het zeer essentieel is voor onze berekening, voor de gemiddelde zonnecel van een rekenmachine is het ongeveer 5V) .
  • Afmeting van zonnecel. Je kunt dit meten met een liniaal (lengte en met of andere parameters die je nodig hebt om het gebied te vinden).

Dus we zullen onze zonnestraling schatten door het vermogen van de zonnecel te berekenen en te delen door zijn oppervlakte.

  • Power =pow (analogRead(A0), 2) / Weerstand
  • Gebied =lengte * breedte ( ervan uitgaande dat we een rechthoek hebben )
  • zonnestraling =vermogen / oppervlakte

Hier is de voorbeeldcode hieronder:

/*------------------------------------------ -------------------------------------------------- ----------------------------*/#define ANALOG_PIN A0 // Analoge pin#define WEERSTAND 10 // Weerstand in duizenden ohms# definieer PANEL_LENGTH 60 // Lengte van zonnecel in mm#define PANEL_WIDTH 20 // Breedte van zonnecel in mmvluchtige vlotter Oppervlakte;vluchtige vlotter Vermogen;vluchtige vlotter Straling;/** Main Setup-functie*/void setup() {// Begin seriële communicatieSerial.begin(9600);while(!Serial);delay(100);}/** Hoofdinstellingsfunctie*/void loop() {Gebied =PANEL_LENGTH * PANEL_WIDTH / (100*100); // we delen door 10000 verkrijg het gebied in vierkante metersPower =pow (analogRead (ANALOG_PIN), 2) / RESISTANCE; // Berekenen van powerRadiation =Power / Area;char *msg; sprintf(msg, "De zonnestraling is %f W/M2", straling); // Genereren van te printen bericht Serial.println(msg);delay(1000);}/*---------------------------- -------------------------------------------------- ----------------------------------------------*/ 

Gemiddelde stralingswaarden voor een normale dag kunnen variëren van 150 tot 300 W/M2. Maar dit zal sterk variëren, afhankelijk van uw locatie. Het kan oplopen tot 900 op een zonnige dag of in gebieden rond de evenaar.

Om internetfunctionaliteit toe te voegen, kunnen we het Ethernet-schild gebruiken. We hoeven geen andere nieuwe verbindingen te maken, monteer gewoon het schild op de Arduino en plaats de pinnen in hun corresponderende posities op het schild (d.w.z. pin 1 op de Arduino blijft pin 1 op het schild)

Code

  • voorbeeldcode voor Pyranometer
  • Ethernet-functiecode
voorbeeldcode voor PyranometerArduino
#define ANALOG_PIN A0 // Analoge pin
#define WEERSTAND 10 // Weerstand in duizenden ohm
#define PANEL_LENGTH 60 // Lengte zonnecel in mm
#define PANEL_WIDTH 20 // Breedte van zonnecel in mm

vluchtige vlotter Gebied;
vluchtige vlotter Vermogen;
vluchtige float Straling;

/*
* Hoofdinstellingsfunctie:
*/
ongeldige setup() {
// Begin seriële communicatie
Serieel.begin(9600);
while(!Serial);

vertraging (100);
}


/*
* Hoofdinstellingsfunctie:
*/
lege lus() {

Gebied =PANEL_LENGTH * PANEL_WIDTH / (100*100); // we delen door 10000, verkrijg de oppervlakte in vierkante meters

Power =pow (analogRead (ANALOG_PIN), 2) / WEERSTAND; // Rekenkracht

Straling =Vermogen / Oppervlakte;

teken * bericht;

sprintf(msg, "De zonnestraling is %f W/M2", straling); // Bericht genereren dat moet worden afgedrukt

Serial.println(msg);

vertraging (1000);
}
Geen voorbeeld (alleen downloaden).
Ethernet-functiecodeArduino
#include
#include

#define ANALOG_PIN A0 // Analoge pin
#define WEERSTAND 10 // Weerstand in duizenden ohm
#define PANEL_LENGTH 60 // Lengte zonnecel in mm
#define PANEL_WIDTH 20 // Breedte van zonnecel in mm

vluchtige vlotter Gebied;
vluchtige vlotter Vermogen;
vluchtige float Straling;


// Voer hieronder een MAC-adres en IP-adres in voor uw controller.
// Het IP-adres is afhankelijk van uw lokale netwerk:
byte-mac[] ={
0xDE, 0x0D, 0x8E, 0xEF, 0xFE, 0xED
};
IP-adres ip(192, 168, 1, 177);

// Initialiseer de Ethernet-serverbibliotheek
// met het IP-adres en de poort die u wilt gebruiken
// (poort 80 is standaard voor HTTP):
EthernetServer-server (80);

ongeldige setup() {
// Open seriële communicatie en wacht tot de poort wordt geopend:
Serieel.begin(9600);
while (!Serial) {
; // wacht tot de seriële poort verbinding maakt. Alleen nodig voor native USB-poort
}


// start de Ethernet-verbinding en de server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is op");
Serial.println(Ethernet.localIP());
}


lege lus() {

Gebied =PANEL_LENGTH * PANEL_WIDTH / (100*100); // we delen door 10000, verkrijg de oppervlakte in vierkante meters
Power =pow (analogRead (ANALOG_PIN), 2) / WEERSTAND; // Rekenkracht
Straling =Vermogen / Oppervlakte;
teken * bericht;
sprintf(msg, "De zonnestraling is %f W/M2", straling); // Bericht genereren dat moet worden afgedrukt


// luister naar inkomende klanten
EthernetClient-client =server.available();
als (klant) {
Serial.println("nieuwe klant");
// een http-verzoek eindigt met een lege regel
boolean currentLineIsBlank =waar;
while (client.connected()) {
if (client.available()) {
char c =cliënt.lezen();
Serieel.schrijven(c);
// als je aan het einde van de regel bent gekomen (een nieuwe regel ontvangen)
// teken) en de regel is leeg, het http-verzoek is beëindigd,
// zodat je een antwoord kunt sturen
if (c =='\n' &¤tLineIsBlank) {
// stuur een standaard http-antwoordheader
client.println ("HTTP/1.1 200 OK");
client.println ("Inhoudstype:tekst/html");
client.println("Verbinding:sluiten"); // de verbinding wordt gesloten na voltooiing van het antwoord
client.println ("Vernieuwen:5"); // ververs de pagina automatisch elke 5 sec
klant.println();
client.println("");
cliënt.println("");

/*
* Stuur bericht naar klant
*/
cliënt.print(bericht);
cliënt.println("
");

cliënt.println("");
pauze;
}
if (c =='\n') {
// je begint een nieuwe regel
currentLineIsBlank =waar;
} else if (c !='\r') {
// je hebt een karakter op de huidige regel gekregen
currentLineIsBlank =onwaar;
}
}
}
// geef de webbrowser de tijd om de gegevens te ontvangen
vertraging(1);
// sluit de verbinding:
klant.stop();
Serial.println ("client verbroken");
}
}
Geen voorbeeld (alleen downloaden).

Schema's

Schema van zonnepaneel, weerstand en aansluitingen

Productieproces

  1. Temperatuur meten met RASPBERRY PI
  2. CO2-monitoring met K30-sensor
  3. Doofblinde communicatie met 1Sheeld/Arduino
  4. Bedien muntvangers met Arduino
  5. Arduino met Bluetooth om een ​​LED te bedienen!
  6. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  7. Spelen met Nextion Display
  8. Nunchuk-gestuurde robotarm (met Arduino)
  9. Solar Tracker V2.0
  10. DIY eenvoudig meetwiel met roterende encoder
  11. Mini-radar met Arduino