Forum: Mikrocontroller und Digitale Elektronik Bessere Helligkeitsmessung mit LED an MCU-Pin


von Tim  . (cpldcpu)


Lesenswert?

Die Helligkeitsmessung mit einer LED an einem Microcontroller-Pin ist 
ein beliebter Hack der in vielen Varianten durch das Netz geistert. Ein 
Beispiel wird auch hier beschrieben:

https://www.mikrocontroller.net/articles/Lichtsensor_/_Helligkeitssensor

Das Problem ist, dass LEDs zwar als Lichtsensoren funktionieren, aber 
nur sehr kleine Photoströme liefern (<500nA). Selbst mit einem großen 
Sense-Widerstand lassen sich kaum brauchbare Spannungen erzeugen, die 
direkt mit einem ADC ausgelesen werden können.

Daher wird häufig der Trick genutzt, dass die Sperrschichtkapazität (Und 
Eingangskapazität des GPIO) der LED aufgeladen und danach über den 
Photostrom entladen wird. Über einen Eingangspin lässt sich die 
Entladezeit messen, welche idealerweise proportional zum Photostrom ist.

Prinzipiell bastelt man sich einen Ein-Rampen Integrierenden ADC.

So weit, so gut. Wer das schon ausprobiert hat, weiss das es eher 
schlecht als recht funktioniert. Die Messung dauert sehr lange und ist 
extrem ungenau.

Ich frage mich jetzt, ob es nicht möglich ist, die Genauigkeit zu 
verbessern. Kennt jemand noch bessere Methoden?

Könnte man über den Pull-Up Widerstand Ladung injezieren und damit einen 
Sigma-Delta ADC basteln?

von PD (Gast)


Lesenswert?

> Kennt jemand noch bessere Methoden?
Eine echte Photodiode.

von Oliver S. (phetty)


Lesenswert?

BH1750FVI verwenden.

von Tim  . (cpldcpu)


Lesenswert?

PD schrieb:
>> Kennt jemand noch bessere Methoden?
> Eine echte Photodiode.

Das ist unsportlich und von der Ansteuerung auch nicht einfacher :) Dann 
bitte einen Phototransistor.

Oliver Stellebaum schrieb:
> BH1750FVI verwenden.
Olles Teil. Da gibt es Besseres.

von Ulrich F. (Gast)


Lesenswert?

Tim    schrieb:
> Olles Teil.
Da ich eine Tüte Fotowiderstände habe, sind das die ollen Teile meiner 
Wahl.

von sauber (Gast)


Lesenswert?

Tim    schrieb:
> PD schrieb:
>>> Kennt jemand noch bessere Methoden?
>> Eine echte Photodiode.
>
> Das ist unsportlich und von der Ansteuerung auch nicht einfacher :) Dann

Klingt für mich nach, sich mit Trikot und Bier ein Fußballspiel vorm 
Fernseher reinzuziehen und wenn die eigene Mannschaft gewonnen hat, zu 
prahlen wie gut man doch war und sonst nur das Unvermögen anderer zu 
erkennen. Wer sportlich sein will muß schon selbst etwas machen und 
schieben lassen hilft nicht.

von Tim  . (cpldcpu)


Angehängte Dateien:

Lesenswert?

Ok, habe die Idee von oben mal testweise implementiert. Anbei zwei 
Oszilloskop-Screenshots.

Links der normale Single-Slope Integrierender Wandler.

Rechts die neue Version. Wenn die untere Schwelle erreicht ist, lade ich 
über einen kurzen Puls über den Pull-Up Widerstand den 
Integrationskondensator so weit auf, dass ich wieder über die Schwelle 
komme. Dadurch kann ich in der gleichen Zeit mehr Bits generieren und 
das "Komparator"-Rauschen (vom GPIO-Digitaleingang) reduzieren.

Im Prinzip entspricht das einem "Continuously-integrating converter", 
wenn ich den Wikipedia-Artikel richtig verstehe. 
(http://en.wikipedia.org/wiki/Integrating_ADC)

Gefühlt verbessert sich die Reproduzierbarkeit. Allerdings ist die 
Ladungsinjektion über den Pull-Up Widerstand nicht sehr genau und könnte 
zusätzliches Rauschen erzeugen.

von Tim  . (cpldcpu)


Lesenswert?

sauber schrieb:
> Klingt für mich nach, sich mit Trikot und Bier ein Fußballspiel vorm
> Fernseher reinzuziehen und wenn die eigene Mannschaft gewonnen hat, zu
> prahlen wie gut man doch war und sonst nur das Unvermögen anderer zu
> erkennen. Wer sportlich sein will muß schon selbst etwas machen und
> schieben lassen hilft nicht.

Ganz so einfach sind Photodioden nun doch nicht zu verwenden.

von Harald W. (wilhelms)


Lesenswert?

Tim    schrieb:

> Ganz so einfach sind Photodioden nun doch nicht zu verwenden.

Die sind aber um Grössenordnungen empfindlicher als LEDs.
Typisch muss man ja auch nicht alle Messprobleme direkt mit
einem "µC" erschlagen, sondern kann ja auch ein vernünftiges
analoges "Frontend" verwenden. Bei privaten Projekten sollte
ja wohl auch die Einsparung von einigen Cent (<1€) kaum eine
Rolle spielen.
Gruss
Harald

von Peter D. (peda)


Lesenswert?

Ich sach mal, wenn eine LED als Lichtsensor auch nur einen einzigen 
Vorteil hätte, würde man das auch in praktischen Schaltungen finden und 
nicht nur in Edelbastler-Hacks.

Eine mechanische Lösung LED+Fototransistor in einer Frontplatte ist 
vermutlich deutlich einfacher und kostengünstiger, als sich mit geringer 
Sensitivität, Reproduzierbarkeit und Störungen rumzuplagen.

von Harald W. (wilhelms)


Lesenswert?

Peter Dannegger schrieb:

> Eine mechanische Lösung LED+Fototransistor in einer Frontplatte ist
> vermutlich deutlich einfacher und kostengünstiger, als sich mit geringer
> Sensitivität, Reproduzierbarkeit und Störungen rumzuplagen.

Nun, wenn man Millionen von Geräten bauen will, spielt die Einsparung
von einigen Cent schon eine Rolle. Für den Privatbastler ist das m.E.
nicht von Belang.

von Tim  . (cpldcpu)


Lesenswert?

Es handelt sich um einen Hack!

Für mich steht die Frage im Vordergrund, wie man mit einem MCU und 
möglichst wenigen externen Bauteilen Ströme im nA-Bereich messen kann.

Es gibt allerdings tatsächlich einige Anwendungen für LEDs als 
Lichtsensoren. z.B. wenn eine spezielle Spektralantwort gewünscht ist. 
Silizium ist vor allem im Infraroten empfindlich. LEDs sind für 
Wellenlängen kleiner ihres Abstrahlspektrums empfindlich. Damit ist z.B. 
eine rote LED besser an die Spektralantwort des menschlichen Auges 
angepasst als eine Silizium-PD.

von Peter D. (peda)


Lesenswert?

Harald Wilhelms schrieb:
> Nun, wenn man Millionen von Geräten bauen will

Dann poste dochmal einen Link auf so ein kommerzielles Gerät mit LED als 
Sensor.

von Tim  . (cpldcpu)


Lesenswert?


von Peter D. (peda)


Lesenswert?

Tim    schrieb:
> wie man mit einem MCU und
> möglichst wenigen externen Bauteilen Ströme im nA-Bereich messen kann.

Da der Leckstrom des MC bis zu 1µA betragen kann, wirds mit nA wohl 
Essig sein.
Vielleicht spezielle teure OPVs mit geringem Bias-Strom (OPA111: 1pA).

von Tim  . (cpldcpu)


Lesenswert?

Peter Dannegger schrieb:
> Tim    schrieb:
>> wie man mit einem MCU und
>> möglichst wenigen externen Bauteilen Ströme im nA-Bereich messen kann.
>
> Da der Leckstrom des MC bis zu 1µA betragen kann, wirds mit nA wohl
> Essig sein.
> Vielleicht spezielle teure OPVs mit geringem Bias-Strom (OPA111: 1pA).

Guter Punkt.

Atmel gibt typ <50nA an. Die 1µA sind wahrscheinlich die Testspec im 
finalen Bauteiltest und durch das Testequipment, bzw. die Testzeit 
limitiert. Das schließt natürlich trotzdem ein Fehlbauteil nicht aus.
Für die Massenproduktion ist das wohl nichts, aber als Hack reicht es...

Wenn der Eingang auf Vcc/2 gebaised ist und man bei Raumtemperatur 
arbeitet, sollten die Leckströme zusätzlich noch einmal deutlich 
geringer ausfallen, da dann die Schutzdioden weniger Lecken.

von Lurchi (Gast)


Lesenswert?

Wie groß der Photostrom von der LED ist, hängt stark von der Type ab. 
Ein erster Schritt wäre da ggf. ein paar durchzumessen. Im Datenblatt 
findet man den Wert in der Regel nicht.

Den Vorteil den die LED als Sensor bietet ist vor allem, dass man kein 
zusätzliches Loch in der Frontplatte braucht.

Ein Möglichkeit wäre ggf. noch die Kapazität am Ausgang etwas zu 
vergrößern, so dass man etwas mehr als die Sperrschaichtkapazität hat. 
Also etwa 1-10 nF zusätzlich, ggf. über 100 Ohm isoliert. Die Spannung 
könnte man dann über den ADC messen. Über die Zeit die man der 
Photodiode lässt den Kondensator zu laden kann man den Bereich festlegen 
- die Helligkeiten gehen schließlich oft über einen großen Bereich. Es 
könnte von Vorteil sein hier vielfache von 10 ms zu nutzen um 100 Hz 
Störungen zu unterdrücken.

von Harald W. (wilhelms)


Lesenswert?

Tim    schrieb:

> Es handelt sich um einen Hack!

Ein "Hack" ist m.E. die Modifikation eines bestehenden Gerätes.
Hier handelt es sich eher um eine sog Kunstschaltung.
Oder sehe ich das falsch?

von chris_ (Gast)


Lesenswert?

>Wie groß der Photostrom von der LED ist, hängt stark von der Type ab.
>Ein erster Schritt wäre da ggf. ein paar durchzumessen. Im Datenblatt
>findet man den Wert in der Regel nicht.

Das stimmt. Ich habe einige Leds für diese Anwendung untersucht:
Beitrag "led debugging"

Am meisten Photstrom haben ultrahelle rote oder gelbe LEDs gebracht.

von Tim  . (cpldcpu)


Lesenswert?

Lurchi schrieb:
> Wie groß der Photostrom von der LED ist, hängt stark von der Type ab.
> Ein erster Schritt wäre da ggf. ein paar durchzumessen. Im Datenblatt
> findet man den Wert in der Regel nicht.

Ich verwende eine $0.02 0603 rote SMD led. Also worst case... Der 
Photostrom wird wohl hauptsächlich von der Chipgröße abhängen.

> Ein Möglichkeit wäre ggf. noch die Kapazität am Ausgang etwas zu
> vergrößern, so dass man etwas mehr als die Sperrschaichtkapazität hat.
> Also etwa 1-10 nF zusätzlich, ggf. über 100 Ohm isoliert. Die Spannung
> könnte man dann über den ADC messen. Über die Zeit die man der
> Photodiode lässt den Kondensator zu laden kann man den Bereich festlegen
> - die Helligkeiten gehen schließlich oft über einen großen Bereich. Es
> könnte von Vorteil sein hier vielfache von 10 ms zu nutzen um 100 Hz
> Störungen zu unterdrücken.

Im Moment habe ich tatsächlich hauptsächlich Probleme mit geringer 
Helligkeit (<10 lx, wenn man meinem handy trauen kann). Hier scheint die 
Anfangsladung Einfluss auf die Messung zu haben, bzw. die Messung dauert 
einfach zu lange. (>200ms)

Mit einem größeren Kondensator würde das Problem nur noch schwieriger 
werden. Allerdings könnte man dann evtl. Tatsächlich den ADC verwenden. 
Der S&H Kondensator macht das system allerdings wieder schwerer 
beherrschbar. Beim Starten des ADC wird Ladung abgezogen.

Nach oben hin lässt sich ein erstaunlicher Dynamikumfang erreichen -> ca 
10klx.

Ohne LED hält sich die Ladung übrigens erstaunlich stabil auf dem Pin. 
der Leckstrom wird bei deutlich unter 50nA liegen.

von Tim  . (cpldcpu)


Lesenswert?

Harald Wilhelms schrieb:
>> Es handelt sich um einen Hack!
>
> Ein "Hack" ist m.E. die Modifikation eines bestehenden Gerätes.

Hier werden auch Bauteile in einer nicht vorgesehenen Weise verwendet.

> Hier handelt es sich eher um eine sog Kunstschaltung.
> Oder sehe ich das falsch?

Du könntest den HaD Leuten ja vorschlagen, Ihre Seite in "Kunstschaltung 
a day" umzubennenen :)

von Tim  . (cpldcpu)


Lesenswert?

chris_ schrieb:
> Am meisten Photstrom haben ultrahelle rote oder gelbe LEDs gebracht.

Das kann man wahrscheinlich darüber erklären, dass die LEDs in einem 
kurzwelligeren Bereich photoempfindlich sind, als sie abstrahlen. 
Smaragdgrüne und Blaue LEDs sind demnach eher im UV empfindlich.

von chris_ (Gast)


Lesenswert?

>Das kann man wahrscheinlich darüber erklären, dass die LEDs in einem
>kurzwelligeren Bereich photoempfindlich sind,

Dass es etwas mit der Wellenlänge zu tun haben könnte, daran habe ich 
auch schon gedacht.
Wenn ich mich richtig erinnere, waren die roten LEDs die ersten LEDs die 
es gab. Allerdings ist rotes Licht langwelliger als grünes oder blaues 
Licht.
Ich glaube, Silizium ist im roten Bereich empfindlicher. Es gab ja auch 
schon sehr früh IR-LEDs und blaube LEDs erst seit ein paar Jahren.
Bei meinen Versuchen hatte es mich gewundert, dass die orangen LEDs 
etwas besser waren.

von chris_ (Gast)


Lesenswert?

Tim schrieb:
>So weit, so gut. Wer das schon ausprobiert hat, weiss das es eher
>schlecht als recht funktioniert. Die Messung dauert sehr lange und ist
>extrem ungenau.

Darauf bin ich beim Bau meines Ultra-Low-Cost Roboters gestoßen:

http://www.hobby-roboter.de/forum/viewtopic.php?f=4&t=131

Dort werden für die Linienverfolgung 2 LEDs verwendet, die jeweils 
abwechselnd als Beleuchtung und Photosensor betrieben werden.
Da vom reflektierten Licht nur wenig zurück kommt, kann der Roboter nur 
in sehr kleinen Schritten fahren. Das sieht aber trotzdem lustig aus.

Für Beitrag "led debugging" habe ich später eine 
direkte Spannungsmessung mit dem ADC eines Arduino verwendet. Mit etwas 
Filterung kommt man dann in einen Datenübertragungsbereich von bis zu 
1KBit.

von Harald W. (wilhelms)


Lesenswert?

Tim    schrieb:

> Du könntest den HaD Leuten ja vorschlagen, Ihre Seite in "Kunstschaltung
> a day" umzubennenen :)

Ja, es ist  leider Mode geworden, altbekannte deutsche Wörter in
neue, englischklingende Wörter umzuwandeln, die nur die Hälfte der
Deutschen verstehen. :-(

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Ich würde erstmal mit einem Multimeter die Kennlinie aufnehmen, was 
bessere Ergebnisse liefert, die Fotospannung oder der Sperrstrom.

Kleine Ströme kann man im 0,2V Bereich messen (0,2V / 10M = 20nA).

von Tim  . (cpldcpu)


Lesenswert?

So. Komme jetzt von ca <5lx bis auf >30klux. Mit einem Dynamikumfang von 
12 Bit bezogen auf den Photostrom. Dafür wird ein 17bit counter mit bis 
zu 256fachem adaptivem oversampling benötigt. Maximale Samplezeit sind 
<200ms.

Ziemlich erstaunlich für eine einfache 0603 LED, keinen ADC und im 
fliegenden Aufbau. Ich werde das einmal direkt zusammenlöten, dann 
sollte die Signalqualität besser werden. Außerdem noch Source 
aufräumen...

von Tim  . (cpldcpu)


Lesenswert?

Peter Dannegger schrieb:
> Ich würde erstmal mit einem Multimeter die Kennlinie aufnehmen, was
> bessere Ergebnisse liefert, die Fotospannung oder der Sperrstrom.
>
> Kleine Ströme kann man im 0,2V Bereich messen (0,2V / 10M = 20nA).

Habe es schon versucht, aber konnte nur bei hoher Helligkeit etwas 
messen. Muss vielleicht noch einen 10M Widerstand auftreiben.

Die direkte Messung der Photospannung habe ich mit dem AVR-ADC bisher 
nicht hin bekommen.

von Harald W. (wilhelms)


Lesenswert?

Tim    schrieb:

> keinen ADC

Natürlich mit einem ADC. Anscheinend ist das Wissen, das ein ADC
nicht unbedingt aus einem IC mit vielen Pins bestehen muss,
verloren gegangen. :-)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Tim    schrieb:
> Die direkte Messung der Photospannung habe ich mit dem AVR-ADC bisher
> nicht hin bekommen.

Es wäre einen Versuch wert, einen AVR mit integriertem Opamp vor dem ADC 
zu verwenden, wie z.B. den Tiny25/45/85. Abgesehen von der wahlweisen 
Verstärkung hat man dann doch einen recht hochohmigen Eingang, lt. 
Datenblatt etwa 100 MOhm.

von chris_ (Gast)


Lesenswert?

Peter Dannegger (peda) schrieb
>Habe es schon versucht, aber konnte nur bei hoher Helligkeit etwas
>messen. Muss vielleicht noch einen 10M Widerstand auftreiben.

>Die direkte Messung der Photospannung habe ich mit dem AVR-ADC bisher
>nicht hin bekommen.

Das sollte aber gehen, bei mir funktioniert das super. Ich stecke 
einfach eine Rote Ultrabrigt 5mm LED an einen Arduino Uno und gebe die 
Spannung aus.

Programm:
http://www.arduino.cc/en/Tutorial/AnalogReadSerial

von chris_ (Gast)


Lesenswert?

Hier ist noch ein Beispiel für einen Solarvogel mit zusätzlichen 
Lichsensor, den ich mal gemacht habe:

http://www.hobby-roboter.de/forum/viewtopic.php?f=5&t=43#p545

( Die LED dient dazu, Drehungen zu detektieren )

von chris_ (Gast)


Lesenswert?

Der Solarvogel funktioniert allerdings noch mit Zeitmessung der 
Entladung und nicht mit der Messung der Spannung. Im Code stehen die 
Untersuchungsergebnisse für die verschiedenen LED-Typen und 
Lichtbedingungen.

von Joachim B. (jar)


Lesenswert?

Ulrich F. schrieb:
> Da ich eine Tüte Fotowiderstände habe, sind das die ollen Teile meiner
> Wahl.

unsportlich bin ich auch, ich kaufe die sogar nach mit einem 
zusätzlichen R am ADC, ist einfach und schnell, was soll ich da 
experimentieren, ich habe nicht (mehr) viel Zeit.

: Bearbeitet durch User
von Tim  . (cpldcpu)



Lesenswert?

Der Weg ist das Ziel. Habe wieder etwas gelernt.

Anbei ein paar Bilder.

- Photo vom Set-Up. Die rote 0603 SMD LED scheint so ziemlich den 
kleinstmöglichen Die zu haben und ist damit eher unempfindlich. Eine 
Orange 5mm LED mit war ca. 10x empfindlicher.

- Kalibrierung gegen den Lichtsensor in meinem Handy. Wie man sieht, 
erreicht man ca. >3000:1 Dynamikumfang. Mit der 5mm LED etwas mehr. Bei 
niedrigen Lichtstärken gibt es einen Offset, da die integration 
abgebrochen werden muss. Allerdings funktionierte hier der Lichtsensor 
im Handy auch schon nicht mehr richtig.

- Oszilloskopbild des per Software implementierten continuous 
integration Wandlers.

: Bearbeitet durch User
von Tim  . (cpldcpu)


Lesenswert?

Matthias Sch. schrieb:
> Tim    schrieb:
>> Die direkte Messung der Photospannung habe ich mit dem AVR-ADC bisher
>> nicht hin bekommen.
>
> Es wäre einen Versuch wert, einen AVR mit integriertem Opamp vor dem ADC
> zu verwenden, wie z.B. den Tiny25/45/85. Abgesehen von der wahlweisen
> Verstärkung hat man dann doch einen recht hochohmigen Eingang, lt.
> Datenblatt etwa 100 MOhm.

Dumm, dass die LED in meinem Set-up an den falschen Pins hängt.

Hängt der Opamp auch an den single-Rail Eingängen?

von Tim  . (cpldcpu)


Lesenswert?

Harald Wilhelms schrieb:
>> keinen ADC
>
> Natürlich mit einem ADC. Anscheinend ist das Wissen, das ein ADC
> nicht unbedingt aus einem IC mit vielen Pins bestehen muss,
> verloren gegangen. :-)

