| "Descrizione" by Al222 (24917 pt) | 2026-Jun-05 19:06 |
Yaesu G-5500DC: progetto Arduino per tracking satellitare - Parte 1
In questo progetto voglio realizzare un’interfaccia economica e modificabile per comandare il rotore Yaesu G-5500DC con Arduino e Gpredict, come alternativa a soluzioni commerciali già pronte come ERC-DUO o RTC-200.
L’obiettivo è creare un sistema in grado di gestire azimut ed elevazione per il tracking satellitare, mantenendo però la possibilità, a differenza di ERC-DUO o RTC-200, di modificare liberamente il firmware, aggiungere funzioni personalizzate, regolare la logica di movimento e adattare il progetto alle proprie esigenze.
Componenti: Arduino Mega 2560

Scheda PC817 i cui collegamenti vedremo nella Parte 2

![]() | ![]() |
Colleghiamo Arduino Mega 2560 a External control
Colleghiamo DIN 8 poli ad Arduino.

Fare solo questi due collegamenti:
| Filo dal DIN | Collegare su Arduino Mega | Funzione |
|---|---|---|
| Rosso dal pin 6 | A0 | Lettura azimut |
| Filo della calza dal pin 8 | GND | Massa comune |
Meglio ancora, se hai una resistenza da 10 kΩ, metterla in serie così:
Pin 6 DIN / filo rosso → resistenza 10 kΩ → Arduino A0
La massa invece va diretta:
Pin 8 DIN / calza → Arduino GND
Per ora non collegare nessun altro filo.
Dopo il collegamento, controllare con il tester:
A0 e GND non devono essere in corto.
caricare su Arduino Mega uno sketch solo per leggere A0.
Aprire Arduino IDE dal Desktop/Menu Start e caricare questo codice:
void setup() { Serial.begin(9600); } void loop() { int valore = analogRead(A0); float volt = valore * (5.0 / 1023.0); Serial.print("A0 = "); Serial.print(valore); Serial.print(" Volt = "); Serial.println(volt, 3); delay(500); }
Poi fare così:
A questo punto dovresti vedere valori tipo:
A0 = xxx Volt = x.xxx
Nota importante: se il rotore azimut non è ancora collegato al controller YAESU, la lettura del pin 6 potrebbe non rappresentare ancora un vero angolo. Però intanto verifichiamo che Arduino legga correttamente il segnale A0.
Possiamo collegare il rotore adesso, ma farei solo l’azimut.
Prima cosa da fare:
Poi collegare il rotore azimut così:
Rotore AZIMUTH → cavo 5 fili → morsettiera AZIMUTH sul retro del controller YAESU

Seguire i numeri (nel mio caso ho un cavo 5 poli 0.5mm2)
| Rotore azimut | Controller YAESU AZIMUTH |
|---|---|
| Pin 1 Nero | Morsetto 1 |
| Pin 2 Marrone | Morsetto 2 |
| Pin 3 Azzurro | Morsetto 3 |
| Pin 4 Giallo | Morsetto 4 |
| Pin 5 Grigio | Morsetto 5 |

I pin 6 e 7 del connettore rotondo del rotore non si usano. Il manuale indica di collegare i fili rispettando gli stessi numeri tra connettore del rotore e morsetti posteriori del controller.

Dopo il collegamento, prima di accendere, controllare con il tester che non ci siano corti evidenti tra i fili. Poi proveremo LEFT e RIGHT dai pulsanti frontali.
Rotore Elevazione→ cavo 5 fili → morsettiera Elevazione sul retro del controller YAESU

Per il rotore ELEVATION fai quindi:
| Rotore elevazione | Colore | Controller YAESU ELEVATION |
|---|---|---|
| Pin 1 | Nero | Morsetto 1 |
| Pin 2 | Marrone | Morsetto 2 |
| Pin 3 | Azzurro | Morsetto 3 |
| Pin 4 | Giallo | Morsetto 4 |
| Pin 5 | Grigio | Morsetto 5 |

L’importante è che sia sempre:
1 → 1, 2 → 2, 3 → 3, 4 → 4, 5 → 5
I pin 6 e 7 del connettore del rotore non si usano.

