Photodiode: Lichtstärke in Lux berechnen

#1
Hallo,

ich habe einen analogen Lichtsensor mit Photodiode Analogausgang und einem Digitalausgang an meinem Raspberry PI angeschlossen und möchte über diesen Sensor bzw. die Photodiode den Lux wert bestimmen.

Der Sensor heißt mit vollem Namen
XHX Light Sensor with analog & digital outputs und wurde auf Amazon gekauft, jedoch gibt es den Sensor dort nicht mehr und auch im Internet ist nicht viel darüber zu finden. Er sollte aber Baugleich mit diesem hier sein.

Freies Verschiffen Lichtempfindliche Sensormodul Lichtdetektion Modul fur Arduino in freies Verschiffen Lichtempfindliche Sensormodul Lichtdetektion Modul fur Arduino
hinweis:die neue spurhaltungszahl fu aus Sensoren auf AliExpress.com | Alibaba Group


Da der Sesnor Analog ist schalte ich natürlich noch einen ADC dazwischen. Hierfür verwende ich den MCP3008 ADC.

Leider scheine ich bei der Umrechnung nach Lux etwas falsch zu machen. Bei voll beleuchtetem Zimmer zeigt mir der Sensor 1 Lux an und bei dunklem Zimmer (nur PC Bildschirm an der etwa 3 Meter entfernt steht) etwas um die 50 Lux. Die Werte müssten ja eher umgekehrt sein also 1 Lux bei ausgeschaltenem Licht und 50 Lux bei angeschaltenem.

Das auslesen und die Umrechnung geschieht über ein Python script welches ich im wesentlichen aus diesem Tutorial abgeleitet habe.

Fotowiderstand [Robotic & Microcontroller Educational Knowledgepage - Network of Excellence]

Das Script sieht folgendermaßen aus:

Code:
from mcp3008 import *
import time

mcp = MCP3008()
LIGHT_SENSOR_CHANNEL = 0


while True:
        analog_value = mcp.analog_read(LIGHT_SENSOR_CHANNEL)
        # Input-Spannung am MCP3800 berechnen
        voltage = 3.3 * analog_value / 1024
        # Wiederstand des Fotoresistors im Spannungsteiler berechnen
        resistance = (10.0 * 3.3 ) / voltage - 10.0
        # Beleuchtungsstaerke in lux berechnen
        illuminance = 255.84 * pow(resistance, - 10/9)

        print "%0.1f lux  " % illuminance
        time.sleep(1)
Hat vielleicht jemand eine Idee was ich falsch mache oder einen Tipp ? Wäre für jede Hilfe Dankbar

Danke schonmal im Vorraus!
 
#2
Moinsen,

da ich nicht weiss wo dein Stand so ist, fange ich mal ganz einfach an(sry dafür) .

Digital heisst nicht binär, d.h. ist mir 1024 als Teiler schon etwas suspekt.
Es heisst nur das es ein zeit- und werte-diskretes Signal ist was man dan einfacher mit Computern(Binärzahlen) bearbeiten kann.

Das Skript strotzt auch vor "Magic-Numbers", die bei dir nicht unbedingt gegeben sein müssten.

Da die Diode nicht mehr im Verkauf ist, wird es ggf. auch schwierig sein dafür ein technisches Datenblatt zu finden, und baugleich heisst nicht das auch die technischen Details gleich sein müssen, sondern nur das es "gleich" aufgebaut ist.

D.h. Wird es schwierig, dir da genau zu helfen, denn
der Wiederstand kann anders sein, etc.
Du wirst IMHO also nicht drum herum kommen Probemessungen mit einem 2. Gerät vorzunehmen.
Lichtintensität, A/V-Ausgabe der Diode, Luxwert, und dann kannst du versuchen daraus eine Korrelation zu erstellen.

Abgesehen davon ist das von dir verlinkte Bauteil, nicht nur einfach ein Sensor, es ist eine komplette Komponente, welche diskrete Signale ausgeben sollte. Ich sehe auf der Platine einen Kontroller, d.h. ohne Datenblatt könnte das Dingen Pi ausgeben ;)

Gruß

Fluffy

P.s.: Was ich noch anmerken will:
Der Code den du benutzt sieht danach aus das er den Job des A-D-Wandlers übernimmt, was du nicht brauchst da du schon einen A-D-Wandler hast.
 

Chakky

Member of Honour
#3
Das ding wird bestimmt normalweise am Arduino betrieben. Kannst du uns mal ein Foto reinstellen oder mal schauen ob irgendwelche Chipnummern drauf stehen. Der Suchbegriff "light sensor" ist zu allgemein um irgendwas brauchbares ans infos zu finden. Sofern du zugriff auf ein Oszi hast, häng das Ding daran und Spiele mit den helligkeitswerten rum. Zur aller größten Not kannst du das Smartphone mit Lichtsensor als "Referenz" nehmen um zu sehen, ob deine Werte so einigermaßen passen....
 
#4
Hallo Chakky und Fluffy,

erstmal Danke für eure Antworten.

