Kamera durch Blitz auslösen mit Arduino

Im letzten Artikel wurde gezeigt, wie man mit einem Arduino eine Kamera auslösen kann. Diese Schaltung habe ich nun erweitert, so dass sie auf starke Lichtänderungen reagiert. Damit lassen sich zum Beispiel Gewitterblitze fotografieren.

  • Arduino
  • Breadboard
  • Fernauslöser-Kabel
  • Fotodiode
  • Optokoppler
  • 2 Widerstände

Hier der Schaltplan:

Die Fotodiode wird in Sperr-Richtung betrieben. Bei Dunkelheit fließt kein Strom. Sobald etwas Licht auf die Fotodiode fällt, wird sie leitend und es fließt ein Strom. Über dem Widerstand entsteht nun eine Spannung, die abhängig von der Lichtstärke ist. Sie wird über den Analog-0-Pin des Arduino gemessen. Der Digital-Pin 13 dient hier wieder als Kamera-Auslöser. Auch hier ist die Kamera wieder durch einen Optokoppler von der Schaltung getrennt. Der Widerstand dient als Vorwiderstand für den Optokoppler.

Hier der schematische Aufbau auf einem Breadboard. Für den tatsächlichen Einsatz bei der Gewitterfotografie sollte die Fotodiode über ein Kabel verbunden werden, dass dann an der Kamera befestigt wird.

 

 

Nun noch ein bisschen Code:

int cam_pin = 13;
int photodiode = 0;
int threshold = 10;

int light_val;

void setup()
{
  pinMode(cam_pin, OUTPUT);
  digitalWrite(cam_pin, LOW);
  //Serial.begin(9600);

  light_val = analogRead(photodiode);
}

void loop()
{
  int newLightVal = analogRead(photodiode);

  if (abs(newLightVal - light_val) > threshold)
  {
    digitalWrite(cam_pin, HIGH);
    delay(500);
  }
  light_val = newLightVal;
}

In der Hauptschleife wird ständig der aktuelle Lichtwert gemessen und mit dem letzten verglichen. Übersteigt die Abweichung beider Werte die oben festgelegte Schwelle (hier 10), so wird Pin 13 für 0.5 Sekunden auf HIGH geschaltet und löst die Kamera aus.

Nun noch das ganze in der Praxis. Das Bild zeigt den Versuchsaufbau. Die Kamera ist mit dem Fernauslöser über die beiden roten Kabel mit dem Breadboard und über den Optokoppler mit dem Arduino verbunden. Rechts ist der Sensor bestehend aus Fotodiode und Widerstand. Da grad kein echtes Gewitter zur Hand war dient eine kleine Kompaktkamera als Blitz-Quelle:

Der Lichtblitz der Kompaktkamera wird durch die Fotodiode gemessen und die Hauptkamera wird sofort ausgelöst. Das ganze passiert so schnell, dass der auslösende Blitz noch deutlich zu erkennen ist. Nun muss ich nur noch auf das nächste Gewitter warten…

7 Gedanken zu „Kamera durch Blitz auslösen mit Arduino

  1. Bernhard

    Hallo Martin,
    habe heute Deinen Blog gefunden und diese kleine Schaltung mal nachvollzogen. Leider funktioniert der Sketch so nicht ganz, wobei ich mir nicht sicher bin, ob es nicht Deine Absicht ist, Interessierte selbst noch ein bischen Gehirnschmalz einfliessen zu lassen.

    Ansonsten:
    – hinter das delay muss noch die Zeile “ digitalWrite(cam_pin, LOW);“, sonst bleibt die Kamera dauernd angesteuert.
    – aus „(abs(newLightVal – light_val) > threshold)“ habe ich „((newLightVal – light_val) > threshold)“ gemacht. Damit ist sichergestellt, dass Auslösung nur bei schnell heller werdendem Licht erfolgt.

    Interessieren würde mich, wie schnell die Ansteuerung der Kamera über den Arduino erfolgt. Ich möchte damit einen externen Zentralverschluss ansteuern, der derzeit noch eine Auslöseverzögerung von etwa 7ms hat, die ich aber noch auf 4 ms redurieren werde.

    Gruss
    Bernhard

    Antworten
    1. martin Beitragsautor

      Hallo Bernhard,

      ich habe die Schaltung damals vor einem aufziehenden Gewitters mal schnell zusammengebastelt. Dann zog das Gewitter vorbei und es kam nie aktiv zum Einsatz. Ich hatte es nur mal mit dem Blitz einer 2. Kamera getestet und da hat es funktioniert. Deine Einwände klingen aber plausibel und ich werde, wenn ich mal wieder Zeit finde, das ganze nochmal aufbauen, nachvollziehen, testen und ggf. korrigieren. Absicht war das nicht, aber ich freue mich sehr, dass es überhaupt Leser meiner Beiträge gibt und dass die dann auch noch mitdenken. Danke dafür 🙂

      Antworten
  2. Michael

    Hi zusammen,

    von mir auch noch eine Idee zum Programm:

    Ich würde nicht ständig den neuen Lichtwert setzen, sondern das nur in regelmäßigen Abständen machen. So spart man sich in der ‚Auslöseschleife‘ das Setzen des Variablenwerts und außerdem die Substraktion.

    Viele Grüße und vielen Dank für das Veröffentlichen deiner Ideen 🙂

    Antworten
    1. martin Beitragsautor

      Hallo Michael,

      danke für den Hinweis. Die Schaltung kam mangels Gewitter zur richtigen Zeit bei mir nie zum Einsatz. Wenn ich mal wieder zum Basteln komme, werde ich die Ideen mal umsetzen und testen.

      Antworten
      1. Michael

        Gern, Martin 🙂
        SOLLTE ich dazu kommen, es vor dir auszuprobieren, werde ich es dich wissen lassen!

        Viele Grüße
        Michael

        Antworten
  3. Nicolai

    Hallo, schön dass ich diese Seite gefunden habe. Das Progrämmchen klappt auch gut, nur dass er bei mir auslöst wenn es dunkel wird. Hab ich was falsch verkabelt oder was könnte falsch sein?
    Gruß Nic

    Antworten
    1. martin Beitragsautor

      Das Programm war nur ein schneller Versuch und hat noch einiges an Optimierungspotential.

      Die Zeile „if (abs(newLightVal – light_val) > threshold)“ ist der Schlüssel:

      Es wird die Differenz zwischen dem alten Lichtwert und dem neuen gebildet und dann wird von dem Ergebnis der Betrag ermittelt (abs) und mit der Schwelle verglichen. Ist die Differenz größer als die Schwelle, löst das Programm aus. Dabei spielt es keine Rolle, ob es hell oder dunkel wird, es kommt nur auf den Lichtunterschied an. Es müsste bei Dir also auslösen, wenn es heller wird oder wenn es dunkler wird.

      Auch setze ich den Ausgang in dem Programm nicht wieder auf LOW, so dass einige Kameras weiter belichten. Das ändere ich nachher noch.

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.