Hat man die ADC früher etwa als Software implementiert? :)

von chris_ (Gast)


Lesenswert?

>- Oszilloskopbild des per Software implementierten continuous
>integration Wandlers.

Sieht gut aus. Wie genau funktioniert Dein Wandler?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Tim    schrieb:
> Hängt der Opamp auch an den single-Rail Eingängen?

Lt. Datenblatt des Tiny25 hat der ADC im Single- als auch im 
Differential Mode 100 MOhm Eingangswiderstand. Sieht also so aus, als ob 
er immer dran hängt.

von Oliver S. (phetty)


Lesenswert?

Tim    schrieb:
> Olles Teil. Da gibt es Besseres.

Zu welchem Preis?

von Tim  . (cpldcpu)


Lesenswert?

chris_ schrieb:
>>- Oszilloskopbild des per Software implementierten continuous
>>integration Wandlers.
>
> Sieht gut aus. Wie genau funktioniert Dein Wandler?

Statt den Kondensator nur einmal ab VCC zu entladen, wird der 
Kondensator periodisch durch einen kurzen Puls über den Pull-Up 
Widerstand wieder aufgeladen und bis zur Schaltschwelle entladen. Diese 
Messung wird für 100ms wiederholt.

Das hat einige Vorteile:

 - Die Rampe wird jetzt nur noch über 0.5V gefahren (Eingangshysterese 
der AVR Pins). Dadurch sinkt die Messzeit und es können mehrere 
Messungen gemittelt werden.
 - Durch das Mitteln von vielen Messungen wird Quantisierungsrauschen 
