ATU-100

Aperto da AZ6108, 27 Marzo 2023, 16:05:23

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

AZ6108

Visto che il post di @Geremia è andato perduto (insieme al resto della discussione), spero di fare cosa utile postando i link e le info di base sull'accordatore automatico ATU-100

Prima di tutto il repository GitHub principale di N7DDC che contiene tutto il materiale, inclusi gli schemi, i files gerber, i sorgenti del firmware e la manualistica per entrambe le versioni (mini ed extended)

https://github.com/Dfinitski/N7DDC-ATU-100-mini-and-extended-boards

e qui gli schemi (da notare che nello schema del mini il valore di R22 è riportato in modo errato, il valore corretto si trova nello schema extended)





a seguire il manuale dell'extended che spiega (anche) a cosa servano i pad su RA6 ed RA7



poi, per chi fosse interessato, un sito che mostra come interfacciare l'ATU-100 all'ICOM IC-705 usando il bottone "tune" dell'apparato per avviare la sintonizzazione

http://www.carnut.info/IC-705/ICOM_IC-705.html#ATU100

insieme allo schema del circuito di interfaccia, schema che potrebbe essere adattato ad altri apparati



e per finire, un ulteriore progetto ospitato su GitHub che aggiunge all'ATU-100 un'interfaccia WiFi la quale permette sia di controllare l'accordatore da remoto, sia di visualizzare su un display in stazione le informazioni inviate tramite WiFi dall'accordatore stesso

https://github.com/ftl/atu100wifi

ok, spero che le info di cui sopra possano essere di utilità a qualcuno

ciao, Andrea.




Violence is the last refuge of the Incompetent
Salvor Hardin


Geremia

Ho dato un'occhiata al FW rel.3.2. Non e' una programmazione ad oggetti ma un semplice linguaggio C. Il TX_req e' mappato nell'header di configurazione delle porte ma non piu' usato nel resto del programma, almeno cosi' mi sembra. Non fa' uso ne di timers ne di interrupt e quindi e' molto lineare per chi volesse studiarlo.
PS: non ho capito perche' e' sparito quanto si era scritto nel 3D dell'ATU100.
S = k * log W

AZ6108

Violence is the last refuge of the Incompetent
Salvor Hardin

AZ6108

#3
Citazione di: Geremia il 27 Marzo 2023, 19:25:01Il TX_req e' mappato nell'header di configurazione delle porte ma non piu' usato nel resto del programma

Beh, direi che da qualche parte sia usato, ad esempio

https://github.com/Dfinitski/N7DDC-ATU-100-mini-and-extended-boards/blob/master/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/pic_init.c

in pic_init.c le due linee vengono impostate inizializzando il TX a 0 ed il TX negato ad 1, mentre nel main

https://github.com/Dfinitski/N7DDC-ATU-100-mini-and-extended-boards/blob/master/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.c

le due linee vengono gestite tramite una coppia di puntatori "p_TX" ed "n_TX" per cui... vengono effettivamente utilizzate come da documentazione.

[edit]

comunque non mi piace granchè come è scritto il codice, per dire, nel "main.c" viene richiamata la funzione "tune" ma nel codice non la si trova, dato che è implementata nell'header (main.h)

https://github.com/Dfinitski/N7DDC-ATU-100-mini-and-extended-boards/blob/master/ATU_100_EXT_board/FirmWare_PIC18F2520/2520_EXT_board_sources_V_3.2/main.h

non mi sembra una pratica di programmazione molto pulita, ma ... forse sono io ad essere pignolo





Violence is the last refuge of the Incompetent
Salvor Hardin


Geremia

Allora,
TX_rep e' definito come bit della porta B nell'inizializzazione dell'HW del PIC (file PIC_init.c) LATA  = 0b00001000;   // PORT3 /Tx_req to 1.
e poi non viene piu' usato.
p_TX e n_TX non sono puntatori ma semplici bit definiti e settati come output nel file header (pin_init.h) sbit n_Tx at LATA3_bit; sbit, p_Tx at LATA7_bit;
Nel main.c vengono settati/resettati i due bit p_TX e p_RX ma oltre a questo non vengono utilizzati. Sembrano due uscite che, sa seconda dei pulsanti premuti indicano lo stato. Ed e' solo in un caso che p_TX=1 e cioe' nella button_proc.
Assegnare p_TX=1 significa settare il bit3 della portaB a 1.
Non sono puntatori, se fossero tali dovrebbero essere dichiarati in modo diverso (int *p_TX) oppure p_TX=&variabile e, se lo fossero, per puntare al loro contenuto si dovrebbe scrivere *p_TX=variabile.

S = k * log W

kz

Geremia potresti ricaricare il documento di analisi del ATU-100?
il ripristino che ha effettuato marcello ha eliminato il post


Geremia

Non mi ricordo piu' cosa avevo scritto. Se hai pazienza provo a ricostruirlo. Putroppo alla mia eta' la memoria a breve termine e' labile.
S = k * log W


AZ6108

Citazione di: Geremia il 28 Marzo 2023, 10:28:37Allora,
TX_rep e' definito come bit della porta B nell'inizializzazione dell'HW del PIC (file PIC_init.c) LATA  = 0b00001000;  // PORT3 /Tx_req to 1.
e poi non viene piu' usato.
p_TX e n_TX non sono puntatori ma semplici bit definiti e settati come output nel file header (pin_init.h) sbit n_Tx at LATA3_bit; sbit, p_Tx at LATA7_bit;
Nel main.c vengono settati/resettati i due bit p_TX e p_RX ma oltre a questo non vengono utilizzati. Sembrano due uscite che, sa seconda dei pulsanti premuti indicano lo stato. Ed e' solo in un caso che p_TX=1 e cioe' nella button_proc.
Assegnare p_TX=1 significa settare il bit3 della portaB a 1.
Non sono puntatori, se fossero tali dovrebbero essere dichiarati in modo diverso (int *p_TX) oppure p_TX=&variabile e, se lo fossero, per puntare al loro contenuto si dovrebbe scrivere *p_TX=variabile.

Si, ok; non avendo guardato tutti i sorgenti sono stato tratto in inganno dal nome di quelle due variabili "p_"; in effetti si tratta di bit mappati sui registri, per cui andando a variare il valore di p_TX ed n_TX si va in effetti a variare lo stato delle due linee



Violence is the last refuge of the Incompetent
Salvor Hardin

Geremia

#8
Spero di ricordare :
Lo schema e' questo

Il primo blocco cerchiato in rosso e' il Tandem Match da cui ricava la VFWD e la VREF che poi nel programma vengono elaborate per ottenere la Pd e la Pr in quanto l'SWR si calcola con quelle grandezze. Il secondo blocco cerchiato di rosso permette di collegare 3 led ai pin RC0, RC6, RC7 per indicare rispettivamente un SWR<1.5, <2.5, >2.5 nel caso non si monti il display o lo stesso sia rotto. La stessa cosa vale per i pin RA7 (TX_req) e RA3 (/TX_req) ma in questo caso e' ridondante in quanto basterebbe solo TX_req in quanto e' l'unica tra le due linee che va a 1 in una particolare situazionenella gestione dei pulsanti. Quindi questi 5 pin possono essere ignorati allo stato attuale.
Lo schema : e' un circuito LC dove la L e' sempre in serie e la capacita' viene spostata lato TX o lato antenna. Non essendoci un detector di fase (antenna lunga o corta), il FW prova tutte le combinazioni che in realta' non sono tante poiche' la L e' composta da 5 induttaze switchabili e la capacita' sempre da 5 capacita' switchabili. E' possibile bypassare l'accordatore. Il sistema di Tunning prima esegue un tentativo di accordo chiamato COARSE sia per la L che per la C e, una volta trovato il puntopiu' basso di SWR inizia un fine tuning commutando le capacita' piu' basse e le induttanze piu' basse in modo da ottenere il minimo possibile di SWR. Fatto questo scrive in Eeprom l'indice delle induttanze e delle capacita' trovate. Non essendoci la rilevazione della frequenza non puo' associare questo accordo alla frequenza in uso per poi richiamarla successivamente. Si e' obbligati a rifare l'accordo se ci si sposta di banda e poi si ritorna su quella precedente. Vista la sola presenza del Tandem Match, qualche volta puo' capitare di rifare piu' di una volta l'accordo passando per il reset di quanto memorizzato in Eeprom per ottenere un SWR piu' basso di quello che si era trovato. In pratica non e' detto che il primo SWR trovato sia il piu' basso e quindi si deve resettare tutto e rifare l'accordo anche 2 o 3 volte. A volte puo' non accordare, in relazione al carico che si ha.
Esiste un documento o un video, non ricordo su quale dei due, sono riportate sulla carta di Smith le aree di accordo dell'ATU100 in base alle bande dai 160 ai 10 metri. Mi ricordo tuttavia che sulle bande piu' alte tipo 10 metri copriva un'area minore rispetto ai 40/80 metri.


