mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LDR am ADC: logarithmieren, Temperatur kompensieren?


Autor: Jörg H. (idc-dragon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich baue gerade einen Helligkeitssensor mit uC, für draußen. Die Optik 
habe ich grad fertig, ein diffuser (Halb)Ellipsiod vor dem LDR sammelt 
von vorn wie von der Seite etwa gleich viel Licht ein, bin recht 
zufrieden damit.

Nun geht es an die Analogtechnik vor dem ADC. Ich will möglichst den 
ganzen Dynamikbereich erfassen können, von pralle Sonne bis Mondlicht. 
Der LDR ändert seinen Widerstand enorm, 300 Ohm bis Megaohm, gibt es 
eine passende Schaltung um das zu logarithmieren oder so? Soll im 
hochohmigen Fall auch nicht störanfällig sein. Mit Bereichsumschaltung 
möchte ich ungern arbeiten. So furchtbar genau brauche ich es auch 
nicht, sondern halt nur die gesamte Skala. Ich möchte allerdings schon 
zwischen praller Sonne und leicht bewölkt unterscheiden können.
Ich habe eine Schaltung mit Transistor in OP-Rückkopplung 
gesehen(http://www.elexs.de/messen6.html), weiß aber nicht wie 
praxistauglich sie ist. Vielleicht geht's auch irgendwie primitiv ohne 
OP?

Ferner mache ich mir Gedanken, ob eine Temperaturkompensation nötig ist 
und wie ich sie ausführe. Ginge auch in Software, aber vielleicht fällt 
das in einer trickreichen Schaltung ja bereits ab.

Danke für Tipps!

Autor: 2920 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die logarithmische Lichtskala ist was fuer Wissenschaftler. Fuer 
pragmatische Energietechniker ist weniger als 20% eher uninteressant, 
daher ist die lineare Skala vorzuziehen.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sehr viel einfacher funktioniert als solche Spannungsmessung oder 
Logarithmierung: Den LDR als frequenzbestimmendes Bauteil an einem NE555 
Oszillator (besser:TLC555) verwenden und mit dem Controller diese 
Frequenz messen (z.B. per Timer Capture). Das funktioniert in sehr 
weitem Bereich, auch wenn man bei 16bit Timer u.U. dynamisch den 
Prescaler umschalten muss (ein 32bit Timer ist hier im Vorteil).

Autor: Jörg H. (idc-dragon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, eine Zeitmessung erscheint vielversprechend, weitere Recherche 
gestern brachte mich auch in die Richtung.

Einen externen Oszillator brauche ich wohl nicht: Mein uC (Atmel Mega8) 
hat einen Komparatoreingang, der auch einen Timer Capture und Interrupt 
auslösen kann. Damit sollte man es recht genau "fangen" können. Bei 
großen Zeiten läuft mir der Timer über, da muß ich extern zählen.

Also den Kondensator zwischen Masse und Komparatoreingang (den kann ich 
auch als Ausgang betreiben und den Kondensator so gezielt aufladen oder 
entladen), den LDR von dort an einen weiteren Ausgang, den ich zur 
Messung auf High oder Low setze.

Im Moment denke ich gerade darüber nach, ob ich eine Art "dual Slope" 
machen könnte, um die Toleranz des Kondensators und der Betriebsspannung 
rauszukürzen.

Das Thema Temperaturkompensation des LDR ist noch offen.

Autor: Jörg H. (idc-dragon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: "dual Slope" ist ja ganz einfach, ich hatte grad ein Brett vor 
dem Kopf: Ich kann ja in einem zweiten Durchgang alternativ zum LDR den 
Kondensator über einen bekannten Widerstand laden und wiederum die Zeit 
messen. Dann brauche ich nur damit normieren, Größe des Kondensators und 
Betriebsspannung fallen raus.

Die einzige Fehlerquelle bleibt jeweils der Innenwiderstand des 
Ausgangstreiber, der addiert sich zum LDR oder Kalibrierwiderstand. Und 
ich hoffe, die Ausgänge sind im tri-state hochohmig genug.

Aber schon ganz nett, was mit mit Software und nur 2 externen Bauteilen 
(hoffentlich) an Genauigkeit hinkriegen kann. Sollte für die Anwendung 
dicke ausreichen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.