venerdì 24 agosto 2012

Telecomando infrarossi per DSLR canon, nikon e pentax

L'obiettivo di oggi è costruire un telecomando RC-1 per il controllo delle fotocamere canon DSLR.
A fondo pagina il firmware per la versione completa con controllo canon, nikon e pentax.
 
Dopo una rapida occhiata al lavoro di 'reverse engineering' per un telecomando commerciale trovato su internet: http://www.doc-diy.net/photo/rc-1_hacked/  il segnale da inviare alla fotocamera deve avere (onda quadra) la frequenza di circa 32.700Hz e può essere di due tipi:

1) Scatto immediato: Treno di 16 impulsi, pausa di 7.330us e poi altro treno di 16 impulsi
2) Scatto rit. di 2 sec: Treno di 16 impulsi, pausa di 5.360us e poi altro treno di 16 impulsi

per avere lo scatto immediato o scatto dopo un ritardo di 2 sec.

Di seguito i parametri del telecomando originale e la tolleranza ammessa negli stessi:

Parameter Original RC-1   Tolerance
Num. of pulses 16      9 - 22
Burst frequency 32.700 Hz            29.800 - 35.500 Hz
Delay for immediate trigger 7.33 ms7.0 - 7.7 ms
Delay for 2 s delayed trigger 5.36 ms 5.1 - 5.7 ms

Per la realizzazione ho impiegato il microprocessore 12F683; impostato con l'oscillatore interno a 4MHz e resistenza di pull-up attiva sul pin 6 - GPO.1 (dove va collegato il pulsante).

L'uscita al pin 7 - GPO.0 controlla il gate del mosfet n-channel 2N7000 e quindi il led infrarosso TSAL6200 a 940nm con la resistenza da 180Ohm in serie sul drain collegata ai 5V.



Come alternativa l'uscita al pin 7 - GPO.0 può essere collegata direttamente al diodo infrarosso mediante la resistenza da 180 Ohm.



Di seguito la lista componenti con a fianco il prezzo del singolo componente preso da RS http://it.rs-online.com/web/ . Con meno di 5 euro costruisci il telecomando.



Saldatore, filo di rame e stagno ed ecco la realizzazione su un piccolo pcb millefori:


Il firmware è scritto in PICBASIC; la routine del singolo impulso in assembler sfruttando il ritardo di 2us (8 colpi di clock) introdotto dall'istruzione 'goto $+1'.
Portare l'uscita GPIO.0 alta o bassa ('bsf GPIO, 0' o 'bcf GPIO, 0') introduce invece un ritardo di 1us (4 colpi di clock).
Per creare il ritardo centrale tra i due treni da 16 impulsi  ho utilizzato il comando PAUSEUS(7330)
o PAUSEUS(5360).
Con clock a 4MHZ non è possibile realizzare con PAUSEUS ritardi inferiori ai 24us; questo spiega l'utilizzo di istruzioni assembler per la creazione dei burst a 32700Hz.
 
Nota bene: le considerazioni sui ritardi istruzioni assembler sono valide con il clock impostato a 4MHz.
Ogni istruzione viene eseguita in un ciclo macchina (4 colpi di clock) eccetto per le istruzioni di salto (ma solo quando il salto e' effettuato) e per le istruzioni che modificano il program counter; in questi due casi l'istruzione richiede 2 cicli macchina (8 colpi di clock).
 
Il programma nel loop principale attende la pressione del tasto; alla pressione dopo 500ms verifica se ancora premuto e quindi discrimina se inviare il segnale di tipo 1 o 2.
La pressione del tasto provoca lo scatto immediato (impulso di tipo 1); la pressione per più di 1/2 sec provoca quindi lo scatto ritardato di 2sec (impulso di tipo 2).
Di seguito il link del firmware (.hex) : canon_firmware.hex
Di seguito l'elenco delle fotocamere supportate dal telecomando RC-1:
Digital Rebel T3i / 600D
Digital Rebel T2i / 550D
Digital Rebel T1i / 500D
Digital Rebel XSi / 450D
Canon EOS Digital Rebel XTi / 400D
Canon EOS Digital Rebel XT / 350D
Canon EOS Digital Rebel / 300D
Canon EOS 60D
Canon EOS 7D
Canon EOS 5D Mark II
 
Allego anche la versione del firmware che supporta nikon e pentax : dslr_firmware.hex
 
Nikon e Pentax vengono comandate da burst a 38Khz; per i segnali si rimanda al progetto sbprojects.
Di seguito le forme d'onda per nikon e pentax.
 

 
Per il momento il telecomando è stato testato solo sul modello canon 450d.
 

Nessun commento:

Posta un commento