Prima di accendere: controller spento e scollegato, controllo continuità filo per filo e controllo che non ci siano corti tra morsetti vicini. Poi provare brevemente UP e DOWN dal pannello frontale.
Completiamo il cavo DIN 8 poli External Control usando la mappatura già scelta.
Prima: controller YAESU spento e spina scollegata.
| Pin DIN External Control | Colore | Funzione | Destinazione |
|---|---|---|---|
| 8 | Calza + filo già saldato | Massa comune | GND Arduino |
| 6 | Rosso | Feedback azimut | A0 Arduino |
| 1 | Nero | Feedback elevazione | A1 Arduino |
| 2 | Viola | RIGHT / CW | Uscita optoisolatore |
| 4 | Azzurro | LEFT / CCW | Uscita optoisolatore |
| 3 | Grigio | UP | Uscita optoisolatore |
| 5 | Bianco | DOWN | Uscita optoisolatore |
| 7 | Non collegato | +8–13 V | Lasciare libero |
Il prossimo collegamento utile è quindi:
Nero → pin 1 DIN → Arduino A1
Meglio con resistenza in serie:
Pin 1 / filo nero → resistenza 10 kΩ → Arduino A1
Poi saldare anche i fili dei comandi sul DIN, ma non collegarli ancora direttamente ad Arduino: andranno al modulo optoisolatore.
Dopo le saldature, fare questi controlli con il tester:
test di lettura completa azimut + elevazione, senza comandare ancora i motori da Arduino.
Prima controllare:
| Controllo | Esito richiesto |
|---|---|
| Pin 7 | Non collegato |
| Pin 1 ↔ pin 8 | Non in corto |
| Pin 6 ↔ pin 8 | Non in corto |
| Pin 2, 3, 4, 5 | Fili isolati, non collegati ad Arduino |
Collegamenti Arduino:
| DIN External Control | Arduino Mega |
|---|---|
| Pin 6 azimut | A0 |
| Pin 1 elevazione | A1 |
| Pin 8 massa | GND |
Poi caricare questo sketch:
const int PIN_AZ = A0;
const int PIN_EL = A1;
const int SOGLIA = 2; // Più sensibile
const float MIN_VOLT_ON = 0.10; // Sotto questo valore considera il controller spento
int ultimoAz = -1;
int ultimoEl = -1;
int leggiMedia(int pin) {
long somma = 0;
for (int i = 0; i < 30; i++) {
somma += analogRead(pin);
delay(2);
}
return somma / 30;
}
void stampaValori(const char* evento, int az, int el) {
float voltAz = az * (5.0 / 1023.0);
float voltEl = el * (5.0 / 1023.0);
Serial.print(evento);
Serial.print(" AZ A0=");
Serial.print(az);
Serial.print(" Volt=");
Serial.print(voltAz, 3);
Serial.print(" | EL A1=");
Serial.print(el);
Serial.print(" Volt=");
Serial.println(voltEl, 3);
}
void setup() {
Serial.begin(9600);
delay(1000);
ultimoAz = leggiMedia(PIN_AZ);
ultimoEl = leggiMedia(PIN_EL);
Serial.println("Monitor pronto.");
stampaValori("Valori iniziali", ultimoAz, ultimoEl);
}
void loop() {
int az = leggiMedia(PIN_AZ);
int el = leggiMedia(PIN_EL);
float voltAz = az * (5.0 / 1023.0);
float voltEl = el * (5.0 / 1023.0);
if (voltAz < MIN_VOLT_ON && voltEl < MIN_VOLT_ON) {
delay(300);
return;
}
int diffAz = az - ultimoAz;
int diffEl = el - ultimoEl;
if (abs(diffAz) >= SOGLIA || abs(diffEl) >= SOGLIA) {
if (abs(diffAz) >= SOGLIA && abs(diffEl) >= SOGLIA) {
stampaValori("AZ+EL mossi", az, el);
} else if (abs(diffAz) >= SOGLIA) {
if (diffAz > 0) stampaValori("AZ aumenta", az, el);
else stampaValori("AZ diminuisce", az, el);
} else if (abs(diffEl) >= SOGLIA) {
if (diffEl > 0) stampaValori("EL aumenta", az, el);
else stampaValori("EL diminuisce", az, el);
}
ultimoAz = az;
ultimoEl = el;
}
delay(150);
}
}
Poi:
Il manuale indica che il pin 6 dà la posizione azimut e il pin 1 dà la posizione elevazione, entrambi riferiti al pin 8 massa comune.
Se tutto funziona passiamo a collegare i rimanenti 4 fili del DIN 8, ma non direttamente ad Arduino: devono andare al lato uscita del modulo PC817.
Prima: spegnere il controller YAESU e staccare la spina.
Mappatura DIN 8 External Control:

| Pin DIN | Colore filo | Funzione | Stato | Collegamento |
|---|---|---|---|---|
| 1 | Nero | Feedback elevazione | Già collegato | Arduino A1 |
| 2 | Viola | RIGHT / CW | Da collegare ora | Uscita optoisolatore CH1 |
| 3 | Grigio | UP | Da collegare ora | Uscita optoisolatore CH3 |
| 4 | Azzurro | LEFT / CCW | Da collegare ora | Uscita optoisolatore CH2 |
| 5 | Bianco | DOWN | Da collegare ora | Uscita optoisolatore CH4 |
| 6 | Rosso | Feedback azimut | Già collegato | Arduino A0 |
| 7 | — | +8–13 V max 100 mA | Non collegare | Lasciare libero e isolato |
| 8 | Calza + filo saldato | Massa comune | Già collegato | Arduino GND e comune uscite optoisolatori |
Quindi i fili ancora da collegare sono:
Viola = pin 2 RIGHT
Azzurro = pin 4 LEFT
Grigio = pin 3 UP
Bianco = pin 5 DOWN
A questo punto è necessario utilizzare il modulo optoisolatore PC 817 i cui collegamenti vedremo nella Parte 2
| Evaluate |