Scatto programmabile per fotocamere digitali

Quando le cose succedono troppo lentamente


Vista del sistema completo

La postazione di prova

Vista del circuito (prototipo)

Vista del contenitore con i led di segnalazione

Vista del servomotore

Vista del circuito in opera

Aggiornamenti e download

09.04.2009 : Versione 1.0 : Installazione e collaudo con successo.

Schema Elettrico (.PDF - 239 Kbyte)
Circuito stampato - Vista complessiva (.PDF - 210 Kbyte)
Circuito stampato - Lato Componenti (.PDF - 185 Kbyte)
Circuito stampato - Lato Rame (.PDF - 163 Kbyte)
Sorgente per Pic (.TXT - 10 Kbyte)

Scatta ma senza fretta

Non volendo buttare la mia vecchia fotocamera digitale, una Canon A50 con diecimila scatti al suo attivo, ormai superata dalla sorella maggiore Canon PowerShot G6, ho pensato di riutilizzarla per scattare delle foto ad intervalli prefissati di 15, 30 o 60 minuti, così da poter vedere la crescita delle piante o immortalare altri fenomeni che hanno bisogno di tempi particolarmente lunghi per essere apprezzati.

In questo modo, con un semplice software disponibile gratuitamente, sarà possibile montare le fotografie in sequenza, realizzando un filmato in cui potremo vedere, ad esempio, la crescita delle nostre piante, il tutto senza eseguire modifiche alla fotocamera.

