Pages: [1] 2 3   Go Down
Author Topic: Einstellbarer Zeitauslöser für Spiegelreflexkamera. Wie ralisieren?  (Read 3969 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen.

Da ich mir nun erfolgreich einen IR Trigger für meine Kamera gebaut habe http://hardpan.com/diy-pentax-ir-lightning-trigger/ , habe ich nun eine Idee.

Ich würde mir gerne selber eine Fernbedienung bauen aber auf Kabelbasis, den die Kamera hat eine 2,5mm Klinkenbuchse.
Die Belegung ist folgendermaßen:
Code:
 || Shutter
 |  | Focus
|    | GND
Das ganze lässt sich bequem per Optokopler (6N139) schalten, habe ich bereits getestet.

Der Schwerrpunkt an dem Projekt ist das ich ein LCD 20x2 (HD44780) einsetzen will mit zwei Buttons. Ziel soll es sein das ich mit den
beiden Buttons + und - Sekunden einstellen kann und so lange soll der Shutter Pin mit dem GND durchgehend gebrückt sein. Wofür ? Für Langzeitbelichtung. Den an der Kamera selbst lassen sich blos 30 Sekunden als maximum einstellen, per Kabelfernbedienung jedoch kann man so lange Ausgelösen wie man drückt.

Nun meine eigentliche Frage: Wie bekomme ich das hin, das wenn ich den Button für + "DP3" drücke auf dem LCD jeweils die Zahl um 1 ansteigt und bei Button - "DP4" wieder um 1 abfällt und  wenn das eingestellt ist und man einen dritten Taster "DP5" drückt genau so lange dann auf einem Pin zb."DP6" (geht später zum Optokopler) Strom anliegt wie auf dem Display eingestellt wurde?!

Danke für alle Codevorschläge. Würde das gerne erst einmal mit einer LED testen.


Greeez Oli
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Funktionalität ist ja nicht wirklich schwierig zu realisieren.
Einzig das Kontaktprellen könnte Ärger bereiten und sollte durch die Bounce Library unterdrückt werden.
An sonsten halt mit angenehmen delay (ca 0,5 sek) in der Loop die Pins abfragen und dann entweder einen Zähler hoch/runter zählen oder den Zählerwert als Ausgangswert für ein delay nehmen (verm. *1000) und dann  digitalWrite(Shutter,HIGH), delay(Zähler*1000),  digitalWrite(Shutter,LOW).
In der Setup natürlich die entsprechenden Pins definieren - übertragbare Beispiele findest Du in den Exsamples der Arduino IDE.
Eigendlich kaum mehr als eine Fingerübung und ein ganzes Arduino Board wäre dafür schon fast zu schade.

LG Lena
Logged

„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“

Albert Einstein

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21272
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Da die Belichtungszeit nicht in Sekundenschritten gehen muß, sondern in halben bzw drittel Blenden rate ich Dir eine Array mit den Zeitwerten und Du inkrementierst/dekrementierst nur den Index.
Grüße Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

und ein ganzes Arduino Board wäre dafür schon fast zu schade.

Ich löte Grundsätzlich meine eigene Grundbasis aus atmega,16mhz quartz,LM7805,Kondensatoren und Widerständen.
So komme ich für das Grundgerüst gerade mal auf 5€ Kosten.

Greeez Oli
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Damit ist die Sache doch perfekt.
Schöner Einwand/Vorschlag von Uwe und das für schmales Geld - so soll's doch sein smiley

LG Lena

P.S.: Man könnte auch eine weitere Taste so wie eine Shifttaste hinzufügen und so zwischen Blendenstufen und Sekundenvorwahl wechseln
« Last Edit: April 23, 2012, 11:17:14 am by Lena » Logged

„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“

Albert Einstein

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie ist das jetzt mit den Blendenstufen gemeint?
So richtig steige ich da noch nicht durch.

Greeez Oli
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Korrigiert mich, falls ich falsch liege: Die durch das Objektiv fallende Lichtmenge halbiert beim Wechsel von einer Blendenstufe zur nächst geringeren Blendenstufe. Da der Sprung von Blende 11 auf Blende 16 sehr groß ist, gibt es je nach Kamerahersteller halbe und Drittelstufen. Jetzt wäre es ein Anreiz, die Belichtungszeit entsprechend ändern zu können: Blende eine Drittelstufe runter z.B. von 11 auf 10 (siehe wikipedia: Blendenreihe) und mit einem Tastendruck die Belichtungszeit so verkürzen, dass die Bilder weder über- noch unterbelichtet sind.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Blende stelle ich beim Langzeitbelichtungsvorgang (Stellung B) an der Kamera manuell ein genauso wie ich die ISO Automatik in Stellung (B) auf manuell gesetzt habe! Von daher geht es nur darum das ich über die Fernbedienung die ich hier bauen will die Belichtungszeit manuell in Sekunden von 1-xxxx einstellen kann.

Greeez Oli
Logged

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich würde gar keinen Arduino für sowas nehmen sondern gleich das hier: http://www.doc-diy.net/photo/hdr-jack2/
oder das hier: http://www.doc-diy.net/photo/hdr-jack/ nachbauen.
Logged

Check out my experiments http://blog.blinkenlight.net

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21272
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das erhöhen der Blende um einen Blendenwert enspricht der Halbierung der Belichtungszeit. Der Lichtwert (EV) bleibt gleich.

Da es keinen Unterschied macht ob die Belichtung 30, 31 oder 32 Sekunden ist, ist es sinnvoller in ganzen, halben oder drittel Blendenstufen die Zeit zu erhöhen und gegebenenfalls eine Korrektur durch Bearbeien der Rohdaten (RAW) vornehmen.

ganze Stufen:
1; 2; 4; 8; 15; 30; 60; 120; 240 ecc oder
1s; 2s; 4s; 8s; 15s; 1m; 2m; 4m; 8m; 15m  Gerundete Werte; der Nächste Wert ist immer das doppelte des voherigen.

halbe Stufen:
1; 1,4; 2; 2,8; 4; 5,6; 8; 11; 15; 22; 30; 44; 60 ecc Das sind gerundete Werte; genaugesagt den nächsten Wert errechnest Du durch multiplikation von der 2.Wurzel von 2:  (1,41421356) Jeder zweite Wert ist das doppelte des vorhergehenden.

Drittelstufen:
1; 1,3; 1,6; 2; 2,5; 3,2; 4; 5; 6; 8; 10; 13; 15; 20; 25; 30; Das sind gerundete Werte; genaugesagt den nächsten Wert errechnest Du durch multiplikation von der 3.Wurzel von 2:  (1,25992076) Jeder dritte Wert ist das doppelte des vorhergehenden.

Zu bedenken ist auch, daß gewisse Kameras nach einer Langzeitbelichtung ein Schwarzbild aufnehmen um das Belichtete Bild mit den Bildrauschen des Sensors zu korrigieren. Bei einer Bulb-Belichtung geschiet das nicht. Darum kann ein 15s Bild besser sein als ein 15s Bild mit Fernauslöser.

Ich muß Udo recht geben; wenn ich schon eine Zeitsteuerung baue, dann würde ich auch Belichtungsreihen bzw Belichtungsreihen für HDR vorsehen.

Grüße Uwe



« Last Edit: April 23, 2012, 02:08:11 pm by uwefed » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja gut, vom Prinzip her feine Sache, jedoch weiss ich gar nicht wie ich anfangen soll!?
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So ich habe jetzt mal den Anfang gemacht und das funktioniert auch genau so wie ich das wollte.
Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 9, 3, 2);

const int  buttonPin = 5;  // + Button  
const int  buttonPin2 = 6; // - Button
const int  buttonPin3 = 4; // Shot Button

int buttonPushCounter = 0;  
int buttonState = 0;        
int buttonState2 = 0;
int buttonState3 = 0;
int lastButtonState = 0;    
int lastButtonState2 = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.print("Starting...");
  delay(1000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Bereit...");
  lcd.setCursor(0, 1);  
  lcd.print("Druecke + oder -");
  
  pinMode(buttonPin, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(13, OUTPUT);  // Shutter zu Optokopler , oder TestLED
}


void loop() {
  buttonState = digitalRead(buttonPin);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);

  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      buttonPushCounter++;
      lcd.setCursor(0, 0);
      lcd.clear();
      lcd.print(buttonPushCounter);
      lcd.print(" Sekunden");
      lcd.setCursor(0, 1);
 lcd.print("Einstellung + -");
     }
  }

 if (buttonState2 != lastButtonState2) {
if (buttonState2 == HIGH) {
  if (buttonPushCounter < 1) {
  buttonPushCounter = 1;
  }
  lcd.clear();
  buttonPushCounter--;
  lcd.setCursor(0, 0);
  lcd.print(buttonPushCounter);
  lcd.print(" Sekunden");
  lcd.setCursor(0, 1);
  lcd.print("Einstellung + -");
}
 }

if (buttonState3 == HIGH) {
  lcd.setCursor(0, 1);
  lcd.print("Belichtung aktiv!");
  
  digitalWrite(13, HIGH);  
for (int i=buttonPushCounter; i>0; i--) {
  lcd.setCursor(0, 0);
  lcd.print("noch: ");
  lcd.print(i);
  lcd.print(" Sec.");
  delay(1000);
}
  digitalWrite(13, LOW);
  lcd.clear();
  buttonPushCounter = 0;
  lcd.setCursor(0, 0);
  lcd.print("Fertig!");
  delay(1000);
  lcd.clear();
  lcd.print("Bereit...");
  lcd.setCursor(0, 1);  
  lcd.print("Druecke + oder -");
}

lastButtonState = buttonState;
lastButtonState2 = buttonState2;
 
}
Das ganze war ja Ursprünglich nur für die Langzeitbelichtung gedacht. Aber das mit den Belichtungsreihen hat mich schon neugierig gemacht, und ich würde das gerne noch mit einbauen, zumindest das ich zwei drei Profile auswählen kann wo dann zb. eins hintereinander  1, 2, 4, 8, 15, 30, 60, 120 und 240 Sekunden belichtet.  Blos wie baue ich weitere Auswahlmöglichkeiten ein, stehe grade auf dem Schlauch. Ein weiterer Button ist kein Problem.

Greeez Oli
« Last Edit: April 23, 2012, 08:29:54 pm by Zyrusthc » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So ich bin fertig mit meinen Sketch:
Habe jetzt noch weitere 3 Buttons mit den ich jeweils ein fertiges Programm abarbeiten kann. Ich musste jeweils noch die Berechnungszeit der Kamera  berücksichtigen:
Funktion: Frei wählbare Sekunden mit + und -, so wie 3 Programme:
A1: 10,15,20,30,45,60 Sekunden macht 6 Bilder
A2: 1,2,4,8,16 Sekunden macht 5 Bilder
A3: 60,90,120,240 Sekunden macht 4 Bilder.

* Pentax_Langzeitbelichtung_LCD_ino.ino (14.49 KB - downloaded 7 times.)
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21272
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die Reihe A3 verstehe ich nicht
60,90,120,240

Grüße Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wegen der 90? Ist halt weil ich gerne diese Belichtungszeit mit drinnen haben möchte in diesem Ablauf.

Greeez Oli
Logged

Pages: [1] 2 3   Go Up
Jump to: