Forum: Mikrocontroller und Digitale Elektronik Licht/Frequenz-Wandler auslesen


von Jay M. (blubb33)


Lesenswert?

Ich möchte gerne eine Photodiode TSL235 
(http://www.ti.com/lit/ds/symlink/tsl235.pdf) auslesen.
Die Verschaltung gestaltet sich ja denkbar einfach: Pin1 GND, Pin2 5V 
(mit 100n Kerko) und Pin 3 zu GPIO meines Raspberry Pi. In meinem Fall 
ist das die GPIO 14, welche ich als Eingang geschaltet habe:
1
GPIO.setup(14, GPIO.IN)

Der Sensor liefert mir ja eine Frequenz (50% square wave) als Output in 
Abhängigkeit der Lichtintensität.
In Anlehnung an dieses Tutuorial 
(http://playground.arduino.cc/Main/TSL235R) habe ich das Auslesen via 
Python wie folgt versucht:
1
frequency = 0
2
begin = time.time()
3
end = begin
4
while (end-begin) < 1:
5
    end = time.time()
6
    GPIO.wait_for_edge(14, GPIO.FALLING)
7
    frequency += 1
8
print frequency

Es wird also jede fallende Flanke über einen Zeitraum von 1000ms bzw. 1 
sec gezählt.

Leider beginnen schon hier die Probleme: Die Messwerte sind instabil, 
d.h. sie schwanken teilweise erheblich. Zudem scheint mir der 
Wertebereich einfach nicht korrekt:
Unter einer 50W Leuchtstoffröhre (ca. 15cm Abstand) erhalte ich Werte im 
Bereich um 300. In dem Tutorail sind Werte um 100.000 und mehr 
beschrieben. Da stimmt doch schon grundsätzlich irgendetwas nicht.
Oder habe ich da einen grundsätzlichen Denkfehler? 300 würden ja 300 Hz 
entsprechen. Und das wäre ja ziemlich wenig, da ich ja bis 300kHz 
erwarte.

von Oldie (Gast)


Lesenswert?

Kommst du nicht irgendwie an ein Oszilloskop, um den
Lichtsensor zu testen?

Ich kenne mich mit raspi und python nicht aus -
damit könnte man immerhin nachweisen, ob der Sensor etwa
so funktioniert, wie es im Datenblatt beschrieben ist.

Wenn ja, ist das Programm wohl noch nicht perfekt...

von Mike (Gast)


Lesenswert?

Jay Myon schrieb:
> Und das wäre ja ziemlich wenig, da ich ja bis 300kHz erwarte.

Und du bist sicher, dass deine Programmschleife im 300kHz-Takt die 
Flanken zählen kann?
Das würde man wohl eher einem Hardware-Timer überlassen, der das 
Sensorsignal als externen Takt bekommt.

von Jay M. (blubb33)


Lesenswert?

Mike schrieb:
> Und du bist sicher, dass deine Programmschleife im 300kHz-Takt die
> Flanken zählen kann?

Sicher natürlich nicht. Aber soweit ich weiß sollten mit dem time module 
bis 1Mhz gehen. Und in dem beschriebenen Tutorial wurde das ja auch 
gemacht. Also dachte ich mir, dass es problemlos möglich wäre.

> Das würde man wohl eher einem Hardware-Timer überlassen, der das
> Sensorsignal als externen Takt bekommt.

Habe mich entsprechend noch nicht mit so etwas auseinandergesetzt. Wie 
sieht denn so etwas z.B. aus? Ist das ein IC-Baustein? Oder wie 
verarbeite ich die Information per Hardware?

von Jay M. (blubb33)


Lesenswert?

Mike schrieb:
> Das würde man wohl eher einem Hardware-Timer überlassen, der das
> Sensorsignal als externen Takt bekommt.

Welcher Hardware-Timer wäre denn in diesem Zusammenhang zu empfehlen. 
Ich habe noch nie einen solchen benutzt und weiß nicht genau worauf ich 
zu achten habe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.