• 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

DIY IR Remote: Canon RC-1 + Pentax IR F + Nikon ML-L3 + Olympus RM-1

MasterFX

Themenersteller
Hallo zusammen,
ich habe mich mal gestern ein wenig hingesetzt und einen RC-1 Clone gebastelt. Größtenteils aus Reste die ich hier so rumliegen hatte. Habe von daher eigentlich nur die Mikrocontroller (ATtiny25) kaufen müssen. Für 1,25€ funktioniert das Ding echt gut.
Reichtweite ca. 3-4m. Schaltplan und Quellcode folgt...

UPDATE #1:
Ich habe jetzt versucht den Code so anzupassen, dass er auch für die Pentax Kameras geht (IR-Ferbedienung F). Dafür einfach das entsprechende "#define" auskommentieren. Falls das jemand testen kann, wäre es nett wenn er kurz Rückmeldung gibt, ob es klappt


UPDATE #2:
Ich habe jetzt auch die Codes für Nikon ML-L3 und Olympus RM-1 implementiert. Ich habe das jetzt einfach blind programmiert, da ich keine dieser Cams besitze. Also wenn jemand das testen und eben eine Rückmeldung geben könnte, wäre das sehr nett. Insbesondere bei der Olympus bin ich mir nicht sicher, ob das so klappt. Es ist von allen nur die sofortige Auslösung drin, also kein Zoom etc.


So hier nun der Schaltplan:

rc1_clone.png


Der 18 Ohm Widerstand kann auch weggelassen werden, dadurch wird die Reichweite nochmals erhöht.
Der ATtiny25 wird mit dem internen 8MHz Oszillator betrieben. Der Haken bei CKDIV8 muss daher ENTFERNT werden, da er sonst nur mit 1MHz läuft.

fuse.png


Und der Quellcode:
Code:
#include <avr/io.h> 
#include <avr/interrupt.h>
#include <stdint.h>
#include <util/delay.h>
#include <avr/sleep.h>

/* Uncomment for your Camera Type */
#define CANON
//#define PENTAX
//#define NIKON
//#define OLYMPUS

/* defines for RC-1 IR Protocoll */
#define NR_PULSES 		16
#define DELAY_SHOT		7.33
#define DELAY_DSHOT 		5.36

/* Macros for IR LED */
#define LED_ON()		PORTB |= (1<<PB0) | (1<<PB1) | (1<<PB2)
#define LED_OFF()		PORTB &= ~((1<<PB0) | (1<<PB1) | (1<<PB2))


#define PULSE_36k()		LED_ON(); _delay_us(15.24);	LED_OFF(); _delay_us(15.24)
#define PULSE_38k()		LED_ON(); _delay_us(13.15);	LED_OFF(); _delay_us(13.15)
#define PULSE_38_4k()		LED_ON(); _delay_us(13.02);	LED_OFF(); _delay_us(13.02)
#define PULSE_40k()		LED_ON(); _delay_us(12.5);	LED_OFF(); _delay_us(12.5)


int main(){


	DDRB   = (1<<PB0) | (1<<PB1) | (1<<PB2); /* PB0-2 as Output for IR LED */
	PORTB |= (1<<PB3) | (1<<PB4);		/* Pullup for PB3 and PB4 */

	PCMSK  = (1<<PCINT3) | (1<<PCINT4);	/* Pin Change Interrupt for Pin3+4*/
	GIMSK |= (1<<PCIE);					/* Enable Pin Change Interrupt */

	sei();	/* Enable Interrupts */

	/* Power-down Mode until Key pressed */
	while(1){
	

		set_sleep_mode(SLEEP_MODE_PWR_DOWN);
		sleep_mode();

		/* Wait 100ms after Keypress */
		_delay_ms(100);

	}

	return 0;
}