Ho utilizzato una caratteristica semplice, ma interessante, della fotocamera: dopo essere stata attivata (girando la ghiera d'impostazione dalla posizione OFF a quella P che permette di fare normalmente le foto), trascorsi alcuni minuti senza che vengano scattate fotografie, la macchina si spegne automaticamente e per riattivarla è sufficiente premere leggermente il tasto di scatto.

Per premere materialmente il pulsante di scatto, senza alcuna modifica all'elettronica, si poteva usare un elettromagnete o un servomotore. La semplicità di attivazione del primo porta però a qualche svantaggio nell'uso dello stesso, impreciso e repentino nei movimenti. D'altra parte il servomotore è più complesso da pilotare, come vedremo successivamente, ma è preciso nei movimenti, il che permette di adattare il circuito ad altri modelli di fotocamera o di contenitore senza eseguire modifiche meccaniche, ma semplicemente variando i parametri di attivazione del motore, così da cambiare la posizione dell'albero del servomotore (e di conseguenza della levetta che preme fisicamente sul pulsante di scatto.

Funzionamento e schema elettrico

Il circuito, alimentato da un alimentatore stabilizzato da 12V 1A di recupero, è composto da una sezione di regolazione principale, basata sul noto 7805 e da un microcontrollore PIC12F629 con oscillatore interno a 4MHz, impiegato per attivare il servomotore Hitec HS-311 ed il contatore binario Cmos CD4040, quest'ultimo utilizzato per pilotare i 4 LED di segnalazione RGB.

La sezione di alimentazione principale è affiancata da una secondaria, in cui viene impiegato un secondo 7805 per alimentare la fotocamera digitale. Questo regolatore ha il pin centrale collegato a massa tramite una coppia di diodi 1N4007 collegati in serie. In tal modo l'uscita del regolatore verrà innalzata di un valore pari alla somma delle tensioni di soglia Vf dei diodi (circa 0,7 volt) e sarà quindi di 6,4 volt.

Dopo l'accensione, il PIC resetta il contatore CD4040 e legge l'impostazione dei due jumper che permettono di scegliere il tempo di scatto. La temporizzazione base prevede di eseguire 4096 cicli da 1 secondo (1,052 per la precisione) cioè, complessivamente, circa 71 minuti e 48 secondi prima di procedere all'attivazione del servomotore. Questo tempo può essere diviso per 2 e/o per 4 agendo sui jumper JMP1 e JMP2 nel modo seguente:


Il controllo sullo stato dei jumper viene eseguito all'accensione del circuito ed al termine di ogni ciclo di conteggio, quindi non hanno alcun effetto le impostazioni fatte durante il ciclo stesso.

A partire dall'accensione, dopo ogni secondo trascorso, viene inviato un impulso di clock al contatore binario Cmos CD4040 che attiverà le opportune uscite. In tal modo verranno accesi i led RGB che si illumineranno di un colore diverso a seconda della configurazione degli ingressi ai quali sono collegati.

Ho preferito usare 4 led RGB piuttosto che 12 led normali o altri sistemi di visualizzazione (un doppio display, per esempio) sia per contenere le dimensioni del circuito e del contenitore, sia perchè non essendo critico il momento dello scatto era necessario solo un display che potesse solo far comprendere se il circuito funziona correttamente ed, approssimativamente, quando scatterà.



Ovviamente, nulla vieta di predisporre un diverso sistema di visualizzazione sfruttando il segnale di clock proveniente dal Pic. Per contenere i consumi del circuito ho previsto che l'accensione dei led avvenga per circa 0,25 secondi ogni secondo, un lasso di tempo però sufficiente a far percepire lo stato dei led e, di conseguenza, delle uscite del contatore binario.

Trascorso il tempo impostato dai jumper di configurazione, il contatore CD4040 viene resettato ed i led restano spenti durante l'attivazione del servomotore. In tal modo viene limitato il consumo di corrente dei led che, quando sono tutti attivi, vale complessivamente: 4 led * 3 colori * 15 mA = 180 mA.

L'attivazione del servomotore è divisa in due fasi: nella prima il servomotore viene attivato in modo da premere il pulsante della fotocamera e riportarla in modalità di scatto. Nella seconda, il servomotore viene nuovamente attivato per premere (per 3 secondi) il pulsante di scatto della fotocamera. Dopo questa fase, inizia un nuovo ciclo di conteggio e di attivazioni del servo che si ripete fino allo spegnimento del circuito.

Pilotaggio del servomotore

Non volendo ripetere tutta la teoria di funzionamento dei servomotori, per evitare di reinventare la ruota... vi rimando a questa pagina dove è spiegato in modo chiaro e completo come funziona questo tipo di motori.

Nel mio progetto, vista la posizione del pulsante di scatto, le dimensioni del contenitore trasparente in cui è alloggiata la fotocamera, e la posizione del servomotore rispetto a quest'ultima, è necessario far ruotare l'albero del servomotore di circa 45° verso la fotocamera stessa.



La routine che attiva il servomotore invia una serie di 20 sequenze temporizzate, ciascuna della durata di 20 msec, in grado di comunicare correttamente al servo qual è la posizione da mantenere "attivamente", cioè resistendo a qualsiasi forza che contrasti con il mantenimento della posizione programmata.

Fino a che tali sequenze vengono inviate al servo, lo stesso mantiene la posizione impostata, mentre quando le sequenze temporizzate non vengono più trasmesse al servomotore lo stesso mantiene ancora la propria posizione, ma in modalità "passiva", quindi un eventuale movimento esterno che forzi l'albero collegato al motore ne altererà la posizione assunta precedentemente.

Ciascuna delle sequenze temporizzate (della durata di 20 msec) è composta da una parte di 2,4 msec (2400 microsecondi) che resta in parte a livello logico alto o basso a seconda della posizione che si vuole fare assumere al servomotore, mentre la restante parte (17,6 msec) resterà in ogni caso a livello logico basso (0 volt).

Nel programma del Pic viene utilizzata, durante l'attivazione del servo (pin di controllo a livello logico 1 = +5 volt), una routine calibrata che genera un ritardo preciso di 150 microsecondi, ripetutamente chiamata per generare una temporizzazione proporzionale al valore (in gradi) che si vuole far assumere all'albero del servomotore:


Quindi, ad esempio, per far assumere all'albero del servomotore la posizione "+45°", sarà necessario inviare un impulso composto da:


Le temporizzazioni di 1950 + 450 = 2400 usec costituiscono l'intervallo di 2,4 msec che, come spiegato sopra, resta in parte alto ed in parte basso, a seconda della posizione che si vuole fare assumere al servo, mentre i restanti 17,6 msec riguardano la parte di temporizzazione che, in tutti i casi, deve restare a livello logico 0 (0 volt).

Software e filmati

Per creare un filmato dalle foto scattate, ho utilizzato l'opzione SlideShow (dal menu File) del programma di fotoritocco gratuito IrfanView, disponibile anche in lingua italiana. Ho scelto le fotografie da visualizzare in sequenza, impostando un intervallo di 0.1 secondi (anche se la velocità di visualizzazione dipenderà comunque dal tipo di PC usato) ed ho creato un file eseguibile che, una volta lanciato, visualizzerà la sequenza delle foto importate.


Sequenza di prova (13 giorni / 1 scatto ogni 35 minuti)

Potete scaricare il file esegubile che contiene una sequenza di foto, scattate ogni 35 minuti nell'arco di 13 giorni, ad una pianta di rosmarino in fase di crescita, da questo link. ATTENZIONE! Dimensione del file .exe = 102 MByte!

Il progetto è distribuito in modo gratuito.


Statistiche