Gewitterblitz-Trigger

So erstmal ein paar kurze Grundlagen.

Wie lange Leuchtet eigentlich ein Blitz? Den im Internet gefundenen Artikeln zur Folge ist die Leutdauer eines Blitzes so ca. 100ms. Das ist 0,1 Sekunde. Problem ist aber die menschliche Reaktionszeit, die Dauer  für „Es blitzt“, Reaktion und Auslösen ist gleich Blitz vorbei. Es muss also was her,was schneller reagiert! Schauen wir mal auf die Aulöseverzögerung der Kamera. Für die Nikon D300 findet man im Internet Werte zwischen 45 ms und 54 ms (12-bit Mode). Es bleibt also noch ungefähr die halbe Leuchtdauer übrig. Die Reaktionszeiten eines Mikrokontrollers sollten eher im us-Bereich liegen und nicht ins Gewicht fallen. Ich selbst habe das Projekt nie bis zum vollständigen Abschluss gebracht, möchte euch aber meine Erkenntnisse nicht vorenthalten.

Das ganze lässt sich also mit Technik lösen.Ich habe also ein Gewitterblitz-Trigger Projekt gestartet. Die Idee beruht auf dem Entwurf http://www.glacialwanderer.com/hobbyrobotics/?p=16. Dort wurde aus der Idee sogar ein kommerzielles Produkt.
Der Prototyp-Aufbau auf dem Breadboard ist hier zu sehen.

Verwendet habe ich als Fotodiode eine Siemens SFH 203 P. Ich hab zwar keine Ahnung von Elektronik, aber im Conrad-Katalog stand sie sei schnell und im Datenblatt steht was von 5ns. Die Fotodiode hat einen extrem breiten Blickwinkel (150 Grad). Im Endausbau möchte ich sie in eine Okularabdeckung einsetzen, damit die Blitzerkennung direkt durch das verwendete Objektiv stattfindet. Bei dem genannten Blickwinkel sollte das für fast alle Objektive langen. Die 150 Grad Blickwinkel sollten einem 10 mm-Brennweite Objektiv an der Nikon-Crop_Kamera entsprechen.
Als Optokoppler habe ich einen 4N27 im DIP6-Ghäuse verbaut.

Als Gimick habe ich noch eine blaue Kontroll-LED hinzugefügt.

Damit die Kamera ausgelöst wird muß bei Nikon AF und Auslöser gleichzeitig gegen Masse gebrückt werden. Um die Kamera anzuschließen habe ich mir einen billigen Fernauslöser von Enjoyyourcamera besorgt und den demontiert. Die Platine im Gehäuse des Fernauslösers war freundlicherweise entsprechend beschriftet.

Probeauslösungen mit dem Prototypen funktionieren, ich habe dazu mit einem Kamerablitz bei Tageslicht testweise in den Raum geblitzt und die Kamera wurde jeweils ausgelöst.

Der ganze Aufbau kommt jetzt in ein kleines Gehäuse. Ich plane eine Art Blitzschuh zu bauen und das Gehäuse damit auf der Kamera zu montieren. Damit alles nicht mehr so nach Prototyp aussieht habe ich mir über Fritzing.org eine Platine bestellt. Der endgültige Aufbau wird also als Arduino-Shield ausgeführt. Die Platine ist bereits eingetroffen und sieht super aus.

Jetzt geht es an den endgültigen Aufbau auf der Platine.

 

 

Hier zeige ich euch mal ein Bild der unbestückten Platine.

 

 

 

 

 

 

Mit der fertig aufgebauten Platine hatte ich einige Schwierigkeiten.

Der Sensor schien ein Kurzschluß-Problem zu haben, ich hatte unkontrollierte Auslösungen. Also alles nochmal auseinander gebaut und neu zusammen gesetzt. Das Problem bleibt. Anscheinend kann man über das Kabel der Photodiode soviel Spannung einstreuen, das ausgelöst wird, aber immer nur dann, wenn der Arduino über den USB mit Strom versorgt wird.

