Innholdsfortegnelse:

HF -antenneanalysator med Arduino og DDS -modul: 6 trinn (med bilder)
HF -antenneanalysator med Arduino og DDS -modul: 6 trinn (med bilder)

Video: HF -antenneanalysator med Arduino og DDS -modul: 6 trinn (med bilder)

Video: HF -antenneanalysator med Arduino og DDS -modul: 6 trinn (med bilder)
Video: DDS AD9850 VFO signal generator SETTINGS 2024, Juli
Anonim
HF -antenneanalysator med Arduino og DDS -modul
HF -antenneanalysator med Arduino og DDS -modul
HF -antenneanalysator med Arduino og DDS -modul
HF -antenneanalysator med Arduino og DDS -modul

Hei

I denne instruksen vil jeg vise deg hvordan jeg bygde en rimelig antenneanalysator som kan måle en antenne og vise VSWR over noen eller alle HF-frekvensbåndene. Den vil finne minimum VSWR og tilsvarende frekvens for hvert bånd, men vil også vise en sanntids VSWR for en brukervalgt frekvens for å lette antennejustering. Hvis du feier et enkelt frekvensbånd, vil det vise en graf over VSWR versus frekvens. Den har også en USB-port på baksiden for utsendelse av frekvens og VSWR-data, for å tillate mer raffinert grafplotting på en PC. USB -porten kan også brukes til å vaske fastvaren om nødvendig.

Jeg begynte nylig på amatørradio (fordi jeg likte ideen om peer-to-peer-kommunikasjon over store avstander uten infrastruktur) og gjorde raskt følgende observasjoner:

1. All verdensomspennende kommunikasjon som interesserte meg finner sted på HF-båndene (3-30 MHz)

2. HF-mottakere er veldig dyre og vil gå i stykker hvis du ikke driver dem inn i en rimelig godt tilpasset antenne

3. Du forventes vanligvis å rigge opp din egen HF -antenne fra ledningsbiter som er spunnet over hagen (med mindre du vil bruke enda mer penger enn du brukte på 2).

4. Antennen din kan være en dårlig match, men du vet ikke før du prøver den.

Nå vil nok en purist si at man først bør teste antennen på svært lav effekt ved frekvensen av interesse og sjekke VSWR på riggens måler for å vurdere kampens kvalitet. Jeg har egentlig ikke tid til å tulle med den slags for hver frekvens jeg måtte ønske å bruke. Det jeg virkelig ønsket var en antenneanalysator. Disse enhetene kan teste kvaliteten på antennekampen på en hvilken som helst frekvens over HF -båndene. Dessverre er de også veldig dyre, så jeg begynte å vurdere om jeg kunne lage min egen. Jeg snublet over det utmerkede arbeidet som ble utført av K6BEZ (se https://www.hamstack.com/project_antenna_analyzer.html), som undersøkte bruken av en Arduino for å kontrollere en billig digital digital synthesizer -modul (DDS). Han forlot snart Arduino av kostnadsgrunnlag, og foretrakk å bruke en PIC. Vel, i 2017 kan du kjøpe en Arduino Nano for omtrent 3,50 pund, så jeg tenkte at det var på tide å gå tilbake til arbeidet hans, plukke opp der han slapp og se hva jeg kunne finne på (merk at jeg ikke er den eneste som har gjort dette: det er noen veldig fine eksempler på internett).

Oppdatering (29/7/2018) - dette arbeidet har blitt bygget på betraktelig av bi3qwq, fra Kina, som har gjort noen veldig fine forbedringer av brukergrensesnittet, som han har delt. Han har designet en veldig profesjonell kretskort (med en flott kalibreringsmotstandsfunksjon) og gjort en veldig flott konstruksjon. På toppen av alt har han utarbeidet en skjematisk, som jeg vet vil glede mange av de som har kommentert tidligere. Se kommentarfeltet for mer informasjon.

Oppdatering - Jeg har kommet meg inn på 60 m nylig, som den originale skissen ikke dekket. Så nå har jeg lastet opp firmware -versjon 7, som legger til 160 m og 60 m bånd. Dette er ikke tilleggsprogrammer; de er fullt integrert i driften av analysatoren. Det var heldig at jeg kunne finne en u8glib -skrift som fremdeles var lesbar, men som tillot meg å vise ti band samtidig på den lille skjermen (selv om det ikke var monospace, noe som forårsaket litt sorg). Jeg har estimert kalibreringsverdier for de nye båndene, basert på interpolasjon / ekstrapolering av eksisterende kalibreringsverdier. Jeg sjekket disse med faste motstander, og de gir ganske gode resultater.

Oppdatering - ettersom flere mennesker har spurt om skjemaer, er den grunnleggende Arduino / DDS / VSWR -brokretsen stort sett uendret fra K6BEZs originale arbeid. Sjekk nettadressen ovenfor for den opprinnelige skjematikken jeg baserte dette prosjektet på. Jeg har lagt til en koder, en OLED -skjerm og fullt utviklet fastvare for en enkel brukeropplevelse.

Oppdatering - Dette systemet bruker en DDS -signalkilde med svært lav spenning i forbindelse med en resistiv bro som inneholder diodetektorer. Dermed opererer dioder i sine ikke-lineære områder, og min første versjon av dette systemet hadde en tendens til å underlese VSWR. Som et eksempel bør en 16 ohm eller 160 ohm impedansbelastning vise en VSWR på omtrent 3 i et 50 ohm system; denne måleren indikerte en VSWR nærmere 2 i denne situasjonen. Jeg utførte derfor en programvarekalibrering ved hjelp av kjente belastninger som ser ut til å være en effektiv løsning for dette problemet. Dette er beskrevet i det nest siste trinnet i denne instruksjonsboken, og en revidert skisse er lastet opp.

Oppdatering - innebygd graftegnelse lagt til enkelt sveip, da det var for nyttig å la være, spesielt når du stiller inn antennelengder for minimum VSWR: en graf gir deg en umiddelbart synlig trend.

Trinn 1: Kjøp tingene dine

Du trenger følgende elementer. De fleste av dem kan fås billig fra Ebay. Den dyreste enkeltvaren var esken, på nær £ 10! Det kan være mulig å erstatte noen varer (jeg brukte for eksempel 47 Rs i stedet for 50 Rs). Diodene var ganske uvanlige (jeg måtte kjøpe 5 av fra Italia) og ville være verdt å bytte ut mer lett tilgjengelige varer hvis du vet hva du gjør.

  • Arduino Nano
  • DDS-modul (DDS AD9850 Signalgeneratormodul HC-SR08 Signal Sine Square Wave 0-40MHz)
  • 1,3 "i2c OLED -skjerm
  • MCP6002 op-amp (8-pinners)
  • 2 av AA143 -diode
  • Keramiske kondensatorer: 2 av 100 nF, 3 av 10 nF
  • 1 uF elektrolytisk kondensator
  • Motstander: 3 av 50 R, 2 av 10 K, 2 av 100 K, 2 av 5 K, 2 av 648 R
  • 2,54 mm skrutrekkeklemmer: 3 av 2-pinners, 2 av 4-pinners
  • Enkeltkjernet tilkoblingstråd
  • 702 eller lignende tilkoblingstråd
  • Stripboard
  • Square header stripe (hunn) for å koble Arduino og DDS til - ikke kjøp de runde stikkontaktene ved en feiltakelse!
  • SO-239 stikkontakt i chassis
  • Roterende giver (15 puls, 30 sperre) med trykknapp og knapp
  • Billig roterende encoder 'modul' (valgfritt)
  • Prosjektboks
  • Vippebryter
  • Rettvinklet mini-usb til USB B skottmonteringsledning (50 cm)
  • PP3 og batteriklemme / holder
  • Selvklebende PCB-monteringsstolper / -avstander

Du trenger også et loddejern og elektronikkverktøy. En 3D -skriver og en søylebor er nyttig for kabinettet, men hvis du vil kan du sannsynligvis sette sammen det hele på tavlen og ikke bry deg med en eske.

Naturligvis påtar du deg dette arbeidet og utnytter resultatene som er generert på egen risiko.

Trinn 2: Legg ut tavlen

Legg ut tavlen
Legg ut tavlen
Legg ut tavlen
Legg ut tavlen

Planlegg hvordan du skal ordne komponentene på tavlen. Du kan enten gjøre det selv, med henvisning til K6BEZs originale skjema (som mangler en koder eller skjerm - se side 7 av https://www.hamstack.com/hs_projects/antenna_analyzer_docs.pdf), eller du kan spare mye tid og kopier oppsettet mitt.

Jeg gjør disse oppsettene på den enkle måten, ved hjelp av firkantet papir og en blyant. Hvert kryss representerer et hull i en tavle. Kobbersporene går horisontalt. Et kryss representerer et ødelagt spor (bruk en 6 mm drill eller riktig verktøy hvis du har en). Sirkelserier med en boks rundt dem representerer overskrifter. Store esker med skruer angir kontaktblokkene. Legg merke til at i diagrammet mitt er det en ekstra linje som går horisontalt gjennom midten av brettet. La dette stå utenfor når du setter det sammen (det er merket med 'utelat denne linjen').

Noen av komponentene kan se ut til å være merkelig lagt ut. Dette er fordi designet utviklet seg når jeg hadde fått den grunnleggende maskinvaren til å fungere (spesielt når jeg innså at koder for eksempel trengte maskinvareavbrudd).

Når jeg lodder komponenter på brettet, bruker jeg Blu-Tak til å holde dem godt på plass mens jeg snur brettet for å lodde bena.

Jeg prøvde å minimere mengden ledning jeg brukte ved å justere Arduino og DDS -modulen og bare bruke tavlen til å koble nøkkelpinner. Jeg skjønte ikke på det tidspunktet at maskinvareavbruddene trengte for å lese av koderen bare fungerte på pinne D2 og D3, så jeg måtte flytte DDS RESET fra den opprinnelige D3 -tilkoblingen med litt ledning:

DDS RESET - Arduino D7

DDS SDAT - Arduino D4

DDS FQ. UD - Arduino D5

DDS SCLK - Arduino D6

Arduino D2 og D3 brukes for koderinngangene A & B. D11 brukes til inngang for omkoderbryter. D12 brukes ikke, men jeg trodde jeg skulle lage en skrueterminal for den uansett, for fremtidig utvidelse.

Arduino A4 og A5 gir SDA & SCL (I2C) signaler for OLED -skjermen.

Arduino A0 og A1 tar inngangene fra VSWR -broen (via OPAMP).

Trinn 3: Installer modulene, fest tilleggsutstyret og blits koden

Installer modulene, fest tilleggsutstyret og blits koden
Installer modulene, fest tilleggsutstyret og blits koden

Det er verdt å teste brettet før du prøver å montere det i et skap. Fest følgende komponenter ved hjelp av fleksibel ledning til brettet med skrueklemmer:

  • 1,3 "OLED -skjerm (SDA og SCL er koblet til henholdsvis Arduino pin A4 og A5; bakken og Vcc går til Arduino GND og +5V, åpenbart)
  • Roterende enkoder (dette trenger en bakken, to signallinjer og en bryterlinje - du må kanskje snu bryterlinjene hvis koderen fungerer feil - koble disse til henholdsvis Arduino -bakken, D2, D3 og D11). Vær oppmerksom på at for mitt prototypearbeid monterte jeg 15/30 encoder på et KH-XXX encoder-modulkort, ettersom pinnene på de bare encoderne er veldig spinkle. Til den siste jobben loddet jeg ledninger rett på koderen.
  • 9V batteri
  • SO -239 -kontakt - lodd midtstiften til antennesignallinjen og bruk en M3 -ringterminal og skrue for antennegrunnen

Flash følgende skisse på Arduino. Sørg også for at du har inkludert det meget gode OLED -driverbiblioteket fra Oli Kraus, ellers vil komplimasjonen krasje og brenne:

Hvis OLED -skjermen er litt annerledes kan det hende du trenger en annen konfigurasjonsinnstilling i u8glib; dette er godt dokumentert i Olis eksempelkode.

Trinn 4: Legg alt i en fin eske (valgfritt)

Legg alt i en fin eske (valgfritt)
Legg alt i en fin eske (valgfritt)
Legg alt i en fin eske (valgfritt)
Legg alt i en fin eske (valgfritt)
Legg alt i en fin eske (valgfritt)
Legg alt i en fin eske (valgfritt)
Legg alt i en fin eske (valgfritt)
Legg alt i en fin eske (valgfritt)

Jeg vurderte seriøst å la analysatoren stå som et brett, ettersom den sannsynligvis bare ville bli brukt av og til. Ved refleksjon trodde jeg imidlertid at hvis jeg gjorde mye arbeid på en enkelt antenne, kan det ende med å bli skadet. Så alt gikk i en eske. Det er ingen vits å gå inn på detaljer om hvordan dette ble gjort, da boksen din sannsynligvis vil være annerledes, men noen viktige funksjoner er verdt å nevne:

1. Bruk selvklebende PCB-avstand for montering av båndplaten. De gjør livet veldig enkelt.

2. Bruk en kort USB -adapterledning for å få frem Arduino USB -porten på baksiden av kabinettet. Da er det enkelt å få tilgang til den serielle porten for å få frekvens vs. VSWR -data og også å skylle Arduino på nytt uten å ta av lokket.

3. Jeg utviklet en egendefinert 3D-trykt del for å støtte OLED-skjermen, siden jeg ikke fant noe på nettet. Denne har en fordypning slik at man kan sette inn et 2 mm stykke akryl for å beskytte den skjøre skjermen. Den kan enten monteres ved hjelp av dobbeltsidig tape eller selvskruende skruer (med tappene på hver side). Når skjermen er montert, kan du bruke en varm ledning (tenk binders og blåselys) for å smelte PLA -pinnene på baksiden av kretskortet for å feste alt. Her er STL -filen for alle som er interessert:

Trinn 5: Kalibrering

Kalibrering
Kalibrering

Opprinnelig gjorde jeg ingen kalibrering, men oppdaget at VSWR -måleren konsekvent leste lavt. Dette betydde at selv om en antenne så ut til å være ok, kunne ikke riggen min autotuner passe til den. Dette problemet oppstår fordi DDS -modulen gir et signal med svært lav amplitude (ca. 0,5 Vpp ved 3,5 MHz, ruller av når frekvensen øker). Detektordioder i VSWR-broen fungerer derfor i sitt ikke-lineære område.

Det er to mulige reparasjoner for dette. Den første er å passe en bredbåndsforsterker til utgangen fra DDS. Potensielt egnede enheter er tilgjengelig billig fra Kina, og de vil øke produksjonen til ca 2 V s. Jeg har bestilt en av disse, men har ennå ikke prøvd den. Min følelse er at selv denne amplituden vil være litt marginal og noen ikke-lineæritet vil forbli. Den andre metoden er å legge kjente belastninger på utgangen til den eksisterende måleren og å registrere den viste VSWR på hvert frekvensbånd. Dette lar deg konstruere korreksjonskurver for faktisk versus rapportert VSWR, som deretter kan settes inn i Arduino -skissen for å bruke korreksjon i farten.

Jeg tok i bruk den andre metoden som den var lett å gjøre. Bare ta tak i følgende motstander: 50, 100, 150 og 200 ohm. På dette 50 ohm instrumentet vil disse svare til VSWR på 1, 2, 3 og 4 per definisjon. I skissen er det en bryter 'bruk_kalibrering'. Sett dette til LAVT og last opp skissen (som viser en advarsel på sprutskjermen). Utfør deretter målinger i midten av hvert frekvensbånd for hver motstand. Bruk et regneark for å plotte forventet kontra vist VSWR. Du kan deretter gjøre en logaritmisk kurvetilpasning for hvert frekvensbånd, som gir en multiplikator og skjæringspunkt av formen TrueVSWR = m.ln (MeasuredVSWR)+c. Disse verdiene bør lastes inn i swr_results -arrayet i de to siste kolonnene (se den foregående kommentaren i skissen). Dette er et merkelig sted å sette dem på, men jeg hadde det travelt, og da denne butikken flyter, virket det som et fornuftig valg den gangen. Sett deretter use_calibration -bryteren tilbake til HIGH, refill Arduino og så er du i gang.

Vær oppmerksom på at når du utfører spotfrekvensmålingene, brukes kalibreringen for det første båndvalget. Dette vil ikke bli oppdatert hvis du gjør store endringer i frekvens.

Nå leser måleren som forventet for de faste lastene og ser ut til å være fornuftig når jeg måler antennene mine! Jeg mistenker at jeg ikke gidder å prøve den bredbåndsforsterkeren når den kommer …

Trinn 6: Bruke analysatoren

Bruke analysatoren
Bruke analysatoren
Bruke analysatoren
Bruke analysatoren

Fest en antenne via en PL-259-ledning og slå på enheten. Den vil vise en sprutskjerm og deretter utføre en feiing av alle de viktigste HF -båndene. Displayet viser frekvensen som testes, gjeldende VSWR -avlesning, minimum VSWR -avlesning og frekvensen den skjedde med. For å redusere målestøy blir det tatt fem målinger av VSWR ved hvert frekvenspunkt; middelverdien av disse fem avlesningene blir deretter ført gjennom et ni-punkts glidende gjennomsnittsfilter med hensyn til frekvens før den endelige verdien vises.

Hvis du vil stoppe denne all-band-feiingen, trykker du bare på koderknappen. Sveipingen vil stoppe og et sammendrag av alle innsamlede bånddata vil bli vist (med null for de bandene som ennå ikke er feid). Et nytt trykk vil vise hovedmenyen. Valg gjøres ved å rotere encoderen og deretter trykke den på det riktige punktet. Det er tre valg i hovedmenyen:

Sveip alle bånd vil starte feien på nytt på alle de viktigste HF -båndene. Når den er ferdig, viser den oppsummeringsskjermen beskrevet ovenfor. Skriv ned dette eller ta et bilde hvis du vil beholde det.

Sveip enkeltbånd lar deg velge et enkelt bånd med koderen og deretter feie det. Både bølgelengden og frekvensområdet vises mens du gjør valget. Når feien er ferdig, vil et nytt trykk på koderen vise en enkel VSWR versus frekvensgraf for båndet som nettopp er feid, med en numerisk indikasjon på minimum VSWR og frekvensen som det skjedde. Dette er veldig nyttig hvis du vil vite om du skal forkorte eller forlenge dipolarmene, ettersom det viser VSWR -trenden med frekvens; dette går tapt med den enkle numeriske rapporten.

Enkelfrekvens lar deg velge en enkelt fast frekvens og oppdaterer deretter kontinuerlig en live VSWR -måling, for antennetuningsformål i sanntid. Velg først det relevante frekvensbåndet; displayet vil da vise senterfrekvensen til det valgte båndet og en live VSWR -avlesning. Den aktuelle båndkalibreringen brukes på dette tidspunktet. Ett av sifrene i frekvensen vil bli understreket. Dette kan flyttes til venstre og høyre med koderen. Ved å trykke på encoder forsterkes linjen; da vil rotasjonen av encoderen redusere eller øke sifferet (0-9 uten vikling eller bæring). Trykk på encoderen igjen for å fikse sifferet, og gå deretter til neste. Du kan få tilgang til stort sett hvilken som helst frekvens over hele HF -spekteret ved å bruke denne funksjonen - båndvalget ved starten hjelper bare med å komme deg nær der du sannsynligvis vil være. Det er imidlertid en advarsel: kalibreringen for det valgte båndet er lastet i starten. Hvis du beveger deg for langt unna det valgte båndet ved å endre sifrene, blir kalibreringen mindre gyldig, så prøv å holde deg innenfor det valgte båndet. Når du er ferdig med denne modusen, flytter du understreket helt til høyre til det er under "exit", og trykker deretter på encoderen for å gå tilbake til hovedmenyen.

Hvis du kobler PC -en til USB -kontakten på baksiden av analysatoren (dvs. i Arduino), kan du bruke Arduino seriell skjerm til å samle frekvens versus VSWR -verdier under enhver feieoperasjon (den er for øyeblikket satt til 9600, men du kan endre den enkelt ved å redigere skissen min). Verdiene kan deretter settes inn i et regneark, slik at du kan plotte mer permanente grafer etc.

Skjermbildet viser VSWR -sammendraget for min vertikale antenne på 7,6 m fiskestang med 9: 1 UNUN. Riggen min har plass til en 3: 1 maks SWR med sin interne auto-tunerenhet. Du kan se at jeg vil være i stand til å stille den over alle bånd unntatt 80 m og 17 m. Så nå kan jeg slappe av i visshet om at jeg har en farbar flerbåndsantenne, og jeg kommer ikke til å ødelegge noe dyrt når jeg sender på de fleste båndene.

Lykke til, og jeg håper du finner dette nyttig.

Anbefalt: