Innehållsförteckning:

HF -antennanalysator med Arduino och DDS -modul: 6 steg (med bilder)
HF -antennanalysator med Arduino och DDS -modul: 6 steg (med bilder)

Video: HF -antennanalysator med Arduino och DDS -modul: 6 steg (med bilder)

Video: HF -antennanalysator med Arduino och DDS -modul: 6 steg (med bilder)
Video: как сделать простой измеритель мощности беспроводного сигнала, JLCPCB 2024, Juli
Anonim
HF -antennanalysator med Arduino och DDS -modul
HF -antennanalysator med Arduino och DDS -modul
HF -antennanalysator med Arduino och DDS -modul
HF -antennanalysator med Arduino och DDS -modul

Hej

I denna instruktionsbok ska jag visa dig hur jag byggde en billig antennanalysator som kan mäta en antenn och visa dess VSWR över alla eller alla HF-frekvensband. Den hittar den minsta VSWR och motsvarande frekvens för varje band men också en realtid VSWR för en användarvald frekvens för att underlätta antennjustering. Om du sveper ett enda frekvensband visar det en graf över VSWR mot frekvens. Den har också en USB-port på baksidan för utmatning av frekvens och VSWR-data, för att möjliggöra mer förfinad grafritning på en PC. USB -porten kan också användas för att ladda om firmware om det behövs.

Jag kom nyligen in på amatörradio (eftersom jag gillade idén om peer-to-peer-kommunikation över stora avstånd utan infrastruktur) och gjorde snabbt följande observationer:

1. All världsomspännande kommunikation som intresserade mig sker på HF-banden (3-30 MHz)

2. HF-sändtagare är mycket dyra och går sönder om du inte kör in dem i en rimligt väl anpassad antenn

3. Du förväntas i allmänhet rigga upp din egen HF -antenn från trådbitar som sträcker sig över trädgården (om du inte vill spendera ännu mer pengar än du spenderade i 2).

4. Din antenn kan vara en dålig matchning men du vet inte förrän du försöker.