Nächstes Problem war, das die Kamera zwar ihren Belichtungsmesser/Autofocus aktiviert hat, aber nicht ausgelöst. Zuerst dachte ich an einen irgendwie defekten Optokoppler, für den endgültigen Aufbau hatte ich einen anderen verwendet. Mit Hilfe eines Kollegen habe ich den ausgetauscht. Das Problem blieb aber bestehen. Ich war am verzweifeln. Also alles auf Anfang. Ich habe mit dem ausgebauten Optokoppler auf dem Breadbord neu angefangen. Mein Problem war plötzlich auch dort da! Vor dem Platinenbau lief aber alles. Wie weiter oben geschrieben, habe ich die Pins für Belichtungsmessung/AF und Shutter einfach gebrückt. Am Ausgang des Optokopplers hingen also die gebrückte Leitung und Ground. Beim Testen habe ich einfach mal die Anschlüße gedreht und siehe da es ging, die Kamera löste aus. Nun hab ich auf der Platine die Änderung vollzogen, d.h. Kabel zur Kamera entlötet und neu eingesetzt.

Ein erster Test war enttäuschend. Ich hatte wieder ein Problem! Erste Auslösung nur Belichtungsmessung, ab der zweiten war alles ok. Merkwürdig. Da mein Kollege auch ein Arduino-Projekt am laufen hat, haben wir uns zufällig über den Nikon-Auslösemechanismus unterhalten. Ichhabe dann festgestellt, das die Kamera immer nur dann nur den Belichtungsmesser startet und nicht auslöst, wenn der Belichtungsmesser vorher nicht mehr aktiv war. Im Falle, das der Belichtungsmesser noch aktiv war, hat die Kamera auch ausgelöst. Um meine Platine zu retten (die im übrigen nicht ganz billig war, aber ihr Geld wert) habe ich die Anbindung der Kamera erneut umgestaltet. Ich habe die Kabel für das Auslösen dann noch einmal geändert. Der Auslöser Nikon funktioniert wirklich zweistufig. Da mein derzeitiger Schaltungsentwurf das nicht abbilden kann, habe ich zu einer Notlösung gegriffen. Die Kabel für Belichtungsmessung/AF und Ground sind jetzt gebrückt, d.h. der Auslöser wird ständig gedrückt gehalten und der Optokoppler schaltet nur den Shutter.

Ich werde also den Schaltungsentwurf so abändern, das ich mit Optokopplern einen zweistufigen Auslöser nachbaue, das Script für den Arduino muß dann auch angepasst werden.

 

Der verwendete Code schaut wie folgt aus:

 

#define LIGHTNING_SENSOR 1
#define TRIGGER_THRESHHOLD 10
#define shutterPIN 6
#define Kontroll_LED 13
int LightningVal;
void setup() {
pinMode(13, OUTPUT);
 pinMode(shutterPIN, OUTPUT);
 //Serial.begin(9600);
 LightningVal = analogRead(LIGHTNING_SENSOR);

 // Setup faster analog reads
 // ADPS2 ADPS1 ADPS0 Div Factor
 // 0 0 0 2
 // 0 0 1 2
 // 0 1 0 4
 // 0 1 1 8
 // 1 0 0 16
 // 1 0 1 32
 // 1 1 0 64
 // 1 1 1 128
 // Default set by wiring is 128 (16 MHz/128 = 125 Khz)
 // Since a converstion takes 13 clocks the sample rate is 125Khz/13 = 9600 Hz or about 100 us.
 // By setting the div factor to 16 analog reads will be 8 times faster.
 ADCSRA |= (1<<ADPS2);
 ADCSRA &= ~(1<<ADPS1);
 ADCSRA &= ~(1<<ADPS0);
}
void loop()
{
 int newLightningVal = analogRead(LIGHTNING_SENSOR);
 // Serial.print(LightningVal, DEC);
 // Serial.print(",");
 // Serial.println(newLightningVal, DEC);
if (newLightningVal - LightningVal > TRIGGER_THRESHHOLD)
 {
 /* Code für schutterrelease */
 digitalWrite(shutterPIN,HIGH);
 delay(5);
 digitalWrite(shutterPIN,LOW);
 /* Code Shutterrelease Ende*/
 // Testcode
 digitalWrite(Kontroll_LED, HIGH);
 delay(500);
 digitalWrite(Kontroll_LED, LOW);
 // Debug Code
 // Serial.println("Shutter triggered");
 // Serial.print(LightningVal, DEC);
 // Serial.print(",");
 // Serial.println(newLightningVal, DEC);
 // Debug Code Ende
 LightningVal=analogRead(LIGHTNING_SENSOR); //am Ende des IF lassen
 }
 else
 {
 LightningVal = newLightningVal;
 }
}