Sommario:

Analizzatore di antenne HF con Arduino e modulo DDS: 6 passaggi (con immagini)
Analizzatore di antenne HF con Arduino e modulo DDS: 6 passaggi (con immagini)

Video: Analizzatore di antenne HF con Arduino e modulo DDS: 6 passaggi (con immagini)

Video: Analizzatore di antenne HF con Arduino e modulo DDS: 6 passaggi (con immagini)
Video: Arduino Due HF VNA antenna analyzer 2024, Novembre
Anonim
Analizzatore di antenne HF con Arduino e modulo DDS
Analizzatore di antenne HF con Arduino e modulo DDS
Analizzatore di antenne HF con Arduino e modulo DDS
Analizzatore di antenne HF con Arduino e modulo DDS

Ciao

In questo Instructable ti mostrerò come ho costruito un analizzatore di antenna a basso costo in grado di misurare un'antenna e visualizzare il suo VSWR su una o tutte le bande di frequenza HF. Troverà il VSWR minimo e la frequenza corrispondente per ciascuna banda, ma visualizzerà anche un VSWR in tempo reale per una frequenza selezionata dall'utente per facilitare la regolazione dell'antenna. Se si analizza una singola banda di frequenza, verrà visualizzato un grafico di VSWR rispetto alla frequenza. Dispone inoltre di una porta USB sul retro per l'emissione di dati di frequenza e VSWR, per consentire una grafica più raffinata su un PC. La porta USB può essere utilizzata anche per eseguire il reflash del firmware, se necessario.

Di recente sono entrato nella radio amatoriale (perché mi piaceva l'idea della comunicazione peer-to-peer su enormi distanze senza infrastrutture) e ho fatto rapidamente le seguenti osservazioni:

1. Tutte le comunicazioni mondiali che mi interessano avvengono sulle bande HF (3-30 MHz)

2. I ricetrasmettitori HF sono molto costosi e si romperanno se non li guidi in un'antenna ragionevolmente ben abbinata

3. In genere ci si aspetta che tu debba armare la tua antenna HF da pezzi di filo teso in tutto il giardino (a meno che tu non voglia spendere ancora più soldi di quelli che hai speso in 2).

4. La tua antenna potrebbe non corrispondere, ma non lo saprai finché non la proverai.

Ora un purista probabilmente direbbe che si dovrebbe prima testare l'antenna a bassissima potenza alla frequenza di interesse e controllare il VSWR sul misuratore del rig per valutare la qualità della corrispondenza. Non ho davvero il tempo di perdere tempo con quel genere di cose per ogni frequenza che potrei voler usare. Quello che volevo davvero era un analizzatore d'antenna. Questi dispositivi possono testare la qualità della corrispondenza dell'antenna a qualsiasi frequenza sulle bande HF. Sfortunatamente sono anche molto costosi, quindi ho deciso di valutare se potevo crearne uno mio. Mi sono imbattuto nell'eccellente lavoro svolto da K6BEZ (vedi https://www.hamstack.com/project_antenna_analyzer.html), che ha studiato l'uso di un Arduino per controllare un modulo di sintetizzatore digitale diretto (DDS) economico. Abbandonò presto l'Arduino per motivi di costo, preferendo usare un PIC. Bene, nel 2017 puoi acquistare un Arduino Nano per circa £ 3,50, quindi ho pensato che fosse ora di rivisitare il suo lavoro, riprendere da dove aveva lasciato e vedere cosa potevo inventare (nota che non sono l'unico chi l'ha fatto: ci sono degli esempi molto carini che si trovano su internet).

Aggiornamento (29/7/2018) - questo lavoro è stato sviluppato considerevolmente da bi3qwq, dalla Cina, che ha apportato alcuni miglioramenti davvero interessanti all'interfaccia utente, che ha gentilmente condiviso. Ha progettato un PCB molto professionale (con un'ottima funzione di resistore di calibrazione) e ha realizzato una costruzione davvero bella. Per completare il tutto ha preparato uno schema, che so che delizierà molti di coloro che hanno commentato in precedenza. Si prega di consultare la sezione commenti per ulteriori informazioni.

Aggiornamento - Recentemente sono entrato in 60 m, che lo schizzo originale non copriva. Quindi ora ho caricato la versione 7 del firmware, che aggiunge le bande 160 me 60 m. Questi non sono componenti aggiuntivi; sono completamente integrati nel funzionamento dell'analizzatore. È stata una fortuna trovare un font u8glib che fosse ancora leggibile ma che mi permettesse di visualizzare dieci bande contemporaneamente su quel piccolo schermo (sebbene non fosse monospazio, il che ha causato un po' di problemi). Ho stimato i valori di calibrazione per le nuove bande, in base all'interpolazione/estrapolazione dei valori di calibrazione esistenti. Ho quindi controllato questi con resistori fissi e danno risultati abbastanza buoni.