und überlagertes Rauschen am Eingang reduziert.
 - Die LED, bzw. der Eingangspin ist jetzt im Mittel auf ca 0.5VCC 
gebiased. Dadurch verbessert sich die Linearität deutlich (Oben sieht 
man, dass der Entladevorgang ab VCC sehr nichtlinear ist). Außerdem 
sinken die Leckströme über die Clamp-Dioden am I/O Pin.

Etwas unklar ist noch, wie stabil die Ladungsinjektion über den Pull-Up 
ist. Bereits ein oder zwei Taktzyklen reichen aus, um einen Spannungshub 
von >0.5V zu erreichen.

Das ganze ist ziemlich timingkritisch. Werde es wohl noch in Assembler 
umsetzen müssen, um einige Timingfehler auszumerzen.

: Bearbeitet durch User
von Tim  . (cpldcpu)


Lesenswert?

Oliver Stellebaum schrieb:
> Tim    schrieb:
>> Olles Teil. Da gibt es Besseres.
>
> Zu welchem Preis?

Vielleicht der hier? Gibt noch Dutzende mehr.

http://www.ti.com/product/OPT3001/samplebuy

von chris (Gast)


Lesenswert?

>Statt den Kondensator nur einmal ab VCC zu entladen, wird der Kondensator 
periodisch durch >einen kurzen Puls über den Pull-Up Widerstand wieder aufgeladen 
und bis zur Schaltschwelle >entladen. Diese Messung wird für 100ms wiederholt.