/* Pin Change Interrupt ISR */
ISR(PCINT0_vect){

#ifdef CANON
	uint8_t i;
	/* Key pressed for undelayed Shot ? */
	if((PINB & 1<<PB3) == 0){
		for(i = 0; i < NR_PULSES; i++){
			PULSE_36k();
		}
		_delay_ms(DELAY_SHOT);
		for(i = 0; i < NR_PULSES; i++){
			PULSE_36k();
		}
	}
	/* Key pressed for delayed Shot ? */
	else if((PINB & 1<<PB4) == 0){
		for(i = 0; i < NR_PULSES; i++){
			PULSE_36k();
		}
		_delay_ms(DELAY_DSHOT);
		for(i = 0; i < NR_PULSES; i++){
			PULSE_36k();
		}
	}

#elif defined PENTAX
	uint16_t i;
	uint8_t	j;

	if((PINB & 1<<PB3) == 0){
		for(i = 0; i < 494; i++){
			PULSE_38k();
		}
		_delay_ms(3);
		for(j = 0; j < 7; j++){
			for(i = 0; i < 38; i++){
				PULSE_38k();
			}
			_delay_ms(1);
		}		

	}

#elif defined NIKON
	uint8_t i;
	uint8_t	j;

	if((PINB & 1<<PB3) == 0){
		for(j = 0; j < 2; j++){
			for(i = 0; i < 77; i++){
				PULSE_38_4k();
			}
			_delay_ms(27.83);
			for(i = 0; i < 15; i++){
				PULSE_38_4k();
			}
			_delay_ms(1.58);
			for(i = 0; i < 16; i++){
				PULSE_38_4k();
			}
			_delay_ms(3.58);
			for(i = 0; i < 16; i++){
				PULSE_38_4k();
			}
			if(!j)
				_delay_ms(63.2);
		}
	}


#elif defined OLYMPUS
	uint8_t i,j;
	/* Code for Shot */
	uint32_t code=0x61DC807F;
	uint32_t mask=0x80000000;

	if((PINB & 1<<PB3) == 0){
		for(i = 0; i < 152; i++){
			PULSE_40k();
		}
		for(i = 0; i < 22; i++){
			PULSE_40k();
		}
		_delay_ms(4);
		j = 32;
		while(j--){
			if(code & mask){
				_delay_ms(1.5); 
				for(i=0; i < 20; i++){ 
					PULSE_40k();
				}
			}
			else{
				_delay_us(500); 
				for(i=0; i < 20; i++){ 
					PULSE_40k();
				}
			}
			mask >>= 1;
		}

	}

#endif

}
Codegrößen: (AVR-GCC mit -O2)
Canon: 360 Bytes
Pentax: 316 Bytes
Nikon: 422 Bytes
Olympus: 444 Bytes

Da ist also noch genug Platz für mehr Funktionalität. Ich hatte mir schon überlegt, an den übrigen Pin einen weiteren Schalter anzubauen um so z.B. automatisiert Langzeitbelichtungen von >30s zu machen.
Die Stromaufnahme liegt bei weniger als 0.5µA wenn man keine Taste drückt. Die Lithiumbatterie hält so also über 20Jahre!

Wer nicht selber kompilieren will/kann, dem kann ich auch gerne das HEX-File schicken. Einfach ne PN schicken!

Hier nochmal die Timings:
rc1timingur8.png
 
Zuletzt bearbeitet:
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Hi!

Ich wollt ihn mir auch mal nachbauen, bin dann allerdings irgendwie nicht dazugekommen. Vielleicht bau ich ihn mir jetzt aber in nächster zeit mal nach, da ich zurzeit nur den RC-5 hab und der nur mit 2sek Verzögerung auslöst.
Danke für die Anleitung!

Lg
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Hallo,

So etwas habe ich auch mal gebaut, siehe

http://www.doc-diy.net/photo/eos_ir_remote

Ich denke Du kannst den Widerstand vor der IR-LED komplett weglassen, vielleicht ist dann noch ein Meter mehr drin. Die 4uA Ruhestrom ist ganz schön viel, laut Datenblatt kommt man unter 0.5uA (40 Jahre:). Hast Du alles ausgeschaltet? Watchdogtimer? Vielleicht leckt der Elko.

