Fisch´s Projekte-Seite

Projektbeginn: Dezember 2017

DIY Belichtungsmesser / Spotmeter




Nachdem ich mich nun recht ausgiebig mit der Analogfotografie und der damit verbundenen korrekten Belichtung von fotografischen Filmen auseinandergesetzt habe wollte ich das gewonnene Wissen auch vermehrt umsetzen. Wenn es nicht mehr ausreicht einen groben gemittelten Wert des reflektierten Lichts zu messen, sondern auch bestimmte Bereiche des Motivs ausgemessen werden sollen ist ein Spotbelichtungsmesser (engl. Spotmeter) nötig. Hierbei wird das reflektierte Licht durch eine Optik auf eine Ebene projiziert, in dessen Mitte ein Lichtsensor liegt. Viele Spiegelreflexkameras haben einen (bei modernen Digitalen SLR Kameras auch oft mehrere) Lichtsensoren im Bereich der Mattscheibe angebracht. Zwar ist es möglich eine SLR Kamera nur für die Belichtungsmessung zu benutzen, allerdings sind dedizierte Spotbelichtungsmesser handlicher und bieten einige weitere Vorteile zur bestimmung der Belichtungswerte
Bei der Suche nach einem geeigneten Gerät stellte ich schnell fest, dass solche mit dem benötigten Funktionsumfang schnell mehrere hundert Euro kosten. Mit dem Wissen, dass ein Spotmeter auch nur ein Objektiv mit Lichtsensor dahinter ist fing ich an dieses Prinzip an einem Prototyp auszutesten und anschließend in ein Gehäuse als benutzbares Device einzubauen.

Randbedingungen: Kompakt, Grafikdisplay, Helligkeiten messbar von Mondschein bis weißer Schnee mit strahlender Sonne und automatischer Abschaltung.
Als Gehirn des Ganzen nahm ich mir einen STM32F103C8T6; auch zu finden unter der bezeichnung "Bluepill". Dieser Microcontroller kann über die Arduino IDE mit bekannten Vorteilen, wie bestehenden Libraries zu so ziemlich allem, programmiert werden. Das Display ist das weitverbreitete SSD1306 OLED Display mit I2C Schnittstelle und 128 x 64 Monochromen Pixeln.
Als Lichtsensor verwende ich einen einfachen Fotowiderstand (Light Dependent Resistor): PFW551M Nach ein paar Tests mit einem Plastikkasten und vorgestecktem Objektiv stellte ich fest, dass der Spannungsteiler zum Messen des Spannungsabfalls am LDR und somit der Helligkeit nicht gleichzeitig Hell und Dunkles mit ausreichender Genauigkeit messen kann. Um im linearen Bereich der Messwerte des ADC für geringe Lichtmengen zu liegen ist ein Widerstandswert von 100k Ohm nach Masse passend. (Der LDR ist im Spannungsteiler zur Versorgungsspannung hin angeschlossen.) Soll etwas deutlich helleres gemessen werden muss der Widerstand durch einen mit etwa 10k Ohm ersetzt werden. Die Lösung war ein Transistor, welcher durch den Microcontroller einen 10k Widerstand abwechselnd parallel zum 100k schaltet. Hierdurch werden immer beide Werte ermittelt und je nach Lichtsituation entschieden, welcher Messwert zur Berechnung des Lichtwertes verwendet wird.


Für die Stromversorgung sollen kleine LiPo Akkus verwendet werden. Zwei 850mAh 1S Zellen hatte ich noch übrig, welche zu einem 2S Akku mit 6.6V - 8.4V Spannung verschaltet wurden. Da es für die Genauigkeit der Messungen von Vorteil ist der gesamten nachfolgenden Schaltung eine konstante Spannung bereitzustellen nahm ich einen 7805 5V Linearregler. Mit einem effizienteren Step Down hatte ich etwas Probleme bei der Standby Schaltung. Das eben angesprochene Feature der automatischen Abschaltung realisierte ich durch eine selbsthaltende Transistorschaltung. Über einen separaten Taster wird der BC327 Transistor geschaltet, sodass am Spannungsregler die Akkuspannung anliegt und der Microcontroller startet. Sobald der Controller arbeitet wird ein digitaler Ausgang geschaltet, welcher über den BC337 den BC327 weiter bestromt und der "Power On"-Taster losgelassen werden kann. Das Ausschalten erfolgt softwareseitig durch Abgschaltung des Digitalpins ("Enable" im Schaltplan). Diese Schaltung hat einen sehr geringen Standbystrom der sich lediglich durch die Kriechströme der beiden Transistoren zusammensetzt.


Nachdem mithilfe eines schwarzen Plastikgehäuses der optimale Abstand (etwa 17mm ab Flansch) von Objektiv zum Fotowiderstand ermittelt wurde konnte ein erster Prototyp des Gehäuses gedruckt werden. Das Objektiv kam von einer CCTV Überwachungskamera und hat eine Brennweite von 8mm und eine feste Blendenöffnung von f/1.6 ("Computar TV LENS 8mm 1:1.6").
Da das Objektiv das Bild nur auf einen Fingerspitzen breiten Bereich projiziert umfasst das Licht, welches auf den Lichtwiderstand fällt ein sehr großen Bildbereich. Damit sich das Motiv genau ausmessen lässt musste der Öffnungsbereich des Lichtsensors deutlich eingeschränkt werden. Die Scheibe, die direkt vor den Sensor kommt, hat einen Lochdurchmesser von 1mm. Das Objektiv hat ein Gewinde und wird nach Erwärmen des PLA Plastiks gerade in das Gehäuse geschraubt.
Der Auslöser zum Festhalten des aktuellen Wertes soll an der Vorderseite angebracht werden und gut zu drücken sein. Daher hab ich aus etwas Aluminium einen Druckknopf für den SMD Taster gefräst.


Nachdem alle Fehler am Prototyp ausgebessert waren konnte das Gehäuse erneut gedruckt werden. Hier sind alle Einzelteile zu sehen, die anschließend verschraubt oder verklebt wurden.


Um die Scheibe vor dem Verrutschen zu sichern kamen noch zwei Schaumstoffringe als Abstandshalter hinter das Objektiv, welche vermutlich gleichzeitig Streulicht absorbieren.


Der LDR kann nun von hinten eingesteckt werden.
Da hier auch noch etwas Platz vorhanden war und der STM mehr als genug Programmspeicher zur Verfügung hat entschied ich mich noch einen BH1750 I2C Lichtsensor einzubauen. Diesen hatte ich Ursprünglich anstelle des Fotowiderstandes eingeplant, jedoch ist die Lichtmenge durch das Objektiv in schwachen Lichtsituationen nicht ausreichend. Hier wird er jedoch ohne Lichtschluckendes Objektiv auf der Rückseite verwendet, um einfallendes Licht (engl. Incident Meter) am Motiv zu messen.


Dann musste alles in das Gehäuse gestopft werden. Unten kam noch eine 2x5 Buchsenleiste hin, welche zum Laden und Programmieren des Microcontrollers dient.
Pinbelegung Draufsicht:

[X][2][3][4][5 ]
[6][7][8][X][10]
1: NC
2: TX (From Device)
3: RX
4: Reset (connect to gnd to reset)
5: Boot (pull high 3v3 to flash, normally low)
6: -
7: Cell 1 - Cell 2
8: +
9: NC
10: 3v3

Die Pins mit der Bezeichnung NC (Not Connected) werden mit Epoxyd Kleber gefüllt, sodass der Stecker nicht falsch herum passt. Pin 5 "Boot" muss zum Programmieren auf High gezogen werden, damit der Bootloader des STM32 das Flashen von neuem Programmcode erlaubt.
Später bemerkte ich, dass es noch sinnvoll wäre durch eine LED das Messen eines Lichtwertes durch kurzes Aufleuchten anzuzeigen. Eine hellweiße LED wurde daher noch hinten verbaut. Gleichzeitig kann sie als Taschenlampe bei der Nachtfotografie hilfreich sein.


Und so ist das Gerät an sich fertig. Der Großteil der Software stand zu diesen Zeitpunkt schon, jedoch mussten die Lichtwerte noch kalibriert werden.