Also es befindet sich wohl Anscheinend ein TI LM393 8AK YH1518 Chip auf dem Teil. Anbei ist auch ein Foto.
 

Chromatin

Moderator
Mitarbeiter
#5
Bitte mach mal genauere Messungen der Diode.
Von ganz dunkel schwacher bis starker direkter Beleuchtung.
Das Verhalten von Dioden ist manchmal "weird" also würde ich an deiner Stelle erstmal lernen wie das Teil reagiert. Und die Werte direkt ausgeben. Umrechnen kannst du später, das ist dann er leichte Teil.

Hier nochmal der Chip:
Analog-Komparator – RN-Wissen.de

Ich dachte erst es wäre der ein einfacher Transistor.

Edit und Btw: Wie kommst du ueberhaupt auf die 3,3 V? Müsstest du nicht eher irgendwas in Milli-Ampere vom Sensor erwarten?

Und nochmal Edit: Du hast da einen Photowiderstand - keinen Transistor oder Diode :p
 
#6
Hallo Chromatin,

Danke für die Infos :) ich muss gestehen ich bin im Sensor und Digitaltechnik-Bereich nicht so Fit ... aber ich gebe mein bestes.

Wie kommst du ueberhaupt auf die 3,3 V? Müsstest du nicht eher irgendwas in Milli-Ampere vom Sensor erwarten?
Wenn ich ehrlich bin eine gute Frage.... Also zunächst will ich ja wissen welche Input Spannung am A/D Wandlers liegt. Hier verwende ich ja den MCP3008. Hier verwende ich diese Formel.

U2 = Uref * (ADC / 1024)

Da der MCP3008 über den 3.3 V pin am Pi angeschlossen ist wird das zu Uref. Bei der Berechnung des Wiederstandes hab ich ebenfalls 3.3 eingesetzt da auch der Sensor über 3.3V angeschlossen ist.



Ich habe mir die Werte nun einmal einzeln unter verschiedenen Beleuchtungsverhältnissen ausgeben lassen...


DUNKEL (Fotowiederstand wurde komplett abgedunkelt)
--------------------------------------------------------------------------------------------------------------------------------------------------------
78.0 lux
analog_value 867
resistance 1.81084198385
voltage 2.79404296875
70.4 lux
analog_value 860
resistance 1.90697674419
voltage 2.771484375
64.6 lux
analog_value 854
resistance 1.9906323185
voltage 2.7521484375
63.7 lux
analog_value 853
resistance 2.00468933177
voltage 2.74892578125
63.7 lux
analog_value 853
resistance 2.00468933177
voltage 2.74892578125
63.7 lux
analog_value 853
resistance 2.00468933177
voltage 2.74892578125
66.4 lux
analog_value 856
resistance 1.96261682243
voltage 2.75859375
76.9 lux
analog_value 866
resistance 1.82448036952
voltage 2.7908203125
60.2 lux

-----------------------------------------------------------------------------------------------------------------------------------

Hell (Zimmer Beleuchtung)

3.4 lux
analog_value 549
resistance 8.65209471767
voltage 1.76923828125
3.4 lux
analog_value 550
resistance 8.61818181818
voltage 1.7724609375
3.4 lux
analog_value 550
resistance 8.61818181818
voltage 1.7724609375
3.4 lux
analog_value 550
resistance 8.61818181818
voltage 1.7724609375
3.4 lux
analog_value 547
resistance 8.72029250457
voltage 1.76279296875
3.4 lux
analog_value 547
resistance 8.72029250457
voltage 1.76279296875
3.4 lux
analog_value 547
resistance 8.72029250457
voltage 1.76279296875
3.4 lux
analog_value 548
resistance 8.68613138686
voltage 1.766015625
3.4 lux
analog_value 548
resistance 8.68613138686
voltage 1.766015625
3.4 lux
analog_value 547
resistance 8.72029250457
voltage 1.76279296875
3.4 lux
analog_value 547
resistance 8.72029250457
voltage 1.76279296875

---------------------------------------------------------------------------------------------------------------------------------------------
direkte Beleuchtung

0.0 lux
analog_value 79
resistance 119.620253165
voltage 0.25458984375
0.0 lux
analog_value 80
resistance 118.0
voltage 0.2578125
0.0 lux
analog_value 81
resistance 116.419753086
voltage 0.26103515625
0.0 lux
analog_value 80
resistance 118.0
voltage 0.2578125
0.0 lux
analog_value 79
resistance 119.620253165
voltage 0.25458984375
0.0 lux
analog_value 80
resistance 118.0
voltage 0.2578125
0.0 lux
analog_value 82
resistance 114.87804878
voltage 0.2642578125
0.0 lux
analog_value 80
resistance 118.0
voltage 0.2578125
0.0 lux
analog_value 79
resistance 119.620253165
voltage 0.25458984375
0.0 lux
analog_value 81
resistance 116.419753086
voltage 0.26103515625
0.0 lux
analog_value 81
resistance 116.419753086
voltage 0.26103515625
0.0 lux
analog_value 80
resistance 118.0
voltage 0.2578125
0.0 lux
analog_value 79
resistance 119.620253165
voltage 0.25458984375
0.0 lux
analog_value 81
resistance 116.419753086
voltage 0.26103515625
Ein Oszi habe ich leider nicht zur verfügung ... ich habe das mal mit dem Smartphone getestet... Zumindest bei Zimmerbeleuchtung bekomme ich auf dem Smartphone ähnliche Werte .... aber das ist wohl eher Zufall da der Rest ja komplett daneben liegt
 