Nu skulle en purist förmodligen säga att man först ska testa antennen på mycket låg effekt vid intressefrekvensen och kontrollera VSWR på riggens mätare för att bedöma kvaliteten på matchen. Jag har inte riktigt tid att tjata om sånt för varje frekvens jag kanske vill använda. Det jag verkligen ville var en antennanalysator. Dessa enheter kan testa kvaliteten på antennmatchningen vid vilken frekvens som helst över HF -banden. Tyvärr är de också väldigt dyra, så jag tänkte fundera på om jag kunde göra min egen. Jag snubblade över det utmärkta arbetet som utförts av K6BEZ (se https://www.hamstack.com/project_antenna_analyzer.html), som undersökte användningen av en Arduino för att styra en billig digital digital syntesmodul (DDS). Han övergav snart Arduino av kostnadsskäl, föredrog att använda en PIC. Tja, 2017 kan du köpa en Arduino Nano för cirka £ 3,50, så jag trodde att det var dags att återkomma till hans arbete, plocka upp där han slutade och se vad jag kunde hitta på (notera att jag inte är den enda vem har gjort detta: det finns några mycket fina exempel på internet).

Uppdatering (29/7/2018) - detta arbete har byggts på avsevärt av bi3qwq, från Kina, som har gjort några riktigt fina förbättringar av användargränssnittet, som han vänligt har delat. Han har designat ett mycket professionellt kretskort (med en fantastisk kalibreringsmotståndsfunktion) och gjort ett riktigt snyggt bygge. Till råga på allt har han utarbetat en schematisk, som jag vet kommer att glädja många av dem som har kommenterat tidigare. Se kommentarsektionen för mer information.

Uppdatering - Jag har kommit in på 60 m nyligen, vilket den ursprungliga skissen inte täckte. Så nu har jag laddat upp firmware -version 7, som lägger till 160 m och 60 m banden. Det här är inte tillägg; de är helt integrerade i analysatorns drift. Det var tur att jag kunde hitta ett u8glib -teckensnitt som fortfarande var läsbart men som tillät mig att visa tio band samtidigt på den lilla skärmen (även om det inte var monospace, vilket orsakade viss sorg). Jag har uppskattat kalibreringsvärden för de nya banden, baserat på interpolering / extrapolering av befintliga kalibreringsvärden. Jag kollade sedan upp dessa med fasta motstånd och de ger ganska bra resultat.

Uppdatering - eftersom flera personer har frågat om scheman är den grundläggande Arduino / DDS / VSWR -bryggkretsen i stort sett oförändrad från K6BEZs originalverk. Kolla in ovanstående URL för hans ursprungliga schema som jag baserade detta projekt på. Jag har lagt till en kodare, en OLED -skärm och fullt utvecklad firmware för en enkel användarupplevelse.

Uppdatering - Detta system använder en DDS -signalkälla med mycket låg spänning tillsammans med en resistiv brygga som innehåller dioddetektorer. Således fungerar dioderna i sina icke-linjära områden och min första version av detta system tenderade att underläsa VSWR. Som ett exempel bör en 16 ohm eller 160 ohm impedansbelastning visa en VSWR på cirka 3 i ett 50 ohm system; denna mätare indikerade en VSWR närmare 2 i denna situation. Jag genomförde därför en mjukvarukalibrering med kända laster som verkar vara en effektiv lösning för detta problem. Detta beskrivs i det näst sista steget i denna instruerbara och en reviderad skiss har laddats upp.

Uppdatering - inbyggd graffunktion har lagts till för enstaka svep eftersom det var för användbart för att uteslutas, särskilt när du ställer in antennlängder för minsta VSWR: en graf ger dig en direkt synlig trend.

Steg 1: Köp dina saker

Du behöver följande objekt. De flesta av dem kan köpas billigt från Ebay. Det dyraste enskilda objektet var lådan, nära £ 10! Det kan vara möjligt att ersätta vissa artiklar (jag använde 47 Rs istället för 50 Rs, till exempel). Dioderna var ganska ovanliga (jag var tvungen att köpa 5 rabatter från Italien) och skulle vara värt att ersätta mer lättillgängliga artiklar om du vet vad du gör.

  • Arduino Nano
  • DDS-modul (DDS AD9850 Signalgeneratormodul HC-SR08 Signal Sine Square Wave 0-40MHz)
  • 1,3 "i2c OLED -skärm
  • MCP6002 op-amp (8-stift)
  • 2 av AA143 -diod
  • Keramiska kondensatorer: 2 av 100 nF, 3 av 10 nF
  • 1 uF elektrolytkondensator
  • Motstånd: 3 av 50 R, 2 av 10 K, 2 av 100 K, 2 av 5 K, 2 av 648 R
  • 2,54 mm stigskruvplintar: 3 av 2-stift, 2 av 4-stift
  • Enkärnig anslutningstråd
  • 702 eller liknande anslutningstråd
  • Stripboard
  • Fyrkantig huvudremsa (hona) för att ansluta Arduino och DDS till - köp inte runda uttag av misstag!
  • SO-239 uttag för chassi
  • Vridgivare (15 puls, 30 spärrar) med tryckknapp och vred
  • Billig roterande kodare 'modul' (tillval)
  • Projektlåda
  • Brytare
  • Rätvinklig mini-usb till USB B skottmonterad ledning (50 cm)
  • PP3 och batteriklämma / hållare
  • Självhäftande PCB-monteringsstolpar / avstånd

Du behöver också lödkolv och elektronikverktyg. En 3D -skrivare och en pelarborr är till hjälp för höljet, men om du vill kan du förmodligen montera det hela på bandbordet och inte bry dig om en låda.

Naturligtvis utför du detta arbete och utnyttjar resultaten som genereras på egen risk.

Steg 2: Lägg ut Stripboard

Lägg ut Stripboard
Lägg ut Stripboard
Lägg ut Stripboard
Lägg ut Stripboard

Planera hur du ska ordna komponenterna på bandplattan. Du kan antingen göra det själv, med hänvisning till K6BEZ originalschema (som saknar en kodare eller skärm - se sidan 7 på https://www.hamstack.com/hs_projects/antenna_analyzer_docs.pdf), eller så kan du spara en massa tid och kopiera min layout.

Jag gör dessa layouter på ett enkelt sätt med fyrkantigt papper och en penna. Varje korsning representerar ett hål på en plank. Kopparspåren går horisontellt. Ett kors representerar ett trasigt spår (använd en 6 mm borr eller rätt verktyg om du har en). Cirklarader med en ruta runt dem representerar rubriker. Stora lådor med skruvar betecknar kopplingsblocken. Observera att i mitt diagram finns en extra linje som går horisontellt genom mitten av brädet. Lämna detta utanför när du sätter ihop det (det är märkt 'utelämna den här raden').

Några av komponenterna kan verka konstiga. Detta beror på att designen utvecklades när jag hade fått den grundläggande hårdvaran att fungera (särskilt när jag insåg att kodaren behövde hårdvaruavbrott, till exempel).

Vid lödning av komponenter på brädet använder jag Blu-Tak för att hålla dem stadigt på plats medan jag vänder brädet för att lödda benen.

Jag försökte minimera mängden tråd jag använde genom att anpassa Arduino och DDS -modulen och bara använda bandet för att ansluta nyckelstift. Jag insåg inte då att maskinvaruavbrotten behövdes för att läsa av kodaren bara fungerade på stift D2 och D3, så jag var tvungen att flytta DDS RESET från sin ursprungliga D3 -anslutning med lite tråd:

DDS RESET - Arduino D7

DDS SDAT - Arduino D4

DDS FQ. UD - Arduino D5

DDS SCLK - Arduino D6

Arduino D2 & D3 används för pulsgivaringångarna A & B. D11 används för pulsgivarens switchingång. D12 används inte men jag trodde att jag skulle göra en skruvterminal för den ändå, för framtida expansion.

Arduino A4 & A5 ger SDA & SCL (I2C) signaler för OLED -skärmen.

Arduino A0 & A1 tar ingångarna från VSWR -bron (via OPAMP).

Steg 3: Installera modulerna, fäst kringutrustningen och blinka koden

Installera modulerna, fäst kringutrustningen och blinka koden
Installera modulerna, fäst kringutrustningen och blinka koden

Det är värt att testa brädet innan du besvärar med att montera det i ett hölje. Fäst följande komponenter med hjälp av flexibel tråd på kortet med skruvplintarna:

  • 1,3 "OLED -skärm (SDA och SCL är anslutna till Arduino -stift A4 respektive A5; mark och Vcc går till Arduino GND och +5V, uppenbarligen)
  • Roterande pulsgivare (detta behöver en jord, två signalledningar och en omkopplare) - du kan behöva vända omkopplarna om omkodaren fungerar fel - anslut dessa till Arduino -jord, D2, D3 respektive D11). Observera att för mitt prototyparbete arbetade jag med 15/30-givaren på ett KH-XXX-givarmodulkort, eftersom stiften på de bara givarna är mycket tunna. För det sista jobbet lödde jag trådar rakt på pulsgivaren.
  • 9V batteri
  • SO -239 -uttag - löd mittstiftet till antennens signalledning och använd en M3 -ringterminal och skruv för antennjorden

Flasha följande skiss på Arduino. Se också till att du har inkluderat det mycket bra OLED -drivrutinsbiblioteket från Oli Kraus, annars kommer sammanställningen att krascha och brinna:

Om din OLED -skärm är något annorlunda kan du behöva en annan konfigurationsinställning i u8glib; detta är väl dokumenterat i Olis exempelkod.

Steg 4: Lägg allt i en snygg låda (tillval)

Lägg allt i en snygg låda (tillval)
Lägg allt i en snygg låda (tillval)
Lägg allt i en snygg låda (tillval)
Lägg allt i en snygg låda (tillval)
Lägg allt i en snygg låda (tillval)
Lägg allt i en snygg låda (tillval)
Lägg allt i en snygg låda (tillval)
Lägg allt i en snygg låda (tillval)

Jag övervägde allvarligt att lämna analysatorn som en ren kartong, eftersom den sannolikt bara skulle användas ibland. Vid eftertanke tänkte jag dock att om jag gör mycket arbete på en enda antenn kan det bli skadat. Så allt gick i en låda. Det är ingen idé att gå in på detaljer om hur detta gjordes, eftersom din låda troligen kommer att vara annorlunda, men några viktiga funktioner är värda att nämna:

1. Använd självhäftande PCB-avstånd för montering av bandplattan. De gör livet väldigt enkelt.

2. Använd en kort USB -adapterkabel för att ta ut Arduino USB -porten på baksidan av höljet. Då är det lätt att komma åt den seriella porten för att få frekvens vs VSWR -data och även att skölja om Arduino utan att ta av locket.

3. Jag utvecklade en anpassad 3D-tryckt del för att stödja OLED-skärmen, eftersom jag inte kunde hitta något på webben. Detta har en urtagning så att man kan sätta in en 2 mm bit akryl för att skydda den ömtåliga skärmen. Den kan antingen monteras med dubbelsidig tejp eller självgängande skruvar (med flikarna på vardera sidan). När displayen har monterats kan du använda en het tråd (tänk pappersklämma och blåslampa) för att smälta PLA -stiften på kretskortets baksida för att säkra allt. Här är STL -filen för alla som är intresserade:

Steg 5: Kalibrering

Kalibrering
Kalibrering

Ursprungligen gjorde jag ingen kalibrering men upptäckte att VSWR -mätaren konsekvent läste lågt. Detta innebar att även om en antenn verkade vara okej, kunde inte min riggs autotuner matcha den. Detta problem uppstår eftersom DDS -modulen ger ut en signal med mycket låg amplitud (cirka 0,5 Vpp vid 3,5 MHz, rullar av när frekvensen ökar). Detektordioderna i VSWR-bron fungerar därför i sitt olinjära område.

Det finns två möjliga korrigeringar för detta. Den första är att passa en bredbandsförstärkare till utgången från DDS. Potentiellt lämpliga enheter finns billigt från Kina och de kommer att öka uteffekten till cirka 2 V sid. Jag har beställt en av dessa men har ännu inte provat. Min känsla är att även denna amplitud kommer att vara lite marginell och viss icke-linjäritet kommer att finnas kvar. Den andra metoden är att sätta kända belastningar på den befintliga mätarens utsignal och spela in den visade VSWR vid varje frekvensband. Detta låter dig konstruera korrigeringskurvor för faktiska kontra rapporterade VSWR, som sedan kan läggas in i Arduino -skissen för att tillämpa korrigering i farten.

Jag antog den andra metoden eftersom den var lätt att göra. Ta bara tag i följande motstånd: 50, 100, 150 och 200 ohm. På detta 50 ohm instrument kommer dessa att motsvara VSWR på 1, 2, 3 och 4 per definition. I skissen finns en switch 'use_calibration'. Ställ in detta på LÅG och ladda upp skissen (som visar en varning på stänkskärmen). Utför sedan mätningar i mitten av varje frekvensband för varje motstånd. Använd ett kalkylblad för att plotta förväntat kontra visat VSWR. Du kan sedan göra en logaritmisk kurvpassning för varje frekvensband, vilket ger en multiplikator och avlyssning av formen TrueVSWR = m.ln (MeasuredVSWR)+c. Dessa värden bör laddas in i swr_results -arrayen i de två sista kolumnerna (se föregående kommentarsuttalande i skissen). Det här är en udda plats att lägga dem på men jag hade bråttom och när denna matris lagrar flyter verkade det som ett vettigt val just då. Sätt sedan tillbaka omkopplaren use_calibration till HIGH, kör om Arduino och kör iväg.

Observera att när du gör spotfrekvensmätningarna tillämpas kalibreringen för det första bandvalet. Detta uppdateras inte om du gör stora förändringar i frekvensen.

Nu läser mätaren som förväntat för de fasta lasterna och verkar vara vettigt när jag mäter mina antenner! Jag misstänker att jag kanske inte bry mig om att prova den bredbandsförstärkaren när den kommer …

Steg 6: Använda analysatorn

Använda analysatorn
Använda analysatorn
Använda analysatorn
Använda analysatorn

Anslut en antenn via en PL-259-kabel och slå på enheten. Det kommer att visa en stänkskärm och sedan automatiskt göra en svepning av alla de viktigaste HF -banden. Displayen visar frekvensen som testas, den aktuella VSWR -avläsningen, den lägsta VSWR -avläsningen och frekvensen vid vilken den inträffade. För att minska mätbruset görs fem mätningar av VSWR vid varje frekvenspunkt; medelvärdet för dessa fem avläsningar passeras sedan genom ett nio-punkts rörligt medelfilter med avseende på frekvens innan slutvärdet visas.

Om du vill stoppa denna all-band svepning trycker du bara på pulsratten. Svepningen stannar och en sammanfattning av all insamlad banddata visas (med nollpunkter för de band som ännu inte har sopats). En andra tryckning öppnar huvudmenyn. Val görs genom att vrida pulsgivaren och sedan trycka på den vid lämplig punkt. Det finns tre alternativ i huvudmenyn:

Sopa alla band startar om svepningen av alla de viktigaste HF -banden. När den är klar visar den sammanfattningsskärmen som beskrivs ovan. Skriv ner detta eller ta ett foto om du vill behålla det.

Sweep singelband låter dig välja ett enda band med kodaren och sedan sopa det. Både våglängden och frekvensområdet visas medan valet görs. När svepningen är klar kommer ett andra tryck på kodaren att visa ett enkelt VSWR kontra frekvensdiagram för det band som just svepts, med en numerisk indikation på minsta VSWR och frekvensen som det inträffade. Detta är mycket praktiskt om du vill veta om du ska förkorta eller förlänga dina dipolarmar, eftersom det visar VSWR -trenden med frekvens; detta går förlorat med den enkla numeriska rapporten.

En enda frekvens låter dig välja en enda fast frekvens och uppdaterar sedan kontinuerligt en live VSWR -mätning för antennjustering i realtid. Välj först det relevanta frekvensbandet; displayen visar sedan mittfrekvensen för det valda bandet och en live VSWR -avläsning. Den relevanta bandkalibreringen tillämpas vid denna tidpunkt. En av siffrorna i frekvensen kommer att understrykas. Detta kan flyttas åt vänster och höger med pulsgivaren. Genom att trycka på pulsgivaren fördjupas linjen; Om du vrider på pulsgivaren minskar eller ökar siffran (0-9 utan omslag eller bär). Tryck på pulsgivaren igen för att fixa siffran och fortsätt sedan till nästa. Du kan få tillgång till i stort sett vilken frekvens som helst i hela HF -spektrumet med den här funktionen - bandvalet i början hjälper bara till att komma dig nära dit du förmodligen vill vara. Det finns dock en varning: kalibreringen för det valda bandet laddas i början. Om du rör dig för långt bort från det valda bandet genom att ändra siffrorna blir kalibreringen mindre giltig, så försök att hålla dig inom det valda bandet. När du är klar med det här läget, flytta understrecket hela vägen till höger tills det är under 'exit' och tryck sedan på pulsgivaren för att återgå till huvudmenyn.

Om du ansluter din dator till USB -uttaget på analysatorns baksida (dvs in i Arduino) kan du använda Arduinos seriella bildskärm för att samla frekvens kontra VSWR -värden under varje svepoperation (den är för närvarande inställd på 9600 men du kan ändra det enkelt genom att redigera min skiss). Värdena kan sedan läggas in i ett kalkylblad så att du kan plotta mer permanenta grafer etc.

Skärmdumpen visar VSWR -sammanfattningen för min 7,6 m lodräta antenn med 9: 1 UNUN. Min rigg rymmer en 3: 1 max SWR med sin interna automatiska tuner. Du kan se att jag kommer att kunna stämma över alla band utom 80 m och 17 m. Så nu kan jag koppla av i vetskapen om att jag har en acceptabel flerbandsantenn och jag kommer inte att bryta något dyrt när jag sänder på de flesta band.

Lycka till och jag hoppas att du tycker att detta är användbart.

Rekommenderad: