Helligkeitsmessung

Hallo,

ich haben angehängen (PDF) Sensor LMSS-101 hier und habe diesen an einen Analogpin angeschlossen. Im Datenblatt ist ja auch ein Diagramm welche Helligkeit bei welcher Spannung herrscht. Soweit ist das klar, aber ich keine Idee wie ich den gemessenen Spannungswert in eine "Helligkeit / lx" wandeln kann.... mir fehlt da einfach die Formel!?

Ich hoffe mir kann jemand helfen :roll_eyes:

Danke!

LMSS-101.pdf (291 KB)

Die musst Du Dir offenbar selbst aus dem Diagramm ableiten.

Arduinoianer:
mir fehlt da einfach die Formel!?

Die Formel mußt Du Dir natürlich selbst aufstellen, da sie einerseits nicht im Datenblatt angegeben ist und andererseits von der Betriebsspannung abhängt.

Was angegeben ist, ist die Beziehung zwischen Spannung am Ausgang und Beleuchtungsstärke: Und zwar wenn man die Beleuchtungsstärke in einem Diagramm logarithmisch aufträgt und die Spannung linear, dann ergibt sich eine Gerade.

Und drei Punkte auf dieser Geraden sind insofern angegeben, als im Datenblatt drei Referenzspannungen und drei Luxwerte angegeben sind, und zwar Vref1 bei 25 lux, Vref2 bei 3 lux und Vref3 bei 0.27 lux. Das ist schon ein Punkt mehr als man zur Bestimmung einer Geraden benötigt.

Wobei diese Referenzspannungen von der Betriebsspannung abhängig sind und nur für Vopt= 2.9V sowie Vopt= 5.3V angegeben sind und für eine Betriebsspannung dazwischen mußt Du die Referenzspannung interpolieren und das ist dann der Wert, der in Deine Formel eingesetzt werden müßte. Und je nachdem ob der Arduino dann irgendwo an einem USB-Port mit (beispielsweise) 4,83 Volt hängt oder an einem Netztteil mit (beispielsweise 5,15 Volt ergeben sich dann schon leicht unterschiedliche Formeln.

Wenn die Betriebsspannung nicht exakt aufs Zehntel Volt feststeht, weil das Gerät für eine flexible Stromversorgung mit wechselnden Netzteilen oder USB-Stromversorgungen vorgesehen ist, und gleichzeitig eine hohe Genauigkeit gefordert ist, dann brauchst Du sogar eine Unterfunktion zur Berechnung und eine einfache Formel reicht gar nicht mehr aus, weil zunächst mal Zwischenwerte anhand der Betriebsspannung errechnet werden müssen.

Hallo,

als meine Spannung ist glatt 5,1V. Aber naja ich bekomm das mit der Formel nicht auf die Reihe .... das ist mir einfach zu "hoch" :frowning:
Ich werd das Ding wohl in die Tonne hauen ....

Kennt jemand einen einfachen und "relativ" genauen Weg Helligkeit per Analog Eingang zu messen, so das am Ende ein brauchbarer "lx" Wert raus kommt ?

Nix Tonne, ich nehm ihn.

Arduinoianer:
als meine Spannung ist glatt 5,1V. Aber naja ich bekomm das mit der Formel nicht auf die Reihe .... das ist mir einfach zu "hoch" :frowning:
Ich werd das Ding wohl in die Tonne hauen ....

In der Schule gefehlt als der Logarithmus dran war?

lineare Interpolation der Referenzspannungen nach Interpolation (Mathematik) – Wikipedia

Interpolation von Vref1
f0 = 1,08 V
x0 = 2,9 V
f1 = 1,52 V
x1 = 5,3 V

f(x=5,1)= 1,08 + (1,52-1,08)/(5,3-2,9) * (5,1-2,9) = 1,483

Vref1 bei 5,1V sind 1,483 Volt bei 25 lux.

Interpolation von Vref3

f0 = 1,91 V
x0 = 2,9 V
f1 = 2,35 V
x1 = 5,3 V

f(x=5,1)= 1,91 + (2,35 - 1,91)/(5,3-2,9)*(5,1-2,9) = 2,313

Vref3 bei 5,1V sind 2,313 Volt bei 0,27 lux

Wenn man die beiden Punkte auf logarithmisches Papier in einen Graphen mit x/y-Achsen einzeichnet:
A (0,27 lx | 2,313 V)
B (25 lx | 1.483V)
ergibt sich eine Gerade, für deren Steigungsdreieck gilt:

Delta y = y2-y1 = 1,482 - 2,313
Delta x = ln(25)-ln(0,27)

Steigung = (1,482 - 2,313)/ (ln(25)-ln(0,27)) = -0,1835

Und nachdem nun 2 Punkte der Geraden und die Steigung bekannt ist,
kann daraus jeder Punkt der Geraden ermittelt werden, da das Verhältnis
für Delty y / Delta x auf jedem Punkt der Geraden der Steigung entspricht.

Also
(y- 2,313)/(ln(x)-ln(0,27)) = - 0,1835
mit y= gemessenes Signal in Volt und x die gesuchte Beleuchtungsstäke.
Aufgelöst nach x durch Umformen

ln(x) = ln(0,27)+(y-2,313)/(-0,1835)
oder

x(UB=5,1V)= exp(ln(0,27)+(y-2,313)/(-0,1835))

Z.B. für y= 0,5V

x(UB=5,1V)= exp(ln(0,27)+(0,5-2,313)/(-0,1835))= 5275

Also bei 0,5 Volt 5275 lux, wenn die Betriebsspannung 5,1 Volt beträgt.

Übrigens nur bei 25°C, denn der Meßwert ist auch noch temperaturabhängig, was
meine Formel aber nicht berücksichtigt.

In der von Arduino verwendeten Library heißt die Funktion für den natürlich Logarithmus "log" und nicht "ln" wie in der Mathematik sonst üblich, d.h. wenn Du meine hergeleitete Formel auf Arduino-Code umsetzt, muß es heißen:

float luxWert, pinVoltage;
luxWert = exp(log(0.27)+(pinVoltage-2.313)/(-0.1835));

Code zum Ausgeben einer kleinen Wertetabelle über den seriellen Monitor:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  float luxWert, pinVoltage;
  for(int i=20;i<=350;i++)
  {
    pinVoltage=i/100.0;
    luxWert = exp(log(0.27)+(pinVoltage-2.313)/(-0.1835));
    Serial.print(pinVoltage);
    Serial.print(" V, ");
    Serial.print(luxWert);
    Serial.println(" lux");
  }
}

void loop() {
  // put your main code here, to run repeatedly: 
  
}