#7
Hiho,
Grundsätzlich sind Einheiten immer super, hier könnte es sich nämlich auch um mV oder V handeln, großer unterschied.

Zu deinen Angaben:

Da stimmt etwas nicht:
Bei direkter Beleuchtung 0Lux?
Lux - Wikipedia

BTW:
Habe mir den Chip mal angeschaut.
Schaue hier
und dieses Suchergebniss dürfte eher was für dich sein.

Gruß

Fluffy
 
#8
Hallo Fluffy,

Da stimmt etwas nicht:
Bei direkter Beleuchtung 0Lux?
Ja das war ja der Grund warum ich mich hier an euch wende, ich vermute ich mache da irgendwas mit der Umrechnung falsch.

Light Sensor LM393 ist aber auch nicht richtig ... der LM393 ist doch nur der Comperator ?

Danke für den Link habe jetzt mal das Light Level nach dem Code in diesem Link berechnen lassen. Das sieht schon brauchbarer aus ... ich weiß blos nicht was die hier mit Light Level meinen ? Sind das Lux ? oder welche Einheit ist das Light Level
 

Chromatin

Moderator
Mitarbeiter
#9
Also erstmal - bevor du code schreibst, solltest du "messen". Da bringt dir kein Code etwas, wenn du die Signale/Outputs deiner Bauteile nicht kennst oder verstehst. Volt/Multimeter ist Standardwerkzeug.

Light Sensor LM393 ist aber auch nicht richtig ... der LM393 ist doch nur der Comperator ?
Dein geposteter Chip besitzt einen Photowiderstand und den LM393 bereits an Board. Du hast auf diesem Board also bereits die komplette Schaltung, die du benötigst. Alles gut soweit.

Also was du jetzt erstmal tun solltest, ist, das Teil mit der Betriebsspannung zu versorgen. Stelle die Ausgangsspannung durch messen sicher. Dann beleuchte das Teil und gib erstmal die Rohdaten aus. Wenn das plausibel ist - arbeite an der Umrechnung.

Btw- welchen MuC benutzt du denn? Die meisten haben doch einen A/D Wandler an Bord?
 

Chromatin

Moderator
Mitarbeiter
#10
@Old_Pirate

Sorry, jetzt hab ich erst deine Ausgaben bemerkt :)

Also das sieht doch schonmal gut aus.

Bei deinem Bauteil ist es so: Je größer die Lichtintensität, desto größer der Widerstand. Also 0.25V bei direkter Bestrahlung vs. 2,79 V bei Dunkelheit ist prinzipiell erstmal in Ordnung.

Drehe die Werte also mal "um" und prüfe nochmal gegen deine Smartphone Angaben - Dass die Werte im Mittelfeld passen ist somit plausibel (bei ~ 1.7 V und 3.3 V Speisung)

Den Poti auf dem Board musst du benutzen um die "Schaltschwelle" einzustellen.

Benutzt du den Analog oder Digital Ausgang?


@Fluffy
Grundsätzlich sind Einheiten immer super, hier könnte es sich nämlich auch um mV oder V handeln, großer unterschied.
Die Specs weisen ganz klar V aus. Diese Dinger arbeiten immer im V Bereich :p
 
#11
also ich nutze den Analogausgang der Digitalausgang gibt mir ja nur 1 oder 0 aus ich will aber ja die Lux Messen ist doch richtig oder ?
Der Poti ist ja auch nur für den Digitalausgang wann der auf 0 oder 1 schaltet ?

Was meinst du denn mit dreh die Werte mal um ?

Ich nutze das ganze übrigens nicht an einem MuC sonder an einem PI deshalb hab ich auch einen AD Wandler extra zwischen geschaltet.. der PI hat ja keinen.
 

Chromatin

Moderator
Mitarbeiter
#12
Was meinst du denn mit dreh die Werte mal um ?
Wenn du davon ausgehst dass mehr Licht == höherer Widerstand ist, dann istr es richtig, dass du bei voller Beleuchtung weniger Volt hast - also in deiner Rechnung weniger Lux.

Nimm die Ausgangsspannung (3,3 V bei dir) und ziehe die gemessene Spannung ab, dann hast du das Delta. Damit berechnest du die Lux.

Aber vergewissere dich bitte, dass du auch wirklich 3,3 V vom PI bekommst!
 
#13
erstmal Danke für deine Geduld ^^ ... allerdings muss ich jetzt doch nochmal nachfragen :).

Kannst du mir bitte genau erklären was du mit Delta meinst bzw. welchen Wert ich in meiner Lux rechnung nun genau ersetzen muss.

Ich check nämlich grade nicht mehr so recht durch:confused:
 
Oben