Grüße,
Lukasz
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Hallo Lukasz,
ja das habe ich gesehen. Dir habe ich es ja zu verdanken, dass ich überhaupt wusste wie das Protokoll aussieht. Vielen Dank dafür!
Ich bastel halt lieber selber, darum habe ich den Schaltplan von dir nicht übernommen. Das mit dem Widerstand stimm natürlich. Aber ob nun 5 oder 3 Meter, was solls. Ist ja auch nur der erste Versuch.

Stimmt, sind eher 0.4µ. Ich hatte mich zunächst nur auf den Wert in der Tabelle gestützt, da steht das mit Watchdog.
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Hat jemand von euch den Code auch auch in VB geschrieben ?
bzw kann mir jemand dabei mal helfen :angel:

habe einen Auslöser mit einem Atmega8 gebaut und würde es dort integrieren:cool:
Danke
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

VB ??
Wenn dann meinst du Bascom oder?
Kompilier doch einfach mit WinAVR und gut
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

VB ??
Wenn dann meinst du Bascom oder?
Kompilier doch einfach mit WinAVR und gut

ja in Bascom ;-)

du meinst den QT der Oben steht?
ich würde es gerne in die Schaltung integrieren die ich momentan schon aufgebaut habe ( Zeitverzögerung, Display usw. ) deswegen würde ich es gerne in Bascom programmieren.

oder kann ich einfach eine Zeichenfolge über "print" ausgeben:confused:
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Naja eigentlich kann das doch nicht so schwer sein. Sind doch nur ein paar Schleifen und Zuweisungen, das sollte doch recht flott umgesetzt sein.
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Kannst du denn Bascom?
Dann weißt du doch wie man Register setzt und Schleifen (do... until oder for...next) macht oder? Siehste und mehr brauchst du doch gar nicht. _delay_ms ist in Bascom doch Waitms, oder nicht? Und dann hast du es doch schon fast.
Ich kann leider kein Bascom.
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Kannst du denn Bascom?
Dann weißt du doch wie man Register setzt und Schleifen (do... until oder for...next) macht oder? Siehste und mehr brauchst du doch gar nicht. _delay_ms ist in Bascom doch Waitms, oder nicht? Und dann hast du es doch schon fast.
Ich kann leider kein Bascom.

ja waitms ist kein Problem und das mit den schleifen ist auch leicht

sind es einfach Impulse verschiedener Längen ?
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Ja.
Led An für 15.24µs => Led aus für 15.24µs und das ganze 16 mal hintereinander. Dann 5,36ms bzw 7,33ms warten und dann wieder 16 Pulse.

EDIT:
Hier nochmal ein Bild
 
Zuletzt bearbeitet:
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Ja.
Led An für 15.24µs => Led aus für 15.24µs und das ganze 16 mal hintereinander. Dann 5,36ms bzw 7,33ms warten und dann wieder 16 Pulse.

EDIT:
Hier nochmal ein Bild
Ah dank das hilft mir schon mal etwas weiter(y)
ich hoffe das Timing klappt auch in Bascom
weißt du wir groß die Abweichung sein darf?
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Ah dank das hilft mir schon mal etwas weiter(y)
ich hoffe das Timing klappt auch in Bascom
weißt du wir groß die Abweichung sein darf?
Schau mal HIER

Ist relativ tolerant. Musst aber bedenken, dass der Oszillator bei 3V auf 8MHz kalibriert ist. Bei höherer Spannung wird er langsamer, da musst du dann F_CPU dann einfach etwas niedriger einstellen.
 
Zuletzt bearbeitet:
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Schau mal HIER

Ist relativ tolerant. Musst aber bedenken, dass der Oszillator bei 3V auf 8MHz kalibriert ist. Bei höherer Spannung wird er schneller, da musst du dann F_CPU dann einfach etwas niedriger einstellen.

so wenn ich eine Endlosschleife programmiere komme ich auf 32,7Khz obwohl ich bei der Programmierung "waitus 15" eingegeben habe komm ich genau auf das richtige raus. Bei der pause habe ich dann "Waitus 7330" als wert eingesetzt und auch schon "waitms 7" versucht

erst mal keine Reaktion
ich kann allerdings nicht sagen ob ich hier momentan auch eine IR Diode habe aber ich denke schon eine UV-LED müsste man sehen ?!?!
hab die Diode hier liegen gehabt, weiß aber nicht mehr genau was es für eine ist.
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

so wenn ich eine Endlosschleife programmiere komme ich auf 32,7Khz obwohl ich bei der Programmierung "waitus 15" eingegeben habe komm ich genau auf das richtige raus. Bei der pause habe ich dann "Waitus 7330" als wert eingesetzt und auch schon "waitms 7" versucht

erst mal keine Reaktion
ich kann allerdings nicht sagen ob ich hier momentan auch eine IR Diode habe aber ich denke schon eine UV-LED müsste man sehen ?!?!
hab die Diode hier liegen gehabt, weiß aber nicht mehr genau was es für eine ist.
Ich kenne weder deine Schaltung, noch sehe ich ein Quellcode und wie die Fuses bei dir gesetzt sind weiß ich auch nicht. Also kann ich dir jetzt auch so nicht helfen.
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Ich kenne weder deine Schaltung, noch sehe ich ein Quellcode und wie die Fuses bei dir gesetzt sind weiß ich auch nicht. Also kann ich dir jetzt auch so nicht helfen.

die fuses sind so gesetzt das er mit dem ext. 8Mhz Quarz arbeitet
programmiert habe ich es jetzt so einfach wie möglich

Code:
$regfile = "m8def.dat"

$crystal = 8000000

Ddrc = &B011111111



Main:



Waitms 500

Portc.0 = 1
waitus 15
Portc.0 = 0
Waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0


Waitus 7330


Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0
waitus 15
Portc.0 = 1
waitus 15
Portc.0 = 0


Wait 5



Goto Main
ggf würde ich morgen mal beim Conrad vorbei fahren um eine neue Diode zu holen
welchen Typ sollte ich da nehmen ?
 
Zuletzt bearbeitet:
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Also erstmal würde ich das in einer For-Next schleife machen.
Wenn du es nicht aufblinken siehst, kann es auch schlicht und ergreifend daher kommen, weil es so schnell ist. Ich meine 15µs ist wirklich nicht viel. Nimm mal ne Digicam und richte die auf die Diode, dann solltest du was sehen.

Welche Diode du nimmst ist eigentlich egal. Die IR Dioden haben alle meist einen durchlassstrom von > 100mA. Nimm einfach die billigste oder bau am besten so wie ich ne alte Fernbedienung auseinander.
 
Zuletzt bearbeitet:
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

Also erstmal würde ich das in einer For-Next schleife machen.
Wenn du es nicht aufblinken siehst, kann es auch schlicht und ergreifend daher kommen, weil es so schnell ist. Ich meine 15µs ist wirklich nicht viel. Nimm mal ne Digicam und richte die auf die Diode, dann solltest du was sehen.

Welche Diode du nimmst ist eigentlich egal. Die IR Dioden haben alle meist einen durchlassstrom von > 100mA. Nimm einfach die billigste oder bau am besten so wie ich ne alte Fernbedienung auseinander.

wenn ich ein dauerndes Leuchten programmiert habe konnte ich se auch mit der Digicam ohne weiteres sehen ( den Trick kenne ich ;) )
hab noch eine andere bekommen die werde ich heute mal testen.(y)
 
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)

wenn ich ein dauerndes Leuchten programmiert habe konnte ich se auch mit der Digicam ohne weiteres sehen ( den Trick kenne ich ;) )
hab noch eine andere bekommen die werde ich heute mal testen.(y)
1. Hast du kein Dauerleuchten programmiert und zweitens solltest du auch bedenken, dass UV-LEDs eine höhere Spannung haben (meist 3,4V). Wenn du 3V Betriebsspannug hast wird die also auch nicht mehr mit voller Helligkeit leuchten, und dazu kommt noch, dass das UV Licht ja für den Menschen nicht mehr so intensiv wahrnehmbar ist. Nimm zum testen lieber eine LED im sichtbaren Wellenlängenbereich.
 
WERBUNG
Zurück
Oben Unten