Dish Control and Moon/Sun Tracking System

Encoders

AZimut

USDigital Absolute Encoder con 0.1 degrees di precisione

Elevazione

USDigital Absolute Inclinometro anche con with 0.1 grado di precisione

Control Box

Ho appena completato ed iniziato ad usare (Marzo/2016) una versione aggiornata di controllo antenne.
Il sistema è basato su un singolo control box che serve sia 23 che 70cm ed usa un Raspberry PI 2 Linux computer.
Le funzioni principali previste sono:
1) Calcolo della posizione corrente di sole,luna e qualunque altro corpo celeste conoscendone le coordinate (RA e DEC).
2) Tracking automatico dell'oggetto desiderato con una precisione a +-0.2 gradi.
3) Comandato dal PTT del K3 provvede a tutte le commutazioni tra RX e TX con 4 eventi a tempo in modo da pilotare con la corretta sequenza il transverter,il driver, il PA , il preamplificatore ed il relay.
4) Permette inoltre di comandare manualmente il posizionamento dell'antenna.
5) Porta le antenne nelle posizioni scelte come parking position
6) Provvede alla commutazione del segnale IF (28Mhz) tra i due transverter (23 e 70cm)
7) Interfaccia gli encoders US Digital via USB
8) Legge da Arduino i dati provenientiu dagli encoders per i 70cm (sempre via USB)

Construzione

L'aspetto è piuttosto incasinato principalmente dovuto a molti cambiamenti in corso d'opera come sempre succede ad un prototipo
All'inizio speravo di fare stare nello stesso contenitore anche l'alimentatore, alla fine lo spazio si è ridotto in modo tale da non essere più possibile e tutto il sistema viene alimentato dall'esterno con 28V (per i motori) e 12V per tutto il resto.
Un regolatore interno produce i 5V necessari a Raspberry e agli encoders dei 70cm.
La foto da un'idea , a destra il Raspberry e all'estrema sinistra si intracede l'Arduino.


E questa è la parte posteriore dove non tutta la caveria è già connessa:


Il risultato e una scatola nera con sul frontale solo un interruttore di accensione ed una spia per verificare che sia regolarmente alimentato.
Tutta la parte di interfaccia utente è supportata da un display da 7" connesso con un cavo HDMI che può essere posizionato nel modo e nel posto più conveniente.

TFT display




Il progetto iniziale prevedeva di avere un'interfaccia utente sullo schermo TFT usando il touch screen.
Purtroppo con i driver forniti dal fornitore (cinese) non sono riuscito a farlo funzionare sotto Linux (con windows invece si).
Le richieste di spiegazioni e suggerimenti mandate ai cinesi sono state tempo perso e mi sono quindi rassegnato ad avere un mouse senza fili al posto del touch screen.

Software

Il software sviluppato consiste principalmente di 4 programmi:

1)23cm antenna controller
2)70cm antenna controller
3)23cm configurator
4)70cm configurator

Tutto il software è scritto in C++ usando un ambiente grafico QT (di libero uso)

23cm Antenna Controller




Credo sia inutile spiegarne il funzionamento

23cm Configurator




Per la configurazione iniziale è indispensabile connettere una tastiera USB al sistema.
Nelle operazioni normali (come selezionare l'oggetto da inseguire)basta il mouse.
La lista degli oggetti tracciabili è aperta ed è possibile cancellare aggiungere a piacere.

70cm software


Molto simile a quella dei 23cm quindi inutile ripetere.

Note

All'interno del contenitore non esiste nessun tipo di switch meccanico (relè), i 4 motori sono controllati con 4 ponti ad H che utilizzano mosfet.
Le altre commutazioni sono fatte a transistors.
L'unica dipendenza esterna del sistema consiste nella sincronizzazione dell'orologio.
IL Raspberry non ha infatti un "real time clock" interno, sarebbe facile aggiungerlo all'esterno e connetterlo via I2C ma per ora mi accontento di avere Raspberry connesso al mio router e la sincronizzazione avviene connettendosi periodicamente ad uno dei vari time servers di rete.
Ho provato a connettere direttamente gli encoders dei 70cm sul Raspberry ma nonostante le precauzioni prese con un thread dedicato ad alta priorità ed utilizzo degli interrupt hardware la latenza degli scambi di contesto Linux introducevano un errore inaccettabile nelle misure.
Di conseguenza ho sacrificato un Arduino per fare da front end al Raspberry.

Error checking


L'interfaccia HDMI attraverso cui il display è connesso al Raspberry trasporta non solo i dati video ma anche l'audio.
Siccome il display ha 2 piccoli altoparlanti entrocontenuti mi è venuto in mente di provare ad utilizzare del software di sintetizzatore vocale.
In casi di errore ( mancate letture dagli encoders, motori che non si muovono e altro viene generato un messggio vocale che allerta l'operatore anche se l'attenzione era da altra parte.
La qualità audio non è degli migliori e mi pare che Linux abbia anche qualche errore di gestione HDMI perchè parte del messaggio viene persa, il problema l'ho superato ripetendo 2 volte lo stesso messaggio.
La sola lingua disponibile con il pacchetto da me utilizzato è l'inglese.
In caso di errore qualunque attività viene immediatamente fermata.