16.01.2009, 16:04
|
#1
|
Benutzer
Registriert seit: 06.12.2008
Beiträge: 8.283
|
DIY IR Remote: Canon RC-1 + Pentax IR F + Nikon ML-L3 + Olympus RM-1
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:
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.
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:
__________________
Canon 450D, Tamron 10-24mm f/3,5-4,5, Canon EF-S 18-55mm IS f/3,5-5,6, Tamron SP AF 28-75mm f/2.8, Canon EF 50mm f/1.8 II, Canon EF 85mm f/1.8 USM, Tamron 70-200 mm SP DI f/2.8, Canon EF-S 55-250 IS, YongNuo YN-568EX, YongNuo YN-460 II, YongNuo YN-560
Geändert von MasterFX (29.01.2009 um 20:16 Uhr)
Grund: Update für Nikon ML-L3 + Olympus RM-1
|
|
|
16.01.2009, 20:17
|
#2
|
Benutzer
Registriert seit: 01.09.2008
Ort: Graz
Beiträge: 72
|
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
__________________
"Trying is the first step towards failure" -Homer Simpson
|
|
|
16.01.2009, 21:43
|
#3
|
Benutzer
Registriert seit: 19.01.2007
Ort: Berlin
Beiträge: 105
|
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
|
|
|
16.01.2009, 23:05
|
#4
|
Benutzer
Threadstarter
Registriert seit: 06.12.2008
Beiträge: 8.283
|
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.
__________________
Canon 450D, Tamron 10-24mm f/3,5-4,5, Canon EF-S 18-55mm IS f/3,5-5,6, Tamron SP AF 28-75mm f/2.8, Canon EF 50mm f/1.8 II, Canon EF 85mm f/1.8 USM, Tamron 70-200 mm SP DI f/2.8, Canon EF-S 55-250 IS, YongNuo YN-568EX, YongNuo YN-460 II, YongNuo YN-560
|
|
|
18.01.2009, 16:47
|
#5
|
Benutzer
Registriert seit: 30.07.2008
Ort: Wiesbaden
Beiträge: 109
|
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
habe einen Auslöser mit einem Atmega8 gebaut und würde es dort integrieren 
Danke
|
|
|
18.01.2009, 17:24
|
#6
|
Benutzer
Threadstarter
Registriert seit: 06.12.2008
Beiträge: 8.283
|
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
__________________
Canon 450D, Tamron 10-24mm f/3,5-4,5, Canon EF-S 18-55mm IS f/3,5-5,6, Tamron SP AF 28-75mm f/2.8, Canon EF 50mm f/1.8 II, Canon EF 85mm f/1.8 USM, Tamron 70-200 mm SP DI f/2.8, Canon EF-S 55-250 IS, YongNuo YN-568EX, YongNuo YN-460 II, YongNuo YN-560
|
|
|
18.01.2009, 17:34
|
#7
|
Benutzer
Registriert seit: 30.07.2008
Ort: Wiesbaden
Beiträge: 109
|
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)
Zitat:
Zitat von MasterFX
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
|
|
|
18.01.2009, 17:42
|
#8
|
Benutzer
Threadstarter
Registriert seit: 06.12.2008
Beiträge: 8.283
|
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.
__________________
Canon 450D, Tamron 10-24mm f/3,5-4,5, Canon EF-S 18-55mm IS f/3,5-5,6, Tamron SP AF 28-75mm f/2.8, Canon EF 50mm f/1.8 II, Canon EF 85mm f/1.8 USM, Tamron 70-200 mm SP DI f/2.8, Canon EF-S 55-250 IS, YongNuo YN-568EX, YongNuo YN-460 II, YongNuo YN-560
|
|
|
18.01.2009, 18:18
|
#9
|
Benutzer
Registriert seit: 30.07.2008
Ort: Wiesbaden
Beiträge: 109
|
AW: RC-1 Clone (IR Fernauslöser für Canon EOS)
Zitat:
Zitat von MasterFX
Naja eigentlich kann das doch nicht so schwer sein. Sind doch nur ein paar Schleifen und Zuweisungen, das sollte doch recht flott umgesetzt sein.
|
kannst mir ja helfen ;-)
ich weiß nicht genau wie ich das richtig umsetzen muss :-(
|
|
|
18.01.2009, 18:27
|
#10
|
Benutzer
Threadstarter
Registriert seit: 06.12.2008
Beiträge: 8.283
|
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.
__________________
Canon 450D, Tamron 10-24mm f/3,5-4,5, Canon EF-S 18-55mm IS f/3,5-5,6, Tamron SP AF 28-75mm f/2.8, Canon EF 50mm f/1.8 II, Canon EF 85mm f/1.8 USM, Tamron 70-200 mm SP DI f/2.8, Canon EF-S 55-250 IS, YongNuo YN-568EX, YongNuo YN-460 II, YongNuo YN-560
|
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Nutzungsbedingungen
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Werbung.
...
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:24 Uhr.
|
|

* * *
Zu viel Werbung?
Kostenlos registrieren!
* * *

|