Sto finalmente lavorando sull'interfacciamento di un focheggiatore alla camera CCD UAI (
http://www.uai-ccd.com ) in modo da poter comandare la messa a fuoco all'interno del programma di acquisizione.
In questo modo, sarà possibile sviluppare funzioni di ricerca automatica del fuoco ottimale e la funzione di messa a fuoco potrà essere eseguita all'interno di sequenze automatiche di acquisizione.
Il focheggiatore sarà collegato direttamente alla camera tramite la porta seriale presente sul CCD UAI.
Avrei l'intenzione di autocostruire anche il sistema di controllo del focheggiatore : dovrebbe bastare un PIC "piccolo" come il 16F628 e la cosa non dovrebbe essere particolarmente complessa. Il micro, oltre ad interpretare il protocollo, dovrebbe occuparsi di gestire il movimento del motore che potrebbe essere di tipo passo-passo o a corrente continua.
Ci sono in rete degli ottimi progetti già pronti e non voglio quindi riscoprire l'acqua calda. Vorrei solo intervenire sulla parte software (firmware).
Poichè vorrei rendere il tutto il più generico possibile, in modo da poter eventualmente anche utilizzare dei focheggiatori commerciali, mi piacerebbe mantenere la compatibilità col protocollo LX200 ( anche se è decisamente povero come funzionalità ), ma nello stesso tempo vorrei scambiare più informazioni col focheggiatore di quanto permesso dal protocollo standard.
Credo che per far questo basti aggiungere dei comandi non previsti dal protocollo LX200, nella speranza che un dispositivo LX200 quando riceve qualcosa che non capisce non faccia niente.
Se così non fosse dovrebbe bastare disabilitare da programma l'invio dei comandi del protocollo esteso.
Il focheggiatore dovrebbe contenere abbastanza intelligenza da ricevere e convertire i comandi seriali ed eseguire almeno le funzioni base del protocollo LX200.
I comandi base del protocollo LX200 sono :
:F+# Start Focuser moving inward (toward objective)
Returns: None
:F-# Start Focuser moving outward (away from objective)
Returns: None
:FQ# Halt Focuser Motion
Returns: Notrhing
:FF# Set Focus speed to fastest setting
Returns: Nothing
:FS# Set Focus speed to slowest setting
Returns: Nothing
Avrei pensato almeno ai seguenti comandi aggiuntivi :
:F?# Verifica la presenza del focheggiatore
Returns: Nothing ( il focheggiatore non c'è )
Returns: 0 se il focheggiatore c'è ed è di tipo step , 1 se il focheggiatore c'è ed è di tipo DC
:FMnnnnn# Definisce di quanto deve spostarsi il focheggiatore al prossimo comando Start Focuser
se nnnnn=00000 il comando Start Focuser avvia il movimento continuo del focheggiatore alla velocità impostata da Set Focus Speed
se nnnnn<>0 il comando Halt Focuser Motion non ha effetto finchè non è stato completato il movimento
il valore nnnnn è il numero di passi richiesti al focheggiatore se è di tipo passo passo
il valore nnnnn è il numero di millisecondi di durata dell'impulso di alimentazione se il motore è di tipo DC
:FP# Chiede al focheggiatore la posizione assoluta
Returns: nnnnn corrispondente al valore di posizione assoluta in una scala arbitraria
e alle seguenti estensioni dei comandi esistenti :
:F+# Start Focuser moving inward (toward objective)
Returns: B ( Busy ) al ricevimento del comando
Returns: K ( ACK ) al completamento del posizionamento
:F-# Start Focuser moving outward (away from objective)
Returns: B ( Busy ) al ricevimento del comando
Returns: K ( ACK ) al completamento del posizionamento
Rimane da capire se è utile gestire anche il cambio di velocità con i comandi Set Focus Speed che, come estensione del protocollo standard potrebbero essere usati come un cambio marcia ( :FF# aumenta la velocità di 1, :FS# scala la velocità di 1 ) e potrebbero restituire la velocità corrente impostata.
Se avete avuto la pazienza di leggere fino a qui, vi chiedo se vi sembra che la cosa possa funzionare o se ci sono evidenti controindicazioni.
Mi sono dimenticato delle funzionalità importanti ?
Ciao e grazie,
Marco