S = k * log W

Geremia

Una sola considerazione a titolo personale sull'utilizzo di un'accordatore in stazione.
Secondo me che sia manuale o automatico ai fini ultimi non vi e' alcuna differenza se utilizzato in stazione. L'unica differenza che che posso trovare e' che con un automatico si evita di eseguire le operazioni manuali che si farebbero con uno manuale, e questo e' ovvio. Pero' il vero automatico oltre ai detector di chi dovrebbe disporre per una rapida ricerca dell'accordo, dovrebbe anche memorizzare banda per banda tali parametri in modo che al ritorno sulla stessa banda e con la stessa antenna non sarebbe necessario rifare la ricerca e quindi con meno stress da parte dei rele'. Nell'ATU100 questo non avviene, giustamente perche' e' un prodotto economico e oltretutto ogni tanto fallisce l'accordo.
Quindi, dal mio punto di vista, se dovessi inserire in stazione un accordatore allora lo preferirei manuale scrivendo una bella tabella con le impostazioni relative all'accordo trovato per ogni banda.
Che poi amplificatori allo stato solido di ultima generazione contengano un accordatore automatico lo vedo piu' per una protezione degli LDMOS che non per una comodita'. ma questo e', ripeto, il mio punto di vista.
S = k * log W

AZ6108

#10
bene Geremia, alcune inesattezze ma in generale una buona valutazione, hai sorvolato un pochino troppo, secondo me, su quanto l'accordatore memorizza in EEPROM tra i reset e sul come vada, nonostante la sola rilevazione fwd/ref e la mancanza della misurazione di fase ed impedenza, ad ottenere un buon accordo; in pratica usa lo stesso approccio descritto da ARRL per operare una rete ad L

Violence is the last refuge of the Incompetent
Salvor Hardin

Geremia

#11
Se vai all'inizio del 3D che ho aperto, la questione che ho posto era capire l'utilizzo dei 5 pin. Poiche' non ho avuto una risposta mi sono studiato il codice per cercarmela io. A questo punto sono soddisfatto, ma se vuoi approfondire lo studio del FW puoi sempre farlo tu.
S = k * log W

AZ6108

#12
Citazione di: Geremia il 29 Marzo 2023, 09:37:49Se vai all'inizio del 3D che ho aperto, la questione che ho posto era capire l'utilizzo dei 5 pin. Poiche' non ho avuto una risposta mi sono studiato il codice per cercarmela io. A questo punto sono soddisfatto, ma se vuoi approfondire lo studio del FW puoi sempre farlo tu.

Utilizzo che è spiegato nel manuale (pdf); in breve volendo realizzare una versione semplificata dell'ATU senza display, è possibile utilizzare quei pin per collegare dei LED che forniscano l'indicazione della sintonizzazione in corso e del valore SWR (approssimato) ricavato al termine; il fatto che vi siano due pin per Tune e Tune negato, è spiegabile sia con la possibilità di connettere due LED che indichino "tune in corso" e "tune completato" sia con quella di poter integrare l'ATU con un apparato che necessiti di un segnale alto o basso per ricevere lo stato dell'ATU, ed anche questo è spiegato nel manuale

Violence is the last refuge of the Incompetent
Salvor Hardin


Geremia

Peccato che nel FW il /TX_req non cambi mai stato ma e' solo il TX_req che cambia stato.
S = k * log W

AZ6108

Citazione di: Geremia il 29 Marzo 2023, 18:09:48Peccato che nel FW il /TX_req non cambi mai stato ma e' solo il TX_req che cambia stato.

mi sembra strano, visto che nel FW le due linee vengono correttamente gestite durante le operazioni
Violence is the last refuge of the Incompetent
Salvor Hardin

Geremia

#15
Sara' cosi'.
S = k * log W