Daljinski upravljač za Canon DSLR kamere
Tekst pripremili Vanja Jovanović i Goran Jovanović
Čuvena japanska kompanija Canon uz svoje kamere nudi i infracrveni (IR) daljinski upravljač koji nosi oznaku „Canon RC-1“. Radi se o jednostavnom uređaju, sa samo dve komande (dva tastera). Oba tastera služe da zadaju komandu snimi, pri čemu jedan aktivira snimanje trenutno a drugi sa vremenskim odlaganjem od 2 sekunde.
Canon RC-1
Princip rada
Princip rada se lako može otkriti metodom inverznog inženjeringa. Dovoljno je da se na IR-LED diodu prikači osciloskop i pritisnu tasteri. Daljinski šalje komandu u obliku dva niza od po 16 impulsa frekvencije 32.7 kHz. Kada se želi trenutno snimanje fotoaparata između nizova impulsa se pravi pauza od 7.33 mili sekunde a za odloženo snimanje od 2 sekunde ta pauza je 5.36 mili sekunde.
Slike sa ekrana osciloskopa
Rezultat analize tajminga i tolerancija, mereni sa Canon EOS 500D, izgledaju ovako:
Parametar | Original RC 1 | Tolerancija |
Broj impulsa | 16 | 9 - 22 |
Frekvencija impulsa | 32700 Hz | 29800-35500 Hz |
Kašnjenje između impulsa za brzo okidanje | 7.33 ms | 7.0 - 7.7 ms |
Kašnjenje između impulsa za okidanje sa kašnjenjem od 2 sekunde | 5.36 ms | 5.1 - 5.7 ms |
Izrada Canon daljinskog upravljača sa mikro-kontrolerom PIC12F675
Za daljinski upravljač je potrebno imati:
- predajnu IR (Infra Red) LED diodu,
- elektronsko kolo koje formira vremenski oblik struje diode u skladu sa definisanim protokolom,
- tastere za zadavanje komandi,
- bateriju za napajanje i
- kućište, ležište za bateriju,…
Za realizaciju smo koristili materijal koji smo već imali, pa je tako LED dioda iz starog pokvarenog daljinskog za TV, mikrokontroler Microchip PIC12F675 koji je ostao iz nekog ranijeg projekta (čak je prejak), itd…
Izbor mikrokontrolera PIC12F675 je odredio šemu uređaja. Mikrokontroleru treba obezbediti napajanje, pinovi VDD (1) i VSS (8). Ostaje još šest portova GP0 - GP5, ali su nam u ovoj realizaciji bila dovoljna tri porta. Pojednostavili smo šemu i smanjili broj potrebnih portova tako što:
- nismo koristili spoljni hardverski RESET, GP3/MCLR/VPP (4), već programski definisani RESET,
- koristili smo interni RC oscilator (već ugrađen u mikrokontroleru) umesto kvarcnog kristal povezanog na portove OSC1 (2) i OSC2 (3). Kvarcni oscilator je veoma tačan i stabilan dok je interni RC oscilator koji radi na 4 MHz samo stabilan a radna frekvencija može da značajnije odstupa od definisane. Zbog toga je neophodno softverska kalibracija oscilatora (biće detaljnije objašnjeno).
Na ovaj način je hardver minimiziran, pa je uređaj jednostavniji i minijaturniji.
Na portovima (pinovima) GP0 (7) i GP2 (5), koji su programirani kao ulazni, se proverava stanje tastera. Ako tasteri S1 ili S2 nisi pritisnuti, na ulaznim GP0 i GP2 portovima je nizak naponski nivo (GND) koji obezbeđuju otpornici R1 i R3 od 10K (vrednost nije kritična). Kondenzatori C1 i C3 od 100 nF (opet vrednost nije kritična) rade kao deo integratora i ne dozvoljavaju brzu promenu napona na ulazima. Dok je naponski nivo na ulazu nizak, ništa se ne događa, mikrokontroler je u sleep modu, čak ni interni RC oscilator ne radi. To omogućava izuzetno nisku potrošnju daljinskog upravljača.
Kada se jedan od tastera pritisne, naponski nivo na odgovarajućem ulazu postane visok. Tada se mikrokontroler „budi“ i generiše sekvencu koja aktivira trenutno ili odloženo snimanje. Da bi bilo jasnije zašto su potrebni kondenzatori (integratori) na ulazima, treba imati u vidu da je taster spora mehanička komponenta. Pri pritisku tastera i uspostavljanju električnog kontakta dešava spora mehanička oscilacija koju daleko brži mikrokontroler može da razume kao višestruko ponavljanje iste naredbe. Vremenska konstanta R1C1 (R3C3) traje duže od mehaničkih oscilacija, tako da pritisak na taster daje samo jedan impuls. U tom slučaju mehaničke oscilacije tastera nemaju uticaj na oblik impulsa.
Posle primljene komande, aktivira se takt oscilator mikrokontrolera. Na portu GP1 (6) se formiraju dve sekvenca od 16 impulsa frekvencije 32.7 kHz i sa odgovarajućom pauzom između sekvence impulsa (kao na slici sa osciloskopa). Mikrokontrolerov izlazni port teoretski može da da izlaznu struju do 25 mA (možda ali u kratkom spoju), a realno dosta manje. Zato se LED dioda ne napaja direktno sa porta, već preko MOSFET-a BSS138 koji može da obezbedi struju i do 220 mA. Ova jača struja je potrebna da bi daljinski imao veći domet.
Ako se želi maksimalan domet, dobro je obratiti više pažnje na izbor IR LED diode. Treba potražiti onu koja može da radi sa većim direktnim strujama a pri frekvenciji od 32 kHz. Talasna dužina infra-crvene svetlosti na kojoj se dobija maksimalno zračenje je takođe bitna. Tipične talasne dužine su 875 nm i 940 nm, ali je bitna karakteristika i ugao zračenja. Usmerene LED diode će dati veći domet. Nismo još proverili koja od ovih talasnih dužina daje bolje rezultate kada je u pitanju Canon DSLR.
Na primeru predajne LED diode IR333A za 940 nm, spektralna karakteristika (levo) i karakteristika zračenja u polarnom koordinatnom sistemu (desno) izgledaju kao na slici.
Šema i štampana pločica (PCB) su crtane u Altium Designer-u. Evo kako izgleda crtež jedno-slojnog PCB-a. Otpornici R1 i R3, kondenzatori C1 i C3 i MOS FET su SMD komponente i montiraju se sa donje strane štampane pločice. Da ne bi imali problema sa lemljenjem izbor je pao na krupnija 0805 SMD kućišta. Ostale komponente su „through-hole“ i montiraju se sa gornje strane pločice.
Program za mikrokontroler
Program za mikrokontroler je pisan u MikroElektronika MikroC-u i jednostavan je.
Glavni deo programa se aktivira kao interrapt-on-change funkcija kada je pritisnut neki od dva tastera, funkcija void interrupt (). U istoj funkciji su programirane obe sekvence izlaznog signala a izvršiće se ona koja odgovara pritisnutom tasteru (GPIO.B0 ili GPIO.B2). Posao u generisanju sekvenci dosta olakšava funkcija delay () koja obezbeđuje precizno podešeno kašnjenje.
U main funkciji su podešeni početni parametri programa, uključujući podešavanje portova (ulazni ili izlazni), neki vremenski parametri, tipovi prekida, vrednost kalibracionog registra za unutrašnji RC oscilator, itd.
Kalibracija oscilatora se vrši upisivanjem odgovarajuće vrednosti u registar OSCCAL, bitovi od 2 do 7. Upisana vrednost utiče na rad oscilatora tako da vrednost
- 111111 odgovara maksimalnoj frekvenciji,
- 100000 odgovara nominalnoj (srednjoj) vrednosti frekvencije i
- 000000 odgovara minimalnoj frekvenciji.
Osciloskopom se izmeri frekvencija niza impulsa koju generiše PIC pa ako ona ne iznosi 32.7 kHz upisivanjem veće ili manje vrednosti u kalibracioni registar OSCCAL podesiti frekvenciju što približnije željenoj vrednosti (nije neophodno da bude savršeno tačna). Na primeru sklopljenog uređaja se vidi da je upisana binarna vrednost OSCCAL = 0b01010100, tj. da je u postupku kalibracije smanjena frekvencija oscilatora u odnosu na nominalnu vrednost.
Na kraju, u main funkciji se izvršava beskonačna while (1) petlja sa dve asemblerske naredne. Uloga ove petlje je da stalno vraća mikrokontroler u sleep stanje kada on troši minimalnu vrednost struje (u nano amperima) i tako značajno produžava vek baterija.
Sklapanje daljinskog
Kada smo završili lemljenje i spakovali sve u plastičnu kutiju, daljinski je izgledao kao na slici. Koriste se dve Ni-MH punjive AAA baterije. Ako želite da dodatno smanjite dimenzije uređaja, može se koristiti i litijumska baterija od 3 V, recimo CR2032.
Zaključak
Zbog svoje jednostavnosti, ovaj projekat je prava mera studentskog projekta. A i sam daljinski za foto aparat je veoma koristan onima koji ga imaju i vole da koriste. Projekat pokriva Canon aparate ali se ista šema uz izmenu softvera može primeniti na Nikon aparate. O tome možda sledećom prilikom.
Sa druge strane, ovaj se daljinski može kupiti za relativno malu sumu novca pa se postavlja pitanje zašto ga praviti. Ako projekat samo kopira mogućnosti originalnog daljinskog, tada se ceo posao zaista može dovesti u sumnju. Sa druge strane, kada imate sopstveni projekat, on je otvoren za izmene i nadogradnju. Evo nekoliko ideja:
- Daljinski može da se nadogradi Time-lapse timer-om. PIC ima još dosta neiskorišćenih resursa, samo treba malo nadograditi postojeći softver i hardver.
- Aktivacija snimanja uz pomoć zvuka je zanimljiva opcija. Treba bilo kakav mikrofon sa odgovarajućim pred-pojačavačem postaviti da igra ulogu okidnog tastera. Postoje vrlo zanimljive fotografije koje hvataju momente povezane sa zvukom, recimo otvaranje boce šampanjca ili slično.
- Aktivacija snimanja uz pomoć svetla. To može da se dobije dodavanjem foto detektora (obično foto-tranzistora) kao okidača. Dobar primer su snimci atmosferskog pražnjenja (sevanja).
Uz malo mašte ovaj spisak ideja se lako može proširiti.