Dazu ließ ich alle unveränderten Messwerte des ADC seriell ausgeben und erstellte eine Tabelle mit Messwerten und den soll-Lichtwerten, die ich mich meiner Canon EOS 600D nebenher ermittelte.
In einem Abstand von ein paar Dezimetern platzierte ich nicht reflektierende Objekte (Weißes Papier, Grauer Karton, Schwarze Gehäuse) und variierte das Licht im Raum. Das Fenster musste ich verdunkeln, da das Tageslicht durch vorbeiziehende Wolken nicht konstant blieb.
Nach dem Aufnehmen vieler Werte über den gesamten Helligkeitsbereich (ca. 2EV - 20EV) für beide Messbereiche (durch Zuschalten des 10k Widerstandes) konnte ich diese Plotten.
Mithilfe eines Python Programms versuchte ich durch Least Squares Optimierung eine Polynomkurve zu bestimmen mit einem möglichst geringen Polynomgrad, da sonst die Rundungsfehler im STM zu groß werden können. Mit der Idee die Messwerte zunächst zu Logarithmieren gelang dies dann auch schließlich. Der Pythoncode sowie meine Messwerte sind im unten verlinkten Git Repo im Ordner "calibration" zu finden.
Der BH1750 Sensor gibt bereits die Beleuchtungsstärke in Lux zurück, welche sich für Werte >2 durch "log (lux/2.5) / log (2)" in Ev umrechnen lassen. Da dieser Sensor sich hinter einer Acrylglasscheibe befindet musste ich den Korrekturfaktor zuvor bestimmen und mit einbeziehen.


Und fertig ist der DIY Spotbelichtungsmesser. Durch zwei Löcher unterhalb des Objektivs kann der zu messende Bereich angepeilt werden. Ein Druck auf den Auslöser speichert den aktuellen Lichtwert und zeigt ihn im Display an. Dort kann nach vorheriger Angabe der Filmempfindlichkeit die Verschlusszeit oder Blende angegeben und der jeweils andere Wert abgelesen werden. Auch werden die minimalen und maximalen Werte angezeigt, wodurch der Blichtungsumfang eines Motivs ermittelt werden kann.


Bedient wird das Gerät durch 5 Taster. Der On-Taster dient lediglich zum Einschalten des Geräts.
Die drei Taster unter dem Display haben variierende Funktionen und können entweder kurz oder lang gedrückt werden. Kurzes Drücken des Left oder Right-Tasters selektiert einen anderen Wert oder verändert die aktuelle Selektion.
Der Mittlere Knopf bestätigt eine Selektion (zum Verändern des Wertes) oder ruft bei gedrückt halten das Menü (Bild 2) auf bzw. schließt es. In der Übersicht (Bild 1) kann durch kurzes Drücken des Menü/Enter Tasters die Auswahl zwischen Spot- und Incident Modus (Bild 3) aufgerufen werden. Wird dieses Menü offen gelassen schaltet sich die LED als Taschenlampe ein.
Der Trigger-Taster an der Vorderseite erfasst bei betätigen den aktuellen Lichtwert (Spot oder Incident). Dieser wird durch einen Pfeil im oberen Teil des Displays angezeigt. Minimale und Maximale Werte werden bei mehrfacher Betätigung durch einen Balken unterhalb der Skala angezeigt (Bild 4).
Langes Drücken (>1s) setzt Min- und Max-Werte zurück und erfasst anschließend den aktuellen Lichtwert (wie bei kurzem Tastendruck). Wird der Trigger darüber hinaus gedrückt gehalten werden Lichtwerte kontinuierlich erfasst, was das Messen von einzelnen Lichtern oder Schatten für den Belichtungsumfang vereinfachen soll.
Zweifaches Drücken des Menü-Tasters (im Abstand von etwa 500ms) schaltet das Gerät aus. Andernfalls wird es nach einer Inaktivität von einem eingestellten Zeitraum ausgeschaltet.


1) Hauptbildschirm/Übersicht



2) Menü



3) Modusauswahl



4) Hauptbildschirm/Übersicht nach Messung mehrerer Lichtwerte


Rahmen um Blendenwert "F/8" zeigt, dass dieser fest ist. Ändern durch Left/Right Taster.


5) Hauptbildschirm/Übersicht, Verschlusszeit Auswahl


Durch langes Drücken der Left oder Right Knöpfe kann zwischen Auswahl der Blende, Verschlusszeit und Lichtwert gewechselt werden. Hier: Verschlusszeit Festgelegt.


6) Hauptbildschirm/Übersicht, Lichtwert Auswahl


Weiteres gedrückhalten der selben Richtungstaste erlaubt es, den Lichtwert (hier 12) in voreingestellten Schritten (1EV, 1/2EV und 1/3 EV) zu verändern. Da zuletzt die Verschlusszeit gewählt war ändert sich hier die Blende entsprechend (siehe Bild 7).


7) Hauptbildschirm/Übersicht, EV manuell verändert




Code, Gehäuse, Etc.: repos.ctdo.de/interfisch/lightmeter