Klingt fast so ahnlich wie ein Sigma-Delta Wandler.
Der Algorithmus waere:
Ist die Spannung 0 => kurzer high Puls
Ist die Spannung 1 => kurzer low Puls
Output=Pulse mitteln

Damit muesste die Wandlung noch schneller werden.

von Tim  . (cpldcpu)


Lesenswert?

chris schrieb:
>>Statt den Kondensator nur einmal ab VCC zu entladen, wird der
> Kondensator
> periodisch durch >einen kurzen Puls über den Pull-Up Widerstand wieder
> aufgeladen
> und bis zur Schaltschwelle >entladen. Diese Messung wird für 100ms
> wiederholt.
>
> Klingt fast so ahnlich wie ein Sigma-Delta Wandler.
> Der Algorithmus waere:
> Ist die Spannung 0 => kurzer high Puls
> Ist die Spannung 1 => kurzer low Puls
> Output=Pulse mitteln
>
> Damit muesste die Wandlung noch schneller werden.

Ja, prinzipiell ist es ein Sigma-Delta Wandler. Der "Low-Puls" ist in 
diesem Fall ein Null-Puls. Die Hysterese der I/O-Eingänge verhindert 
eine feiner aufgelöste Taktung.

von Martin S. (led_martin)


Lesenswert?