Aggiornamento: come molte persone hanno chiesto degli schemi, il circuito fondamentale del ponte Arduino / DDS / VSWR è in gran parte inalterato dal lavoro originale di K6BEZ. Si prega di controllare l'URL sopra per il suo schema originale su cui ho basato questo progetto. Ho aggiunto un encoder, uno schermo OLED e un firmware completamente sviluppato per rendere l'esperienza utente senza sforzo.

Aggiornamento: questo sistema utilizza una sorgente di segnale DDS a bassissima tensione insieme a un ponte resistivo contenente rilevatori di diodi. Quindi i diodi stanno operando nelle loro regioni non lineari e la mia prima versione di questo sistema tendeva a sottoleggere VSWR. Ad esempio, un carico di impedenza di 16 ohm o 160 ohm dovrebbe mostrare un VSWR di circa 3 in un sistema da 50 ohm; questo strumento indicava un VSWR più vicino a 2 in questa situazione. Ho quindi eseguito una calibrazione del software utilizzando carichi noti che sembra essere una soluzione efficace per questo problema. Questo è descritto nel penultimo passaggio di questo istruibile ed è stato caricato uno schizzo rivisto.

Aggiornamento: funzione grafica integrata aggiunta alle singole scansioni poiché era troppo utile tralasciare, in particolare quando si regolano le lunghezze dell'antenna per il VSWR minimo: un grafico fornisce una tendenza immediatamente visibile.

Passaggio 1: acquista la tua roba

Avrai bisogno dei seguenti elementi. La maggior parte di essi può essere ottenuta a buon mercato da Ebay. L'oggetto singolo più costoso era la scatola, a circa £ 10! Potrebbe essere possibile sostituire alcuni articoli (ho usato 47 Rs invece di 50 R, per esempio). I diodi erano piuttosto insoliti (ho dovuto comprarne 5 dall'Italia) e varrebbe la pena sostituirli con articoli più facilmente disponibili se sai cosa stai facendo.

  • Arduino Nano
  • Modulo DDS (modulo generatore di segnale DDS AD9850 HC-SR08 segnale sinusoidale onda quadra 0-40 MHz)
  • Display OLED i2c da 1,3"
  • Amplificatore operazionale MCP6002 (8 pin)
  • 2 diodi AA143
  • Condensatori ceramici: 2 da 100 nF, 3 da 10 nF
  • Condensatore elettrolitico da 1 uF
  • Resistenze: 3 off 50 R, 2 off 10 K, 2 off 100 K, 2 off 5 K, 2 off 648 R
  • Morsettiere a vite con passo 2,54 mm: 3 a 2 pin, 2 a 4 pin
  • Cavo di collegamento unipolare
  • 702 o cavo di collegamento simile
  • Stripboard
  • Striscia di intestazione quadrata (femmina) per collegare Arduino e DDS - non comprare per errore la roba della presa rotonda!
  • SO-239 presa per montaggio su telaio
  • Encoder rotativo (15 impulsi, 30 arresti) con interruttore a pulsante e manopola
  • Encoder rotativo economico 'modulo' (opzionale)
  • Scatola del progetto
  • Interruttore a levetta
  • Cavo per montaggio a paratia da mini-usb a USB B ad angolo retto (50 cm)
  • PP3 e clip/supporto per batteria
  • Pali/distanziatori per montaggio su PCB autoadesivi

Avrai anche bisogno di un saldatore e di strumenti elettronici. Una stampante 3D e un trapano a colonna sono utili per il recinto, anche se se lo volessi potresti probabilmente assemblare il tutto sullo stripboard e non preoccuparti di una scatola.

Naturalmente intraprendi questo lavoro e sfrutti i risultati generati a tuo rischio.

Passaggio 2: disponi lo stripboard

Disporre lo stripboard
Disporre lo stripboard
Disporre lo stripboard
Disporre lo stripboard

