• 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 April 2024.
    Thema: "Sprichwörtlich"

    Nur noch bis zum 30.04.2024 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
WERBUNG

Canon RC-1 IR Fernbedienung: Protokoll + Schaltung

luka

Themenersteller
Hallo,

Ich habe gute Nachrichten für Bastler! Ich habe vor kurzem die Infrarot-Fernbedienung RC-1 von Canon etwas genauer unter die Lupe genommen und das Kommunikationsprotokoll ausgemessen. Es ist kein richtiges Protokoll wie z.B in einer TV-Fernbedienung. Das gesendete Signal besteht ganz einfach aus zwei Pulsfolgen. Die zwei Auslösemodi (sofort oder nach 2 Sekunden) werden durch einen unterschiedlichen Zeitabstand zwischen den Pulsfolgen kodiert. Die genauen Spezifikationen sind hier zu finden:
http://www.doc-diy.net/photo/rc-1_hacked/
Canon zeigt sich also bastlerfreundlich. Deshalb habe ich auch gleich die entsprechende Selbstbauschaltung mit einem AVR Microcontroller entworfen. Sie ist hier zu finden: http://www.doc-diy.net/photo/eos_ir_remote/. Ich gebe zu, Geld kann man hier durch Selbstbau kaum sparen. Dafür könnte die Trigger-Schaltung z.B. Teil eines IR-Intervalltriggers o.ä. sein.
Übrigens, an der EOS 400D wird beim einem einzigen IR-Auslösen gleich die ganze Bracketing-Serie (sofern aktiviert) mit drei Aufnahmen abgefeuert. Das ist sehr praktisch bei HDR-Aufnahmen.

Viele Grüße,
Lukasz
 
Sehr interessant, vielen Dank! Da ich auch ab und zu mit AVRs bastle, werde ich mir das mal näher ansehen!
 
Hi!

Kleine Idee am Rand:
Für fast alle Geräte mit IR Port (Handy, Palm etc.) gibt's "Lernfähige" Fernbedienungssoftware... Klappt mit Palm Tungsten T5 einwandfrei, ein Bekannter nutzt sein Handy...

Grüße, Stefan
 
Hallo,

Das einzige Problem beim IR Port könnte die Reichweite sein. In der Canon-Fernbedindung fließt ein ziemlich hoher Strom durch die IR-LED um auf die 5 Meter Reichweite zu kommen. Fürs Auslösen aus der Nähe ist die Idee aber super.

Lukasz
 
Hy,

wie schaut denn das Signal für die Canon 60D aus? Ich brächte ja eine RC-6 Fernbedienung. Da kann ich ja nicht das gleiche Signal nehmen?

Könnt Ihr mir da weiterhelfen?
 
Ahja, im Handbuch wärs auchgestanden :) Trotzdem danke.
Hab mein Signal nach deinem Bild gestaltet.
Ich hab eine ATMEGA 328(Arduino Nano V3.0) verwendet.

Code:
#include <Tone.h>

int SEND_PIN = 2;              
int SWITCH_PIN = 3;
int SIGNAL_PIN = 4;

Tone Generator;

void setup()
{
  pinMode(SEND_PIN, OUTPUT);     
  pinMode(SWITCH_PIN, INPUT);
  pinMode(SIGNAL_PIN, OUTPUT);
  
  Generator.begin(SIGNAL_PIN);
  Generator.play(32786);
    
  Serial.begin(9600); 
}

void loop()
{
  //Serial.println(digitalRead(SWITCH_PIN));
  if(digitalRead(SWITCH_PIN))
  {
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);
    digitalWrite(SEND_PIN, LOW);
    delayMicroseconds(7330);      
  }
}

Schaltplan siehe Anhang.

Aber irgendwie funktioniert das Ganze nicht... Hab ich irgendwas übersehn oder falschgemacht?
Hoff Du kannst mir da weiterhelfen!
 