Ich experimentiere schon länger in diese Richtung, auch mit RGB-LEDs, 
ausschließlich an ATMEL-Controllern. Habe dabei auch schon Erfolg 
gehabt, aber auch Fehlschläge erlebt, hier meine Erfahrungen:

Der Analog-Komparator der AVRs ist für solche Messungen ganz gut 
brauchbar. Rote, Orangene und gelbe LEDs sind lichtempfindlicher als 
Grüne und Blaue. Grüne und Blaue reagieren nicht auf langwelliges Licht. 
Ein kleiner Kondensator 10pF .. 33pF parallel zur LED macht die 
Messergebnisse, bei der Zeitmessungs-Methode, stabiler, verlängert die 
Messzeit aber erheblich. Mittelwertbildung mehrerer Messungen macht die 
Messung deutlich besser (Eventuell gleitender Mittelwert, wenn oft ein 
aktueller Wert benötigt wird). Bei der Messung kleiner Lichtstärke haben 
Leckströme der LED einen großen Einfluss, die Exemplarstreuungen der 
LEDs sind erheblich, hier kann selektieren helfen, die mit der längsten 
Messzeit, bei Dunkelheit, ist die Beste. Die Leckströme sind deutlich 
temperaturabhängig, hier kann der interne Temperatursensor, den viele 
AVRs haben, und eine Korrekturtabelle helfen.

Recht gute Ergebnisse habe ich mit folgender Methode erzielt, unter 
Verwendung des ADC:

LED laden, dazu ADC-Pin auf Ausgang, auf diesem Kanal eine ADC-Messung 
starten (läd den S/H-Kondensator auf eine definierte Spannung), ADC-Pin 
auf Eingang schalten (Beginn Messzeit), definierte Zeit warten 
(Messzeit), weitere ADC-Messung starten, liefert das Ergebnis. Die 
Messzeit sollte der Helligkeit angepasst werden, eventuell automatisch. 
Wärend dem Mess-Ablauf möglichst nicht auf einen anderen ADC-Kanal 
umschalten, das verschleppt Ladungen, und macht die Messung so 
unsicherer. Falls dies unvermeidlich ist, z.B. Messung an mehreren LEDs, 
kann der Einfluss aber ganz gut rausgerechnet werden.

Mit freundlichen Grüßen - Martin

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.