Pianifica come disporre i componenti sullo stripboard. Puoi farlo da solo, facendo riferimento allo schema originale di K6BEZ (che manca di un encoder o di uno schermo - vedi pagina 7 di https://www.hamstack.com/hs_projects/antenna_analyzer_docs.pdf), oppure puoi risparmiare un sacco di tempo e copia il mio layout

Faccio questi layout in modo semplice, usando carta a quadretti e una matita. Ogni intersezione rappresenta un buco di stripboard. Le piste di rame vanno orizzontalmente. Una croce rappresenta una traccia rotta (usa un trapano da 6 mm o l'attrezzo adatto se ne hai uno). Le linee di cerchi circondate da un riquadro rappresentano le intestazioni. Grandi scatole con viti indicano i blocchi di connessione. Nota che nel mio diagramma c'è una linea extra che corre orizzontalmente attraverso il centro del tabellone. Lascialo fuori quando lo stai mettendo insieme (è contrassegnato come 'ometti questa riga').

Alcuni dei componenti possono sembrare disposti in modo strano. Questo perché il design si è evoluto una volta che l'hardware di base funzionava (in particolare quando mi sono reso conto che l'encoder aveva bisogno di interruzioni hardware, ad esempio).

Quando saldo i componenti sulla scheda, utilizzo il Blu-Tak per tenerli saldamente in posizione mentre capovolgo la scheda per saldare le gambe.

Ho cercato di ridurre al minimo la quantità di filo che ho usato allineando Arduino e il modulo DDS e usando semplicemente la stripboard per collegare i pin dei tasti. All'epoca non mi ero reso conto che gli interrupt hardware necessari per leggere l'encoder funzionano solo sui pin D2 e D3, quindi ho dovuto spostare DDS RESET dalla sua connessione D3 originale con un po' di filo:

RESET DDS - Arduino D7

DDS SDAT - Arduino D4

DDS FQ. UD - Arduino D5

DDS SCLK - Arduino D6

Arduino D2 e D3 sono utilizzati per gli ingressi dell'encoder A e B. D11 è utilizzato per l'ingresso dell'interruttore dell'encoder. D12 non è utilizzato, ma ho pensato di realizzare comunque un terminale a vite, per future espansioni.

Arduino A4 e A5 forniscono i segnali SDA e SCL (I2C) per lo schermo OLED.

Arduino A0 e A1 prendono gli input dal bridge VSWR (tramite OPAMP).

Passaggio 3: installare i moduli, collegare le periferiche e flashare il codice

Installa i moduli, collega le periferiche e esegui il flash del codice
Installa i moduli, collega le periferiche e esegui il flash del codice

Vale la pena testare la scheda prima di dedicarsi al montaggio in un contenitore. Collegare i seguenti componenti utilizzando un cavo flessibile alla scheda utilizzando le morsettiere a vite:

  • Display OLED da 1,3" (SDA e SCL sono collegati rispettivamente ai pin A4 e A5 di Arduino; terra e Vcc vanno a Arduino GND e +5V, ovviamente)
  • Encoder rotativo (richiede una messa a terra, due linee di segnale e una linea di commutazione - potrebbe essere necessario capovolgere le linee di commutazione se l'encoder funziona nel modo sbagliato - collegarle rispettivamente alla terra di Arduino, D2, D3 e D11). Nota che per il mio lavoro di prototipazione ho montato l'encoder 15/30 su una scheda del modulo encoder KH-XXX, poiché i pin sugli encoder nudi sono molto fragili. Per il lavoro finale ho saldato i fili direttamente sull'encoder.
  • Batteria da 9V
  • Presa SO-239 - saldare il pin centrale alla linea del segnale dell'antenna e utilizzare un terminale ad anello M3 e una vite per la massa dell'antenna

Flash il seguente schizzo su Arduino. Assicurati anche di aver incluso l'ottima libreria di driver OLED di Oli Kraus, o la compilazione si bloccherà e brucerà:

Se il tuo display OLED è leggermente diverso potresti aver bisogno di un'impostazione di configurazione diversa in u8glib; questo è ben documentato nel codice di esempio di Oli.

Passaggio 4: metti tutto in una bella scatola (opzionale)

Metti tutto in una bella scatola (opzionale)
Metti tutto in una bella scatola (opzionale)
Metti tutto in una bella scatola (opzionale)
Metti tutto in una bella scatola (opzionale)
Metti tutto in una bella scatola (opzionale)
Metti tutto in una bella scatola (opzionale)
Metti tutto in una bella scatola (opzionale)
Metti tutto in una bella scatola (opzionale)

Ho seriamente preso in considerazione l'idea di lasciare l'analizzatore come una scheda nuda, poiché era probabile che venisse usato solo occasionalmente. Ripensandoci, però, ho pensato che se avessi lavorato molto su una singola antenna, avrebbe potuto danneggiarsi. Quindi tutto è andato in una scatola. Non ha senso entrare nei dettagli su come è stato fatto, poiché la tua scatola sarà probabilmente diversa, ma vale la pena menzionare alcune caratteristiche chiave:

1. Utilizzare distanziatori PCB autoadesivi per il montaggio dello stripboard. Rendono la vita davvero facile.

2. Utilizzare un cavo adattatore USB corto per far uscire la porta USB Arduino sul retro della custodia. Quindi è facile accedere alla porta seriale per ottenere la frequenza rispetto ai dati VSWR e anche per eseguire il reflash dell'Arduino senza togliere il coperchio.

3. Ho sviluppato una parte stampata in 3D personalizzata per supportare il display OLED, poiché non sono riuscito a trovare nulla sul web. Questo ha un incavo per consentire di inserire un pezzo di acrilico da 2 mm per proteggere il fragile schermo. Può essere montato utilizzando nastro biadesivo o viti autofilettanti (con le linguette su entrambi i lati). Una volta che il display è stato montato, puoi usare un filo caldo (pensa a una graffetta e a una torcia) per fondere i pin in PLA sul retro del circuito per fissare tutto. Ecco il file STL per chiunque sia interessato:

Passaggio 5: calibrazione

Calibrazione
Calibrazione

Inizialmente non ho fatto alcuna calibrazione, ma ho scoperto che il misuratore VSWR era costantemente basso. Ciò significava che, sebbene un'antenna sembrasse a posto, l'autotuner del mio impianto non era in grado di corrispondere ad essa. Questo problema sorge perché il modulo DDS emette un segnale di ampiezza molto bassa (circa 0,5 Vpp a 3,5 MHz, attenuandosi all'aumentare della frequenza). I diodi rivelatori nel ponte VSWR operano quindi nella loro regione non lineare.

Ci sono due possibili correzioni per questo. Il primo è montare un amplificatore a banda larga all'uscita del DDS. Dispositivi potenzialmente adatti sono disponibili a buon mercato dalla Cina e aumenteranno l'uscita a circa 2 V pp. Ho ordinato uno di questi ma devo ancora provarlo. La mia sensazione è che anche questa ampiezza sarà un po' marginale e rimarrà una certa non linearità. Il secondo metodo consiste nel mettere carichi noti sull'uscita del contatore esistente e nel registrare il VSWR visualizzato ad ogni banda di frequenza. Ciò consente di costruire curve di correzione per il VSWR effettivo rispetto a quello riportato, che può quindi essere inserito nello schizzo Arduino per applicare la correzione al volo.

Ho adottato il secondo metodo perché era facile da fare. Basta procurarsi le seguenti resistenze: 50, 100, 150 e 200 ohm. Su questo strumento da 50 ohm questi corrisponderanno a VSWR di 1, 2, 3 e 4 per definizione. Nello schizzo c'è un interruttore 'use_calibration'. Impostalo su LOW e carica lo schizzo (che visualizzerà un avviso nella schermata iniziale). Quindi eseguire misurazioni al centro di ogni banda di frequenza per ogni resistore. Utilizzare un foglio di calcolo per tracciare il VSWR previsto rispetto a quello visualizzato. È quindi possibile eseguire un adattamento della curva logaritmica per ciascuna banda di frequenza, che fornisce un moltiplicatore e un'intercetta della forma TrueVSWR=m.ln(MeasuredVSWR)+c. Questi valori dovrebbero essere caricati nell'array swr_results nelle ultime due colonne (vedi la precedente dichiarazione di commento nello schizzo). Questo è un posto strano dove metterli, ma ero di fretta e poiché questo array di negozi galleggia mi è sembrata una scelta sensata in quel momento. Quindi rimetti l'interruttore use_calibration su HIGH, esegui il reflash di Arduino e il gioco è fatto.

Si noti che quando si effettuano le misurazioni della frequenza spot, la calibrazione viene applicata per la scelta iniziale della banda. Questo non verrà aggiornato se apporti modifiche grossolane alla frequenza.

Ora il misuratore legge come previsto per i carichi fissi e sembra avere senso quando misuro le mie antenne! Sospetto che potrei non preoccuparmi di provare quell'amplificatore a banda larga quando arriva …

Passaggio 6: utilizzo dell'analizzatore

Utilizzo dell'analizzatore
Utilizzo dell'analizzatore
Utilizzo dell'analizzatore
Utilizzo dell'analizzatore

Collegare un'antenna tramite un cavo PL-259 e accendere il dispositivo. Verrà visualizzata una schermata iniziale, quindi eseguirà automaticamente una scansione di tutte le principali bande HF. Il display mostra la frequenza in prova, la lettura VSWR corrente, la lettura VSWR minima e la frequenza alla quale si è verificata. Al fine di ridurre il rumore di misura, vengono effettuate cinque misurazioni di VSWR in ogni punto di frequenza; il valore medio di queste cinque letture viene quindi passato attraverso un filtro di media mobile a nove punti rispetto alla frequenza prima che venga visualizzato il valore finale.

Se vuoi fermare questa scansione di tutte le bande, premi semplicemente la manopola dell'encoder. Lo sweep si fermerà e verrà visualizzato un riepilogo di tutti i dati delle bande raccolti (con valori nulli per le bande non ancora scansionate). Una seconda pressione farà apparire il menu principale. Le scelte si effettuano ruotando l'encoder e poi premendolo nel punto appropriato. Ci sono tre scelte nel menu principale:

Sweep tutte le bande riavvia lo sweep di tutte le bande HF principali. Al termine verrà visualizzata la schermata di riepilogo sopra descritta. Annotalo o scatta una foto se vuoi tenerlo.

Sweep singola banda ti consentirà di selezionare una singola banda con l'encoder, quindi di scansionarla. Durante la selezione vengono visualizzati sia la lunghezza d'onda che l'intervallo di frequenza. Al termine dello sweep, una seconda pressione dell'encoder visualizzerà un semplice grafico VSWR in funzione della frequenza della banda appena scansionata, con un'indicazione numerica del VSWR minimo e della frequenza a cui si è verificato. Questo è molto utile se vuoi sapere se accorciare o allungare i bracci del dipolo, poiché mostra l'andamento del VSWR con frequenza; questo viene perso con il semplice rapporto numerico.

Singola frequenza consente di scegliere una singola frequenza fissa e quindi aggiorna continuamente una misurazione VSWR in tempo reale, per scopi di sintonizzazione dell'antenna in tempo reale. Selezionare prima la banda di frequenza pertinente; il display mostrerà quindi la frequenza centrale della banda scelta e una lettura in tempo reale del VSWR. A questo punto viene applicata la relativa calibrazione della banda. Una delle cifre della frequenza sarà sottolineata. Questo può essere spostato a sinistra ea destra con l'encoder. Premendo l'encoder si rafforza la linea; quindi la rotazione dell'encoder ridurrà o aumenterà la cifra (0-9 senza avvolgimento o riporto). Premere nuovamente l'encoder per fissare la cifra, quindi passare a quella successiva. Puoi accedere praticamente a qualsiasi frequenza sull'intero spettro HF utilizzando questa funzione: la selezione della banda all'inizio aiuta solo ad avvicinarti a dove probabilmente vorrai essere. C'è però un avvertimento: la calibrazione per la banda selezionata viene caricata all'inizio. Se ti allontani troppo dalla banda selezionata cambiando le cifre la calibrazione diventerà meno valida, quindi cerca di rimanere all'interno della banda scelta. Quando hai finito con questa modalità, sposta il carattere di sottolineatura completamente a destra fino a quando non si trova sotto "Esci", quindi premi l'encoder per tornare al menu principale.

Se colleghi il tuo PC alla presa USB sul retro dell'analizzatore (cioè nell'Arduino), puoi usare il monitor seriale Arduino per raccogliere i valori di frequenza rispetto a VSWR durante qualsiasi operazione di scansione (attualmente è impostato su 9600 ma puoi cambiarlo facilmente modificando il mio schizzo). I valori possono quindi essere inseriti in un foglio di calcolo in modo da poter tracciare grafici più permanenti, ecc.

Lo screenshot mostra il riepilogo VSWR per la mia antenna verticale per canna da pesca da 7,6 m con UNUN 9:1. Il mio impianto può ospitare un SWR 3:1 max con la sua unità di sintonizzazione automatica interna. Puoi vedere che sarò in grado di sintonizzarlo su tutte le bande tranne 80 me 17 m. Quindi ora posso rilassarmi sapendo che ho un'antenna multibanda passabile e non ho intenzione di rompere nulla di costoso quando trasmetto sulla maggior parte delle bande.

Buona fortuna e spero che lo trovi utile.

Consigliato: