Das obige Schema und den Schaltplan habe ich mit fritzing erstellt. Eine freie Software, die ganz gut für solche Prototypen geeignet ist. Darin werden eine Darstellung für das Breadboard wie oben und ein Schaltplan sowie ein Platinenlayout gleichzeitig und synchron bearbeitet. Leider sehen die Schaltpläne immer ein bischen handgemalt aus.
Den Code aus Martin Kochs Blog habe ich auch noch etwas veredelt, um präzisere Zeiten für die Reihenaufnahmen zu erhalten. Den Taster / Knopf zum Starten der Zeitreihen habe ich umfunktioniert. Er dient nun dazu manuell einen Impuls auszulösen, so dass der Sender auf die Kamera ausgerichtet werden kann.
/* IR_Canon Arduino Sketch 2011 by WoFu based on http://controlyourcamera.blogspot.com/2010/01/infrared-controlled-timelapse.html thanks a lot to Martin Koch */ #define irLED 12 #define statusLED 13 #define pushBUTTON 11 #define ACTIVE_HIGH_CAN 12 #define ACTIVE_LOW_CAN 12 int interval = 8; //seconds unsigned long msecs=0; void setup() { // set the LED-Pins to output pinMode(irLED, OUTPUT); pinMode(statusLED, OUTPUT); // and the button to input without pullup?? pinMode(pushBUTTON, INPUT); digitalWrite(pushBUTTON, HIGH); // millis() returns the number of milliseconds since the Arduino board began running the current program. // This number will overflow (go back to zero), after approximately 50 days. msecs=millis(); } void loop() { if (millis() < msecs) { // check for overflow msecs=0; } else { if (millis()-msecs > interval *1000) { //seconds since last actions msecs=millis(); // show on LED that something should happen digitalWrite(statusLED, HIGH); sendInfraredSignal(); if (interval > 1) { // wait half a seconds otherwise the signal can't be recognised delay(500); } digitalWrite(statusLED, LOW); } } if (digitalRead(pushBUTTON) == HIGH) { // someone pushed the button so fire the canon digitalWrite(statusLED, HIGH); sendInfraredSignal(); // remember the time, next action after seconds msecs=millis(); delay(1000); //ms digitalWrite(statusLED, LOW); } } void sendInfraredSignal() { // repeat 16 Signals for(int i=0; i<16; i++) { digitalWrite(irLED, HIGH); delayMicroseconds(ACTIVE_HIGH_CAN); digitalWrite(irLED, LOW); delayMicroseconds(ACTIVE_LOW_CAN); } // delay for immidiate shot delayMicroseconds(7330); // repeat 16 Signals for(int i=0; i<16; i++) { digitalWrite(irLED, HIGH); delayMicroseconds(ACTIVE_HIGH_CAN); digitalWrite(irLED, LOW); delayMicroseconds(ACTIVE_LOW_CAN); } }
Aktuell habe ich viel Spaß daran, den Sonnenuntergang aufzunehmen und mit Hilfe von Lightroom in einen Video umzurechnen. Meine Familie findet das zwar albern, aber die Ergebnisse beeindrucken dann doch.
Für alle die wissen wollen, wie man so einen Film macht und als Tip für ein Tool zur optimalen Erstellung von solchen Filmen mit Adobe Lightroom, kann ich lrtimelapse sehr empfehlen.
Inzwischen habe ich aus der Breadboard Version auch eine ordentlichere Variante auf Lochstreifen aufgebaut, die ich auf den Arduino Uno aufstecken kann.
Edit:
Inzwischen habe ich den Code an meiner EOS 60D getestet und mit je 12 uS On/Off Wartezeiten die maximale Reichweite erreicht. Bei optimaler Ausrichtung in der Wohnung waren das etwa 5 Meter.
Hallo!
AntwortenLöschenich versuche gerade etwas ganz ähnliches mit einer alten Minolta F100. Welche Versorgungsspannung nehmen Sie für die Schaltung (9V?) und wie lauten die Wiederstandswerte in Ohm?
Danke!
Andi
Hallo Andi,
AntwortenLöschenals Versorgungsspannung nehme ich 5 Volt, da damit auch der Arduino gespeist wird.
Die Widerstände haben die folgenden Werte:
R1 150 Ohm für die Status LED
R2 4,7 kOhm als Pullup am Schalter
R3 47 Ohm dreimal parallel geschaltet zur Ansteuerung der Power IRLED
R4 4,4 kOhm als Basiswiderstand für den Tansistor
Entschuldige bitte, dass ich das nicht gleich im Schaltplan dokumentiert habe.
Viel Glück und lass mal hören, ob das mit der Minolta klappt.
Wolfgang
Hallo, vielen Dank! Wenn ich die richtigen IR-Codes finde sollte es klappen - melde mich sicher! P.S. Ich baue auch Chillis an :-)
AntwortenLöschen