Ich kenne jetzt die API vom Arduino nicht, aber wenn es prinzipiell richtig ist, müsstest du nach delayMicroseconds(7330) nochmal einen 488µs Impuls senden, also:
Code:
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);
    digitalWrite(SEND_PIN, LOW);
    delayMicroseconds(7330); 
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);
Die Kamera muss natürlich auch auf IR Empfang gestellt werden...
 
Die Fkt loop:
Code:
void loop()
{
  //Serial.println(digitalRead(SWITCH_PIN));
  if(digitalRead(SWITCH_PIN))
  {
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);
    digitalWrite(SEND_PIN, LOW);
    delayMicroseconds(7330);      
  }
}

wiederholt sich immer. also schaltet er nach die 7.33ms gleich wieder ein, weil er zu digitalWrite(SEND_PIN, HIGH); hüpft... Das müßte passen...

Ja bei der Cam hab ich DRIVE auf 2 Sec Verzögerung gestellt. Oder muß ich da noch was aktiveren? Im Handbuch hab ich da nichts dazu gesehn.
 
Die Fkt loop:
Code:
void loop()
{
  //Serial.println(digitalRead(SWITCH_PIN));
  if(digitalRead(SWITCH_PIN))
  {
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);
    digitalWrite(SEND_PIN, LOW);
    delayMicroseconds(7330);      
  }
}

wiederholt sich immer. also schaltet er nach die 7.33ms gleich wieder ein, weil er zu digitalWrite(SEND_PIN, HIGH); hüpft... Das müßte passen...
möglicherweise mag die Cam das nicht, wenn er gleich wieder loslegt. Mach mal den 488µs Puls noch rein und warte dann 1 Sek oder so.
Hast du mal geschaut (z.B. mit einer Kompaktknipse oder LiveView) ob die IR-LED überhaupt hustet?
 
Hab jetzt den Impuls reingeben
Code:
void loop()
{
  //Serial.println(digitalRead(SWITCH_PIN));
  if(digitalRead(SWITCH_PIN))
  {
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);
    digitalWrite(SEND_PIN, LOW);
    delayMicroseconds(7330);  
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);

    delay(1000);    
  }
}

Diode hab ich überprüft. Mit dem Code leuchtet sie jetzt, und man sieht einflackern, das werden die 7.33ms sein. Aber Die Cam löst trotzdem nicht aus?
 
Hab jetzt den Impuls reingeben
Code:
void loop()
{
  //Serial.println(digitalRead(SWITCH_PIN));
  if(digitalRead(SWITCH_PIN))
  {
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);
    digitalWrite(SEND_PIN, LOW);
    delayMicroseconds(7330);  
    digitalWrite(SEND_PIN, HIGH);
    delayMicroseconds(488);

    delay(1000);    
  }
}

Diode hab ich überprüft. Mit dem Code leuchtet sie jetzt, und man sieht einflackern, das werden die 7.33ms sein. Aber Die Cam löst trotzdem nicht aus?
Dann weiß ich auch nicht. Wie gesagt ich kenne die Arduino API nicht und ich weiß nicht ob die Diode jetzt tatsächlich mit 32khz moduliert wird. Vielleicht läuft der µC ja auch mit einer falschen Taktfrequenz? (bzw. falsch definiert?!)
 
Die Wellenläge ist meist 880nm oder 950nm. Also fürs bloße Auge nicht sichbar, für Digicam Sensoren jedoch schon...

Übrigens könntest du das Signal der IR-Diode (also der Puls der an der Diode anliegt) auch über die Soundkarte deines PCs aufnehmen. Einfach Audacity installieren, Samplerate auf 96 kHz stellen und die Anode der IR-LED z.B. über einen Serienwiderstand (ggf. noch über nen 100p Kerko) und GND an die Soundkarte.
 
Zuletzt bearbeitet:
WERBUNG
Zurück
Oben Unten