• Herzlich willkommen im "neuen" DSLR-Forum!

    Wir hoffen, dass Euch das neue Design und die neuen Features gefallen und Ihr Euch schnell zurechtfindet.
    Wir werden wohl alle etwas Zeit brauchen, um uns in die neue Umgebung einzuleben. Auch für uns ist das alles neu.

    Euer DSLR-Forum-Team

  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • DSLR-Forum Fotowettbewerb neu erfunden!
    Nach wochenlanger intensiver Arbeit an der Erneuerung des Formates unseres internen Fotowettbewerbes ist es Frosty als Moderator
    und au lait als Programmierer gelungen, unseren Wettbewerb auf ein völlig neues Level zu heben!
    Lest hier alle Infos zum DSLR-Forum Fotowettbewerb 2.0
    Einen voll funktionsfähigen Demowettbewerb kannst du dir hier ansehen.
  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2024
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien der Eigenmarken "Upscreen", "Brotec", "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs März 2024.
    Thema: "Arbeitsmittel"

    Nur noch bis zum 31.03.2024 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
  • Frohe Ostern!

    Wir wünschen allen DSLR-Forum Nutzern, ihren Familien und Freunden sowie unseren Sponsoren und Partnern und deren Familien und Freunden ein frohes Osterfest.

    Euer DSLR-Forum Team!
WERBUNG

EOS Follow-Focus mit extras über USB (Arduino-Based)

odippel

Themenersteller
Hi,
will mir ein Follow-Focus per USB für meine EOS 550D bauen.

So weit sind wir schon:
https://www.dslr-forum.de/showpost.php?p=9611676&postcount=168

Sowas wie hier: http://www.okii.net/product_p/ct-001.htm
Auf Basis von dem: http://www.watterott.com/de/SparkFun-USB-Host-Shield?xa8505=7pft309j6gikm6dmsrjgp3r3p7

und dem: http://www.watterott.com/de/Arduino-Pro-328-5V/16MHz

Der Focus lässt sich dann per Drehencoder einstellen,
sowas hier: http://www.watterott.com/de/Drehencoder-mit-Taster-PEC12-4220F-S0024

Dazu kommen noch ein par Taster und vielleicht noch ein 2. Encoder zur Modus-Auswahl.

Das ganze soll OpenSource sein und möglichst einfach nach zu bauen.

Was haltet Ihr davon ?

Gruß,
Olli
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

sieht sehr gut aus was du da vor hast. Könntest du mir vielleicht dein Arduino Projekt zur verfügung stellen. Ich suche was mit dem ich auch meine 550D und USB Host Shield betreiben kann für HDR und co.
 
Hi gloob,
klar kann ich das machen, der erste Test ist nur eine kombination aus 2 Arduino-Examples (EOSFocus + Rotation-Encoder):

Code:
#include <inttypes.h>
#include <avr/pgmspace.h>

//#include <Spi.h>
#include <Max3421e.h>
#include <Max3421e_constants.h>
#include <Max_LCD.h>
#include <Usb.h>

#include <ptp.h>
#include <canoneos.h>

#define DEV_ADDR        1

// Canon EOS 400D
#define DATA_IN_EP      1
#define DATA_OUT_EP     2
#define INTERRUPT_EP    3
#define CONFIG_NUM      1

class CamStateHandlers : public EOSStateHandlers
{
      enum CamStates { stInitial, stDisconnected, stConnected };
      CamStates stateConnected;
    
public:
      CamStateHandlers() : stateConnected(stInitial) 
      {
      };
      
      virtual void OnDeviceDisconnectedState(PTP *ptp);
      virtual void OnDeviceInitializedState(PTP *ptp);
};

CamStateHandlers  CamStates;
CanonEOS          Eos(DEV_ADDR, DATA_IN_EP, DATA_OUT_EP, INTERRUPT_EP, CONFIG_NUM, &CamStates);



#define encoder0PinA  2
#define encoder0PinB  3

volatile int encoder0Pos = 0;


void doEncoder() {
  if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {
    encoder0Pos++;
  } else {
    encoder0Pos--;
  }
//  Serial.println (encoder0Pos, DEC);
}


void setup() {

  pinMode(encoder0PinA, INPUT); 
  digitalWrite(encoder0PinA, HIGH);       // turn on pullup resistor
  pinMode(encoder0PinB, INPUT); 
  digitalWrite(encoder0PinB, HIGH);       // turn on pullup resistor

  attachInterrupt(0, doEncoder, CHANGE);  // encoder pin on interrupt 0 - pin 2


  Serial.begin( 115200 );
  Serial.println("Start");
  Eos.Setup();
  delay( 200 );
}

void loop() {
  Eos.Task();
}

void CamStateHandlers::OnDeviceDisconnectedState(PTP *ptp) {
    if (stateConnected == stConnected || stateConnected == stInitial) {
      if (stateConnected == stConnected) {
        Eos.SwitchLiveView(false);
      }
      stateConnected = stDisconnected;
      Notify(PSTR("Camera disconnected.\r\n"));
    }
}

void CamStateHandlers::OnDeviceInitializedState(PTP *ptp) {
    if (stateConnected == stDisconnected) {
        stateConnected = stConnected;
        Eos.SwitchLiveView(true);
        delay(50);
    }

      if (encoder0Pos > 0) {
        Eos.MoveFocus(3);
      } else if (encoder0Pos < 0) {
        Eos.MoveFocus(0x8003);
      }
      encoder0Pos = 0;


}

void doEncoder_Expanded(){
  if (digitalRead(encoder0PinA) == HIGH) {
    if (digitalRead(encoder0PinB) == LOW) {
      encoder0Pos--;
    } else {
      encoder0Pos++;
    }
  } else { 
    if (digitalRead(encoder0PinB) == LOW) {
      encoder0Pos++;
    } else {
      encoder0Pos--;
    }
  }
//  Serial.println (encoder0Pos, DEC);
}

Dazu werden verschiedene Arduino-Libraries benötigt, wie z.B. (kann sein das ich eine vergessen habe):

https://github.com/felis/USB_Host_Shield
https://github.com/maniacbug/MemoryFree
https://github.com/felis/Arduino_Camera_Control

In der 'Arduino_Camera_Control' lib sind einige Examples enthalten (EOS & PTP, ein paar habe ich noch nicht zum laufen bekommen / fehlende libs),
daraus bekommt man denke ich alle benötigten Infos für das Projekt.
Muss nur noch passend zusammengesetzt werden :)

Die passende Hardware habe ich oben ja schon verlinkt, leider ist zur Zeit das USB-Host-Shield ausverkauft (vor 3 Tagen war noch eins da), kommen aber bestimmt bald wieder.
Desweiteren gibt es auch noch andere Hersteller und Bauformen(http://www.circuitsathome.com/arduino_usb_host_shield_projects), oder man sucht mal in ebay nach 'arduino usb host '


OFF TOPIC:
Wenn es dir um HDR, Interval oder Focus-Stacking geht,
dann schau dir mal Magic_Lantern (http://magiclantern.wikia.com/wiki/Magic_Lantern_Firmware_Wiki) an, da benötigt man keine externe Hardware, kan ich nur empfehlen !!!!!


Gruß,
Olli
 
Hi,
scheint zwar keiner wissen zu wollen aber ich schreibe trotz dem :p

Hab mal etwas weiter gebastelt und alle in ein Gehäuse gepackt (akku kommt auch noch rein).

Funktionen:
* Focus über eigenen Dreh-Encoder
* ISO über eigenen Dreh-Encoder
* Shutter-Speed über eigenen Dreh-Encoder
* Blende über eigenen Dreh-Encoder
* Auslöser über Taster

TODO:
* hmm, Video-Aufnahme starten/stoppen, allerdings finde ich nicht den passenden Code/Befehl dafür :( **Hilfeeeee !!!!!**

Gruß,
Olli

PS: Quellcode kommt noch

EDIT: finde es schade das die Einstellungen (ISO,Shutter,Blende) nicht während der Video-Aufnahme funktioniert (aber zum glück, der Focus geht)
 
Zuletzt bearbeitet:
Hi,
scheint zwar keiner wissen zu wollen aber ich schreibe trotz dem :p

Doch, doch! Auch wenn ich mich nicht in der Lage sehe, es nachzubauen, interessant allemal! ;)

Kann man das eigentlich nicht über eine Software, ähnlich liveview in EOS Utility (in erster Linie FF) an USB lösen? Ich werde mit den Einstellungen von ML in der Kamera irgendwie nicht warm....
 
Zuletzt bearbeitet:
Hi Ole123,
Doch, doch! Auch wenn ich mich nicht in der Lage sehe, es nachzubauen, interessant allemal!

Danke, danke.
Aber der Nachbau ist bisher recht einfach !

Material:
* 1 x Arduino-Board
* 1 x USB-Host-Shield
* 4 x Encoder
* 1 x Taster
* 1 x Gehäuse
* 1 x Akku

Arbeiten:
* die encoder mit Kabeln anlöten
* arduino + libs installieren (Lin,Win,Mac,...)
* ardunino flashen (vorher ein paar Stiftleisten anlöten)
* löcher bohren / boards einkleben
* Akku dran
fertig :)

Das Löten ist ziemlich einfach, keine SMD-Teile oder sonstiges gefummel.
Wer mag, dem kann ich auch gegen erstattung der Unkosten eins zusammenbauen.

Gruß,
Olli
 
Hättest du zufällig noch ne innenansicht von deinem gehäuse?
Kein Problem !

Ist noch nicht so wie ich es haben möchte, es kommen noch mehr Taster rein, und vielleicht noch ein paar Dreh-Encoder (will nix umschalten müssen, pro Wert ein Bedienelement).

Das DING im Deckel ist eine eingeklebte Gewindebuchse (aus einer alten Analog-EOS).

Die Encoder werde ich noch auf eine eigene Lochrasterplatine löten und per Schieberegister an den Arduino anbinden (etwas eleganter und bietet mehr Ports/Bedienelemente).

Gruß,
Olli

PS: zu den Material-Kosten: ~50Euro
 
Aha.
Kannte ich bisher nicht, ich habe mich allerdings auch noch nicht
intensiv mit der Filmerei bei den DSLRs beschäftigt.
Ist aber sehr sinnvoll. Manuell lassen sich die meisten
Linsen beim Filmen nicht angemessen focussieren.

Zwei Fragen fallen mir auf die schnelle ein.
Warum eine arduino, könnte man nicht was eigenes zusammenstellen?
Könnte man Focuspunkte setzten und mit definierter Geschwindigkeit
auf Tastendruck anfahren?


DAnke, Andreas
 
Benutzt du unter dem USB Host shield einen normalen Arduino oder was steckt dort?

Edit: Jetzt seh ich es. du nutzt einen Arduino Pro.
 
Zuletzt bearbeitet:
Hi,

Aha.
Kannte ich bisher nicht, ich habe mich allerdings auch noch nicht
intensiv mit der Filmerei bei den DSLRs beschäftigt.
Ist aber sehr sinnvoll. Manuell lassen sich die meisten
Linsen beim Filmen nicht angemessen focussieren.

Also erstmal muss ich sagen das das ganze auch für Fotos nützlich ist (wenn man den Aparat nicht anfassen möchte/kann) !

Zwei Fragen fallen mir auf die schnelle ein.
Warum eine arduino, könnte man nicht was eigenes zusammenstellen?
Könnte man Focuspunkte setzten und mit definierter Geschwindigkeit
auf Tastendruck anfahren?

Arduino habe ich deshalb genommen, da es am schnellsten und einfachsten umzusetzen war,
wenn jetzt 10-20 Leute sagen, wir wollen auch so en teil, könnte man auch eine eigene kleine Platine erstellen, einzelne lohnen sich aber nicht (zu teuer).

Das mit den Focus-Punkten anfahren sollte auch kein Problem sein,
da benötige ich aber auch wieder 1-2 Taster (Speichern und Anfahren) !

Gruß,
Olli

PS: Funk könnte man auch noch integrieren :D
 
Hi,
Also erstmal muss ich sagen das das ganze auch für Fotos nützlich ist (wenn man den Aparat nicht anfassen möchte/kann) !
Gruß,
Olli
PS: Funk könnte man auch noch integrieren :D

was ist denn für den USB Hostmodus nötig ? Prozessor Taktrate Speicher RAM flash, sowas ähnliches für den Fernauslöser baue ich grad ohne follow focus, das geht ja nur über USB, d.h. heisst USB Stack -> mega 128/256 ? 20MHz ?

klar da gehen Bilderserien, Belichtungsserien usw. auch noch rein dann halt über USB statt über Fernauslöser, allerdings ist ein m128/256 nicht mal eben auf dem Steckbrett aufgebaut wie ein m644 und die USB Steuerung bläht den Code auf ? der höhere Takt geht auf den Verbrauch !
 
Hi jar,
Auf dem Arduino-Board sitzt ein mega328 mit 16Mhz und 5V
An Flash werden laut Compiler ~11,5kB benötigt:
Binary sketch size: 11502 bytes (of a 30720 byte maximum)
RAM-Verbrauch kenne ich leider nicht.

Habe keine Ahnung welchen 'USB Hostmodus' der nutzt, oder was sonst so im Hintergrund los ist, wollte mir nicht so viel Arbeit machen und die Lib nimmt einem alles nötige ab :)

Für eine eigene Hardware würde ich auch einfach bei den Komponenten bleiben und nur eine eigene Platine/Layout fertigen.
Wenn mehrere Leute Lust drauf haben kann ich auch alle SMD-Arbeiten machen,
des schieb ich einfach in meinen Reflow-Ofen :D

Allzuviel an Funktionen wollte ich aber auch nicht rein packen,
dann kann man auch gleich ein kleines Linux/Android-Pad nutzen und hat damit auch gleich noch LiveView und 'Direct to Disk' Recording.

Mir ist es nur wichtig direkt an allen Einstellungen DREHEN zu können, ohne Menüs,Umschalter, ....

Ein Serielles-Menü/Schnittstelle hätte ich gerne noch, damit ich z.B. meinen Motor-Slider (mit Arduino & Stepper-Motoren) mit Anbinden kann (Step, HDR, step, HDR, step, HDR, step, HDR oder so)

Gruß,
Olli


Code-Update: http://www.multixmedia.org/test/USB-FollowFocus/FollowFocus.pde
 
Olli, Du bist ja völlig wahnsinnig *gg*

Das hört sich mal richtig gut an!

ISO, Blende, Fokus, das ist so das wichtigste beim Filmen.
Geil wäre in der Tat ein A->B fahren. :)

Wenn mein Umzugsstress vorbei ist, werd ich mri das mal genau angucken und sich mal nachbauen. Gerne dann auch Erfahrungsaustausch. Bin bei Bastelarbeiten relativ fit, können dann gerne mal schauen, was noch machbar ist. So nen abgesetzter Followfokus zusammen mit der MagicLantern "fokusanzeige" (kontrastkanten) dürfte das wirklich nett sein.

DANKE FÜR DEINE MÜHE !
 
Für eine eigene Hardware würde ich auch einfach bei den Komponenten bleiben und nur eine eigene Platine/Layout fertigen.
Wenn mehrere Leute Lust drauf haben kann ich auch alle SMD-Arbeiten machen,
des schieb ich einfach in meinen Reflow-Ofen :D

Ja, das fände ich auch interessant.

Allzuviel an Funktionen wollte ich aber auch nicht rein packen,...

..Mir ist es nur wichtig direkt an allen Einstellungen DREHEN zu können, ohne Menüs,Umschalter, ....
Und damit liegst du richtig! Kein overkill. :devilish:

Gruss, Andreas
 
ISO, Blende, Fokus, das ist so das wichtigste beim Filmen.
Geil wäre in der Tat ein A->B fahren. :)

Aber ja. Ich dachte dabei sogar an einstellbare Rampen,
also langsam anfahren - schneller - langsam zur Endposition.

Ich würde mich wirklich auf den Focus
als wesentliche Komponente konzentrieren.

Gruss, Andreas
 
Ja, das fände ich auch interessant.
Und damit liegst du richtig! Kein overkill. :devilish:
Gruss, Andreas

also wenn ich mein Projekt in Timer3 umwandel dann m256 mit allen Funktionen vom Timer2 + ! follow focus USB werden es mir dann offenhalten ob die "normalen" timerfunktionen wahlweise über den FB Anschluss gehen oder über USB, aber das dauert noch erst mal müsste timer2 fertig werden, die meiste Entwicklung ist ja SW und da hinke ich hinterher, immerhin hab ich den OP für das Mic schon mal bestückt, bin nur noch an der Verstärkungseinstellung, habe nicht dieselben ICs bekommen wie Meiserati aber r2r sind ja hoffententlich nicht so verschieden, muss nur die Mics testen und die Pegel
 
Hi jar,
bitte nicht zu sehr die Projekte vermischen, sonst wird es ziemlich schnell unübersichtlich :)

Gruß,
Olli
 
WERBUNG
Zurück
Oben Unten