Hallo,
im Internet bin ich auf diesen Link gestossen: https://www.hackster.io/jeffrey2/measuring-solar-radiation-with-arduino-f741ac
Es geht um die Messung der Solaren Einstrahlung.
Wenn ich mir das so anschaue ist die Formel doch linear, dann sollte man das doch Code technisch in ESPHome auch so lösen können, oder?
- platform: adc
pin: 36
name: "Solar Radiation"
id: solar_radiation
update_interval: 1s
unit_of_measurement: "W/m²"
raw: true
filters:
- lambda: |-
const float MAX_RAW_VALUE = 2050.0; // Maximaler ADC-Rohwert
const float MAX_RADIATION = 165.0; // Maximale Strahlung in W/m² bei meinem Solarpanel 500mV 330mA bei maximaler Einstrahlung (20x50mm Fläche)
return (x / MAX_RAW_VALUE) * MAX_RADIATION; // Berechnung der Strahlung in W/m² basierend auf dem Rohwert
Wenn mein Solarpanel 0,5V 330mA maximal leistet, kann man das doch so linear berechnen, oder bin ich grade total auf dem Holzweg?
Es soll keine verlässliche Messung sein, nur um grob einen Überblick zu bekommen.
Ich habe gelesen, dass das Mittel in Deutschland 133,67 W/m² beträgt. Somit könnte man am Jahresende den Sensor nochmals nach kalibrieren.
Mit einem 10-kΩ-Widerstand in Reihe (wie im verlinkten Projekt) wird die Spannung am ADC bei steigender Einstrahlung zwar zunehmen, jedoch nicht linear, da sie stark von der nicht-linearen Kennlinie der Solarzelle abhängt. Zudem wird sie im unteren Einstrahlungsbereich wahrscheinlich gegen 0 tendieren, da der Innenwiderstand der Solarzelle in diesem Bereich größer wird, während die Spannung am oberen Ende eher abflacht. Aber all das mal außen vor gelassen:
Beim ESP8266 hat der ADC eine 10-Bit-Auflösung, und bei der maximalen Spannung der Solarzelle (0.5 V) nutzt du davon nur 15 % des Messbereichs. Das bedeutet, dass Schwankungen, die durch Temperaturänderungen entstehen, einen erheblichen Einfluss auf die Genauigkeit deiner Approximation haben.
Um die Spannung besser in den Arbeitsbereich des ADC zu skalieren, würde ich mindestens einen Spannungsteiler empfehlen:
Schaltung für Spannungsteiler:
Solar (-) → GND
Solar (+) → 10kΩ → ADC → 56kΩ→ GND
Noch besser wäre ein fester Lastwiderstand, der näher am Maximum Power Point (MPP) der Solarzelle liegt. Dadurch wird die Spannung stabiler und genauer an die Einstrahlung gekoppelt:
Schaltung für Lastwiderstand:
Solar (-) → GND
Solar (+) → ADC → 2Ω → GND
Genauer wäre es, die Solarzelle direkt im Maximum Power Point (MPP) zu betreiben, den Strom mithilfe eines Shunt-Widerstands zu messen und zusätzlich eine Temperaturkompensation vorzunehmen. Aber wer es so genau brauch, kann sich auch gleich ein fertiges Pyranometer anschaffen.
Lieben Dank für die ausführliche Erklärung.
In der Formel vom Link wird die ja nur die Eingangsspannung umgerechnet, also das meinte ich mit Linear
Ok, alles in allem habe ich mal wieder zu einfach gedacht, wie schön und einfach war es in meiner Welt.
Also wenn ich Dich richtig verstehe sollte man die tatsächliche entstehende Leistung (P) messen und nicht nur die Leerlaufspannung.
Das Solarpanel mit einem Widerstand belasten.
Der Spannungsabfall ist dann noch geringer, also müsste ich mit einem Operationsverstärker das Signal verstärken um einen besseren messbaren Wert zu bekommen.
Werde die Schaltung und Code entsprechend anpassen. Wenn ich dann die Leistung messe, kann ich dann grob davon ausgehen, Strom durch dem Messwiderstand: 0mA = W/m²
Messwiderstand: Maximalstrom = 165 W/m²
Oder ist das dann trotzdem noch Blödsinn?
Genauigkeit ist immer so ein Thema, schon mein Lehrmeister hat damals schon gesagt, wer misst, misst Mist.
Es soll nur grob einen Trend wiedergeben.
Die Solarzelle ist nur ein kleiner Teil vom dem Modul.
Es geht um einen Sensor der Werte die die Wetterstation nicht misst zu ergänzen. Angefangen hat es mit nur einem Feinstaubsensor, da noch sooo viele IO’s frei waren, kam immer mehr dazu.
Jetzt sind es:
Feinstaub
UVA und UVB Strahlung sowie UV Index
Helligkeit in LUX
Gammastrahlung
Kompass Modul
GPS Modul als zentrale Zeitgebung alternative für die Gute DCF77 Zeit.
Blitz Erkennung und Ortung
Und hald eben noch das Solarmodul