Steuerung Kurzzeitfotografie

Hallo an die Allwissenden,
ich arbeite an meinem zweiten Projekt, bei dem ich Arduino benötige. Die Schönheit eines Programms interressiert mich nicht, die Funktion steht im Vordergrund.

Mein Problem wird sich den meisten nicht sofort erschliessen, dennoch hoffe ich auf Hilfe.

Funktion:

  • durch einen Schrittmotor wird ein Zentralverschluss gespannt. Diese Funktion steht im Setup, da sie nur gebraucht wird, wenn der Zentralverschluss durch ein Signal von aussen ausgelöst worde.

  • Wenn der Zentralverschluss gespannt ist, wird der Schlitzverschluss der Kamera geöffnet. Dieser wird alle 30 Sekunden für 2 Sekunden geschlossen, um den Senor auszulesen (Langzeitrauschen minimieren)

  • wenn der Zentralverschluss ausgelöst worden ist (z.B. Lichtschranke), wird 0,2 Sekunden später der Kameraverschluss geschlossen.

  • jetzt soll das Ganze wieder mit dem Spannen des Zentralverschlusses von vorne beginnen.

Die Frage ist jetzt, wie den letzten Schritt realisieren kann. Inetrrupt un goto (bitte nicht schlagen) gehen hier wohl nicht.

Danke für konstruktive Hilfe
Bernhard

void setup()  


{ 
 
 small_stepper.setSpeed(270);
 pinMode(ledPin, OUTPUT);  // Kameradummy
 pinMode(Ausloeser, INPUT);
 
 

{
 // HIERHIN MUSS WIEDER ICH, NACHDEM DER ZENTRALVERSCHLUSS AUSGELÖST HAT
 // bewege Motorachse in beide Richtungen, Verschluss spannen

 small_stepper.setSpeed(270);   
 Steps2Take  =  1150;  // Rotate CW
 small_stepper.step(Steps2Take);
 delay(10);
 
 small_stepper.setSpeed(270);  
 Steps2Take  =  -1150;  // Rotate CCW
 small_stepper.step(Steps2Take);
 

}}
void loop()
{
 // check to see if it's time to change the state of the LED
 unsigned long currentMillis = millis();

 if((led == HIGH) && (currentMillis - previousMillis >= OnTime))
 {
   led = LOW;  // LED aus
   previousMillis = currentMillis;  // Remember the time
   digitalWrite(ledPin, led);  // Update the actual LED
 }
 else if ((led == LOW) && (currentMillis - previousMillis >= OffTime))
 {
   led = HIGH;  // LED an
   previousMillis = currentMillis;   // Remember the time
   digitalWrite(ledPin, led);  // Update the actual LED
 }
 else if ((led == HIGH) && (Ausloeser == HIGH)) // Loop abbrechen

 {
   delay(200);
   led = LOW; //Kameraverschluss schliessen
   
   //VON HIER MUSS ICH ZUM ANFANG IN VOID SETUP SPRINGEN
   
 }
}

Auch hier wie so oft: Zustandsautomat

Das was du oben unterhalb des Setup stehen hast, setzt du in eine Funktion "void (funktion)" und rufst diese aam Ende durch den Befehl "funktion();" auf.
Das Setup kannst du nicht aus der Loop aufrufen.

Und da du schon länger dabei bist, warum setzt du deinen Code nicht in Code-Tags, da wird er besser lesbar.

In anderen Worten: merk Dir in einer Variablen was gerade passiert, ändere den Wert abhängig davon was passiert ist und je nach Wert machst Du irgendwas.

HotSystems:
Das was du oben unterhalb des Setup stehen hast, setzt du in eine Funktion "void (funktion)" und rufst diese aam Ende durch den Befehl "funktion();" auf.
Das Setup kannst du nicht aus der Loop aufrufen.

Und da du schon länger dabei bist, warum setzt du deinen Code nicht in Code-Tags, da wird er besser lesbar.

Länger dabei ist relativ. Wenn dieses Projekt abgeschlossen ist, wird wohl wieder ein Jahr Ruhe sein, und dann beginne ich wieder von vorne.

Wegen Befehl als separate Funktion: Da diese Funktion keine Loop sein darf, fand ich es am einfachsten, alles in Setup zu packen.

Ungetestet als Denkanstoß:

bool gespannt;
void setup() {
  small_stepper.setSpeed(270);
  pinMode(ledPin, OUTPUT);  // Kameradummy
  pinMode(Ausloeser, INPUT);
}
void loop(){
if (!gespannt) {
  small_stepper.setSpeed(270);   
  Steps2Take  =  1150;  // Rotate CW
  small_stepper.step(Steps2Take);
  delay(10);
 
  small_stepper.setSpeed(270); 
  Steps2Take  =  -1150;  // Rotate CCW
  small_stepper.step(Steps2Take);
  gespannt=true;
}
  // check to see if it's time to change the state of the LED
  unsigned long currentMillis = millis();
 
  if((led == HIGH) && (currentMillis - previousMillis >= OnTime))
  {
    led = LOW;  // LED aus
    previousMillis = currentMillis;  // Remember the time
    digitalWrite(ledPin, led);  // Update the actual LED
  }
  else if ((led == LOW) && (currentMillis - previousMillis >= OffTime))
  {
    led = HIGH;  // LED an
    previousMillis = currentMillis;   // Remember the time
    digitalWrite(ledPin, led);     // Update the actual LED
  }
  else if ((led == HIGH) && (Ausloeser == HIGH)) // Loop abbrechen

  {
    delay(200);
    led = LOW; //Kameraverschluss schliessen
   
    gespannt = false;
   
  }
}

Ich würde allerdings einen endlichen Autromaten mit switch/case und ohne delay() bevorzugen.

bastler3:
Länger dabei ist relativ. Wenn dieses Projekt abgeschlossen ist, wird wohl wieder ein Jahr Ruhe sein, und dann beginne ich wieder von vorne.

Wegen Befehl als separate Funktion: Da diese Funktion keine Loop sein darf, fand ich es am einfachsten, alles in Setup zu packen.

Ok, dann mach es dennoch, bitte.
Pack den Code in Code-Tags.

In das Setup gehören nur Dinge die einmalig aufgerufen werden. Wie der Name schon sagt.
Das Setup kannst du nicht nochmal aufrufen.

Eine zusätzliche Funktion schon und den Namen kannst du selbst bestimmen.
z.B. "NeueFunktion" oder irgend wie anders.
Den Aufruf machst du dann wie schon beschrieben
"NeueFunktion();"
So kannst du die Funktion immer wenn du sie brauchst, aufrufen.
Das nochmal zur Erklärung.

agmue hat es ja schon schön zusammengestellt. Ohne zusätzliche Funktion.

HotSystems:
agmue hat es ja schon schön zusammengestellt. Ohne zusätzliche Funktion.

Bei Progrämmchen, die noch auf eine Seite passen, hab ich es nicht so mit Funktionen. :wink:

}}
void loop()

Mit deinen Klammern stimmt was nicht....

combie:
Mit deinen Klammern stimmt was nicht....

mit den Variablen schon auch nicht.

@bastler3
Ich verstehe Dein Projekt nicht.

Ein Zentralverschluß hat max Verschlußzeiten von 1/500 S, Ein Lamellenverschluß hat Verschlußzeiten von 1/8000 s wobei die Synchronisationszeit bei ca 1/250s (Verschluß vollständig offen) liegt.
Ich verstehe nun nicht wieso Du einen Zentralveschluß vor das Objektiv montieren willst und wieso Du glaubst so ein Foto mit einer kürzeren Zeit belichten kannst?

Grüße Uwe

combie:
Mit deinen Klammern stimmt was nicht....

Nö, weder bei #0 noch #5 meckert der Compiler. Bei #0 ist ein Klammerpaar überflüssig, aber das ist kein Fehler.

Ich verstehe nun nicht wieso Du einen Zentralveschluß vor das Objektiv montieren willst und wieso Du glaubst so ein Foto mit einer kürzeren Zeit belichten kannst?

Es gibt durchaus legitime Gründe, einen Zentralverschluss zu bevorzugen, z.B. die bessere Blitzsynchronisation.

Weil der Zentralverschluss immer das komplette Bild freigibt, kann man Blitzaufnahmen bis zur jeweils kürzesten Belichtungszeit synchronisieren. Aus dem gleichen Grund kommt es beim Zentralverschluss nicht zu Verzerrungen sich schnell bewegender Motive, die beim Schlitzverschluss nicht immer zu vermeiden sind. Ein weiterer Vorteil des Zentralverschlusses liegt in seinem kreisförmigen Aufbau begründet. Die Bewegungen der einzelnen Lamellen gleichen sich gegenseitig aus, die Gefahr eines Verwacklers durch das Auslösen des Verschlusses ist also geringer als beim Schlitzverschluss. Letzteres v.a. relevant für extreme Makro- oder Teleaufnahmen.

Hochwertige Mittel- oder Vollformatkameras haben fast alle einen Zentralverschluss.

Bei der minimalen Verschlusszeit sind sie unterlegen, aber dafür gibt es Neutraldichtefilter (ND- oder "Grau"-Filter).

Grüße vom Photographen

Helmuth

Wenn Du bei einem Lamellenverschluß schneller als die Syncronisationszeit bist, dann hast Du auch den ganzen Sensor auf einmal belichtet.

Lamellenverschlüsse sind heutzutage fast gleichschnell wie ein Zentralverschluß.

Welche minimale Verschlußzeit haben Deine Zentralverschlüsse?

Grüße Uwe

Welche minimale Verschlußzeit haben Deine Zentralverschlüsse?

Ich habe (noch) keine eigene Mittelformat, aber schneller als 1/1000 s geht nicht bzw. wurde bisher noch nicht gebaut. Die aktuellen Hasselblads erreichen das.

Lamellenverschlüsse sind viel schneller. DIe gehen bis 1/8000 s

Wenn Du bei einem Lamellenverschluß schneller als die Syncronisationszeit bist, dann hast Du auch den ganzen Sensor auf einmal belichtet.

So einfach ist das nicht. Das Funktionsprinzip des Schlitzverschlusses hat einen recht gravierenden Nachteil: Das Bildfeld ist bei kurzen Verschlusszeiten zu keinem Zeitpunkt komplett freigelegt. Der Verschluss bewegt sich stattdessen mit hoher Geschwindigkeit in vertikaler Richtung über das Bildfeld. Wenn man also 1/1000s als Verschlusszeit einstellt, dauert die Belichtung insgesamt länger als 1/1000s. Das kann insbesondere beim Blitzen zu Problemen führen, denn Blitze haben eine sehr kurze Leuchtdauer.

Das führt dann zu horizontalen schwarzen Balken im Bild.

Die kürzeste Verschlusszeit mit Lamellen, BEI DER DAS BILD KOMPLETT FREIGEGEBEN WIRD, ist 1/250 s.

Die 1/1000 s mit einem Zentralverschluss dagegen ist "echt" - das Bild wird komplett freigegeben.

Grüße

Helmuth

Korrektur edit: Die 1/12000 Sekunde der Minolta Dynax 9xi ist seit 1992 von keiner anderen Kamera mit Schlitzverschluss unterboten worden.

hab mich mal falsch ausgedrückt:

Wenn Du bei einem Lamellenverschluß schneller als die Syncronisationszeit bist, dann hast Du auch den ganzen Sensor auf einmal belichtet.

war gemeint "Zeiten länger als Synchronisationszeit"

Der Unterschied zwischen 1/250 und 1/1000 ist nicht so gewaltig.

Grüße Uwe

mhh, verstehe ich das richtig, dass der Aufbau dazu gedacht ist Fotos mit Blitz zu erzeugen, und die Belichtungszeit dabei unterhalb der Blitztypischen 1/200 bzw 1/250s liegen soll?
Magst du das evtl genauer erklären, solche Themen interessieren mich immer :slight_smile: Ich habe hier noch ein Projekt auf Eis liegen, wo es drum geht Geschosse beim Aufschlag auf ein Ziel zu fotografieren. Genauer gesagt Pfeile, die Wasserbomben treffen. Das Geschoss wird von einer Lichtschranke beim Abschuß erfasst, die Kameras über einen Arduino mit einstellbarer Verzögerung ausgelöst. Hier kämpfe ich eigentlich nur noch mit einer zuverlässigen Lichtschrankentechnik, die auch bei hellem Sonnenlicht sauber arbeitet.

Aber zurück zu deinem Thema:
Die ganze Anordnung hört sich schon etwas kompliziert an.

Wenn ich es recht im Kopf habe kann schon eine Canon 400d 1/4000s Belichtet, die 70d sogar 1/8000s
Ein Blitzlicht mit Kurzzeitsync würde das Problem dann schon lösen oder?

mein Blitz von Sigma kann das schon und zwar bis zu 1/8000s. Wenn das Licht hier nicht reicht, stell ich 2 Yongnuo billig Blitze entfesselt auf S2 Mode und voller Leistung dazu, und hab Fotos soll hell wie bei strahlendem Sonnenschein.
Und bei 1/8000s behaupte ich in meinem Jugendlichen (hust) Leichtsinn, kann man die Verwackelung durch Verschluß und Spiegelschlag vernachlässigen.

verstehe ich das richtig, dass der Aufbau dazu gedacht ist Fotos mit Blitz zu erzeugen, und die Belichtungszeit dabei unterhalb der Blitztypischen 1/200 bzw 1/250s liegen soll?

soviel ich verstanden habe ist da kein Blitz vorgesehen.
Das muß uns aber der Treadstarter erklären was er vorhat.
Grüße Uwe

derSchorsch:
mein Blitz von Sigma kann das schon und zwar bis zu 1/8000s. Wenn das Licht hier nicht reicht, stell ich 2 Yongnuo billig Blitze entfesselt auf S2 Mode und voller Leistung dazu, und hab Fotos soll hell wie bei strahlendem Sonnenschein.
Und bei 1/8000s behaupte ich in meinem Jugendlichen (hust) Leichtsinn, kann man die Verwackelung durch Verschluß und Spiegelschlag vernachlässigen.

Das Problem bei solchen Belichtungszeiten ist, daß die 2. Lamellen (die schließen) bereits gestartet werden bevor die ersten Lamellen (die öffnen) ganz offen sind. Dadurch erhält man in allen Punkten des Sensors/Negativs eine gleiche Belichtungszeit, die schneller als die Zeit die die Lamellen zum Öffnen brauchen, aber eben nicht gleichzeitig sonder ca 1/500 s verschieden von oben zu unten.

siehe http://static-content.springer.com/image/chp%3A10.1007%2F978-3-658-05734-3_20/MediaObjects/290758_3_De_20_Fig11_HTML.gif obere Reihe. Ein Balken wandert von LX nach RX und die Lamellen von Oben nach unten.

Ein Blitz kann viele kurze Blitze aussenden oder lange leuchten und so auch auf der kurzestens Belichtungszeit auch gut beleuchten.

Grüße Uwe

Die fotografische Seite scheint für euch ja interessanter zu sein als mein Steuerungsproblem.

  1. Natürlich wird geblitzt, aber die Blitze werden vom Zentralverschluss ausgelöst, haben also mit dem Problem hier nichts zu tun.

  2. Ich will draussen bei Tageslicht mit Teleobjektiv arbeiten (Lichtschranke für Insekten, Vögel, Fledermäuse etc.), da kann ich nicht den Verschluss einfach offen lassen und warten, bis die Blitze ausgelöst werden.

  3. Die Blitze werden durch Funk ausgelöst und stehen nahe der Lichtschranke (synchronisation über Funk ist positiv erprobt). Dadurch kann ich mit kleinen Blenden arbeiten, weshalb dann das Tageslicht bei 1/400 sec bei ISO 50 nicht weiter stört.

  4. Kamera direkt auslösen kann man vergessen. Die Auslöseverzögerungen liegen im besten Fall so um die 100ms.

  5. Der Zentralverschluss wird von der Lichtschranke direkt ausgelöst (natürlich mit Verstärker dazwischen). Dadurch komme ich zu Auslöseverzögerungen um etwa 3ms (erprobt), die im Wesentlichen durch den Aufbau des Magnetfeldes bedingt sind. Die Offenzeit des Zentralverschlusses muss dann noch dazugerechnet werden.

Es wird nur ein zweites Signal parallel and den Arduino geschickt, um ihm zu sagen, dass er den Kameraverschluss bitte schliessen möge.

  1. Statt Lichtschranke sollen auch andere Auslöser angeschlossen werden können (Schall, Bewegung, ggf. mit Verzögerung). Das ist aber ebenfalls vom jetzigen Problem unabhängig.

Für die Fotospezialisten:
Der Zentralverschluss wirkt wie ein Zwischenring von ca. 30mm Länge. Um auf vernünftige Arbeitsabstände zu kommen muss in den Verschluss eine Konverteroptik eingebaut werden. Dazu ist ein Verschluss Grösse 1 nötig.

Diese Arbeit ist bereits getan, ebenso der Ausbau der Zeitenmechanik (damit immer die kürzeste Verschlusszeit benutzt wird) und der Einbau einer Magnetspule zur Auslösung. Ebenso ist der Schrittmotor zum Spannen des Verschlusses bereits erprobt.

Gruss
Bernhard

Die Auslöseverzögerungen liegen im besten Fall so um die 100ms.

Problem verstanden und eine Idee/Frage: Ich nehme an, dass Du eine DSLR verwendest. Die Auslöseverzögerung ist zu groß. Wobei das eigentliche Zeitproblem dabei das Hochklappen des Spiegels ist.

Hier mal ein Highspeedvideo, wie das aussieht. Hier mit kürzerer Belichtungszeit. Bei 1/1000 s sieht man schön, dass das nur noch ein wandernder Lichtspalt ist.

Hast Du schon mal mit Spiegelvorauslösung experimentiert? Alles ein- und scharfstellen, Spiegel hochklappen, und Lichtschranke triggert nur den Schlitzverschluss? Das geht schnell. Wahrscheinlich schneller, als mit Zentralverschluss.

Der Zentralverschluss wirkt wie ein Zwischenring von ca. 30mm Länge. Um auf vernünftige Arbeitsabstände zu kommen muss in den Verschluss eine Konverteroptik eingebaut werden. Dazu ist ein Verschluss Grösse 1 nötig.

Das kann man so nicht sagen, da per Definition ein Zwischenring ein Zwischenring und ein Konverter ein Konverter ist.
Ein Zwischenring hat keine Korrekturlinsen drin und dient nur dazu den Abbildungsmaßstab zu ändern. Konkret verkürzt er den minimalen Objektivabstand (verschiebt die Nahgrenze), wodurch mehr Vergrößerung möglich ist. Nachteil: man verliert die unendlich-Einstellung beim Fokussieren. Im optischen Sinne handelt es sich lediglich um lichtdichte Rohre.

Ein Konverter dagegen erhöht die Brennweite, wobei die Nahgrenze identisch bleibt. Erlaubt also einen anderen Abbildungsmaßstab bei konstantem Abstand zum Objekt. Wenn Linsen drin sind, ist es ein Konverter. Nachteil: Abbildungsfehler vom Objektiv werden mitvergrößert und der Konverter selbst hat auch immer Abbildungsfehler.

Der Unterschied zwischen 1/250 und 1/1000 ist nicht so gewaltig.

Das sind 2 volle Blendstufen! 2 gute DSLR Objektive, die sich in der Lichtstärke um 2 Blenden unterscheiden (z.B. f/1,4 und f/2,8), unterscheiden sich im Preis ca. um 1000 Euro...
2 Blendstufen sind wirklich viel und erlauben z.B. eine Belichtungszeit von 1/4 im Vergleich zum lichtschwächeren Objektiv.

Grüße in die Runde,

Helmuth