Antenne Returnloss / SWR Måler – Efteråret 2015

Af OZ6YM, Palle Anker Andersen

 

En SWR Analyzer har længe stået på ønskesedlen her, men de er jo relativ dyre endnu, så med den nemme tilgang til programmering af ARDUINO UNO, er et gammelt projekt taget frem til fornyet overvejelse.

 

Projektet startede med et forsøg for nogle år siden på, at programmere en PIC-processor til at gøre det arbejde, som nu ARDUINO UNO gør i denne konstruktion, nemlig at måle ”Returnloss”, også kaldet S11 og SWR. Det var for svært for mig med en PIC-processor, så projektet blev skrinlagt, indtil nu.

 

Der var ikke plads i det oprindelige projekt til, at en ARDUINO UNO kunne være i kassen, og derfor har det betydet, at der skulle laves nyt processor-print, og at jeg skulle gøre mig overvejelser, om ATmega328P-processoren kunne klare opgaven med sin kun 16 MHz’s clock-generator, og det ser ud til at gå udmærket.

 

 

ARDUINO Koden

På min hjemmeside (se referencen sidst i artiklen), vil du kunne finde den seneste version af softwaren til SWR Måleren. Den forudsætter, at du har adgang til nogle bestemte biblioteker fra din IDE (Integrated Development Environment), nemlig EEPROM.h, LiquidCrystal.h, Wire.h og Encoder.h.

 

De er måske ikke alle sammen integreret i din IDE, men så må du finde dem på nettet, og installere dem i dit ARDUINO ”Library” Bibliotek.

 

Der er masser af beskrivelse af, hvorledes du gør det ved at søge på Arduino Playground.

 

Jeg skal indrømme, at jeg går ud fra, at du er bekendt med ARDUINO IDE og dets virkemåde, eller må du prøve at skaffe dig viden om det i din lokale EDR eller på anden måde.

 

Jeg kan kun i begrænset omfang deltage i andet end vejledning.

 

 

Wheatstone Målebro

En Wheatstonebro udgør hjertet og grundlaget for måling med en AD8307, Analog Device’s Logaritmiske forstærker, og som generator har jeg brugt en færdiglavet Direct Digital Signal Generatorenhed, DDS-60 Daughtercard, hjemkøbt fra Midnight Design Solutions, og som nu har nogle år på bagen. Se ref.

 

Wheatstone-bro og Logaritmisk forstærker AD8307

 

 

Fra DDS-60 føres et signal på omkring 1 mW via en kondensator C1 ind på Wheatstonebroen, som er opbygget med SMD 1206, 100 Ohm’s modstande, 1 %.

DUT (Device Under Test) er tilslutningen til et antennestik. Efter udbalancering i Wheatstonebroen, føres misvisningen, som er resultatet af en ubalance i broen, (også kaldet REWERSE-signalet, RETURNLOSS eller S11 - ja, kært barn har mange navne), fra broen ind til AD8307, som man skulle tro, netop er designet til at udføre denne opgave, idet den afleverer en DC-spænding af det målte REWERSE-signal, proportionalt i dBm, på sin pin 4.

 

Printudlægget ser således ud:

83,5 x 42 m.m.

 

Størrelsen er tilpasset til den indbygningskasse, jeg har til rådighed således, at en N-connector, HUN’s centerben passer til centrum af printet.

 

Et bedre billede her viser komponentplaceringen, og den runde ”via” på næste billede, i nederste venstre fjerdedel, er loddepunktet for N-connecterens centerben, som placeres i centrum af printet.

 

Alle de firkantede grønne punkter er ”husmands-gennemføringer”.
(Husk, at dette billede bliver spejlvendt.)

 

 

Et foto af BRO’en med AD8307 monteret på den modsatte side af printet ses herunder. Et COAX-kabel fører signalet fra DDS-60 ind til Wheatstonebroen.

 

 

Opbygningen her bærer tydeligt præg af, at tingene skal være godt stellet omkring Wheatstonebroen og AD8307, hvis man skal gøre sig forhåbninger om, at kunne måle rimeligt nøjagtigt, og der er her lavet en hel række husmands-gennemføringer, bestående af tråde, som er loddet på begge sider af printet.

 

For at have en god forbindelse til N-connectoren, er der monteret en loddeflig i hvert hjørne af chassis-stikket, som så er brugt til at danne forbindelse til STEL på printet.

 

Man kunne være gået så langt, at man, i stedet for DIL-versionen af AD8307, havde brugt en overflademonteret version, og så kunne printet have været skruet fladt fast med skruerne til stikket.

 

 

Direct Digital Signal Generator, DDS-60

DDS-60 generatoren er designet til, at kunne bruges i en DDS-VFO, og afgiver et signal omkring 0 dBm eller 1 mW i frekvensområdet fra 0 til 60 MHz.

 

Dog falder den lidt af i den højeste ende, her målt til ca. 3,5 dB, hvilket sikkert skyldes det indbyggede lavpass-filter, som netop afskærer fra 60 MHz og videre op.

 

Ved målinger på den, kan jeg konstatere, at den rigeligt går op til mere end 100 MHz, men kun signaler under 60 MHz er anvendeligt pga. spurius, og over 60 MHz falder output adskillige dB og er absolut ikke spuriusfrit. Derfor er denne konstruktion begrænset til at dække netop det valgte område, som jo er godt og vel kortbølge- og den nederste del af VHF-området.

 

 

Lavpass-filteret er placeret øverst, midt i første billede.

 

En lille trimmer i øverste højre hjørne på det første billede regulerer output, og DDS-60 kan skrues op til MAX. og aflevere mere end 1 mW.

 

 

ROTARY Encoder
Kontrolleren styrer frekvensen til DDS-60 med en KLIK-Rotary Encoder med 24 step, dog er det bedst, hvis du kan finde en encoder, der er uden KLIKstep, fordi en KLIKstep endcoder som regel afgiver flere pulser for hver KLIK.

 

I litteraturen omkring Rotary Encodere står der alle steder, at de arbejder bedst, hvis de er ”interrupt”-styret. Derfor bruger jeg i softwaren et bibliotek, encoder.h, som kan downloades fra Arduino Playground.

 

Søg på Rotary Encoder eller følg LINKet under Reference. Ved brug af dette bibliotek er det et minimum af kode, man selv skal skrive, da alt er skrevet i dette bibliotek, og det virker meget stabilt.

 

Disse 3 linjer er alt, hvad der skal bruges af definitioner:

 

#include <Encoder.h>         // brug biblioteket
Encoder myEncoder(2, 3);     // Encoder uses pin 2 and 3 with Interrupt
long oldPosition = -999;     // OLD encoder-position

 

Den midterste linje, Encoder myEncoder(2, 3); henviser til, at Rotary Encoder skal tilsluttes ARDUINO UNO pin 2 og 3 for optimale arbejdsbetingelser. Disse er de eneste pinde, ARDUINO UNO reagerer på, hvis der kommer Interrupts (afbrydelse) i programmet.

 

Med ”interrupt” menes altså, at selvom processoren er i gang med at lave noget andet, vil hændelsen ”drej på Rotary Encoder”, stoppe processoren med igangværende arbejde, og den vil omgående servicere Rotary Encoder. Når den er færdig med det, vil den springe tilbage og fortsætte med det arbejde, den var i gang med.

 

Og dette skal der til for at læse Rotary Encoder:

 

// **********************************************************
// Read encoder
// **********************************************************
void ReadEncoder()
{                                      // Read Rotary-Encoder
  long newPosition = myEncoder.read();

  if (newPosition != oldPosition )
    _event = ENCODER_TURN_EVENT;         // SET hændelsesflag
    {

      oldPosition = newPosition; //gem ny pos. til næste gang
      _eventParam = newPosition;//besked til andre programmer
    }
  myEncoder.write(0);             // nulstil Encoder-tælleren
}                                           // færdig arbejde

// **********************************************************

Selve interrupt-routinen er altså IKKE en del af mit program, men styres ene og alene af biblioteks-programmet.

 

Et andet program tager sig af resten så som, at opdatere DDS-60 og display. Med dette i hukommelsen kan vi kigge på kontrollerdiagrammet.

 

 

Kontrollerprint kan erstatte en ARDUINO UNO

Kontrolleren kan erstattes af en ARDUINO UNO, men jeg fortrækker at lave et print selv.

< 8-KontrollerDiagram.png> dobbelt-klik på billedet for fuld størrelse...

image008.png (109263 byte)

Øverst til venstre på diagrammet ses en AD1403N IC REF 2.5V 8-Pin DIP, som er en præcisions regulator (Zener-diode) i et DIL-8 hus. Den er så stabil, at jeg ikke har kunnet konstatere ændring i spændingen fra den, som er på 2,5 Volt, ved tilført spænding mellem 6 og 30 Volt – den kan tage op til 40 volt input.

 

De 2,5 Volt tilføres AREF på ARDUINO UNO eller ATmega328P, som reference til A/D-converteren, altså den spænding, som Atmega328P kan opdele i 1024 punkter.

 

Dermed bliver opløsningen dobbelt så stor, som hvis vi brugte STANDARD Reference, som er 5 Volt’s forsyningsspændingen på ARDUINO UNO.

 

Stabiliteten her er vigtig, da en spændingsændring på AREF vil ændre resultatet fra LOG-forstærkeren AD8307. Jeg var heldig, den lokale EDR-afdeling har et velforsynet lager af alverdens ting, og der var også en AD1403N.

 

For yderligere at sikre spændingsstabilitet i SWR Måleren, er der tilføjet et par modstande, R2 og R3 til diagrammet, hvor imellem vi måler batterispændingen på det tilsluttede genopladelige batteri på 7,2 Volt med ARDINU UNO eller ATmega328P.

 

Hvis spændingen bliver for lav til, at målingerne kan blive nøjagtige, vil displayet vise en advarsel, og en lille højtaler giver BEEP-lyde fra sig.

ATmega328P’s RESET-ben benyttes ikke, og AD8307 tilsluttes Arduino’s port A0 eller ATmega328P’s ben 23.

En lille højOhm’s højttaler kan monteres på Arduino port A4 eller ATmega328P’s pin 27. Den indgår i advarselssystemet, men indikerer desuden, når der trykkes på knapperne.

 

Hvis du kun har en almindelig 8 Ohm’s højttaler, så husk at montere en modstand på mindst 100 Ohm i serie med højttaleren for at beskytte Arduino/ Atmega328P’s port A4 mod overbelastning.

 

Endvidere ses det, at ARDUINO UNO’s pin 2 og 3, Interrupt-pindene, er ført ud fra pin 4 og 5 på processoren, PD2(Int0) og PD3(Int1) til Rotary Encoder 1 og 2.

 

DDS-60 er forbundet med DATA, CLOCK og LOAD til A1, A2 og A3 på pin 24, 25 og 26. Se i øvrigt diagrammet for DDS-60 på hjemmesiden for Midnight Design Solution. Følg referencen sidst i artiklen.

 

I højre side af diagrammet, under DDS-60-tilslutningerne, ses den 6-polede forbindelse til en FTDI FT232, USB til Seriel Interface, som jeg benytter til programmering af processoren direkte i konstruktionen. Altså ikke noget med at tage processoren ud af ARDUINO UNO for at sætte den i din nye kontroller eller tage den ud af kontrolleren for at omprogrammere den i ARDUINO UNO.

 

FTDI FT232 er en BILLIG løsning, indkøbt i Kina, og behøver ikke indbygges i konstruktionen, men kan genbruges igen og igen. Den udgør, sammen med en ATmega328p, en meget fin erstatning af ARDUINO UNO.

 

LCD-Display er med 2 linjer á 16 karakterer af standardtypen og er uden særlige bemærkninger. Undlad at tilslutte spænding til baggrundsbelysning, da dette er ret ”dyrt” rent energimæssigt, og hvis du føder Antenne Måleren med batterier, bliver de flade ret hurtigt.

 

På diagrammet er spændingen benævnt med + 7,2 Volt, men kan også være op til + 9 Volt, men sørg for at have reservebatterier ved hånden. Selv har jeg investeret i en lille 7,2 Volt akkumulator, der kan genoplades i løbet af kort tid, og som fint holder strøm på konstruktionen i 3-4 timer.

 

 

Kontrollerprintet
Kontrollerprintet er udformet således, at det passer med hullerne på displayet, så de kan monteres som lagkage. Den 16-polede terminal i toppen af printet kan forbindes med male/female-headers direkte bag på displayet, hvis headeren monteres på kobbersiden af printet.

 

I højre side nederst ses klemrækken til FTDI FT232, USB til Seriel Interface, og i venstre side i billedet ses den 8-polede række af terminaler til DDS-60, med ben 1 nederst på begge rækker.

 

I klemrækken iloddes 6/8-polede female-headere, så DDS-60 og FTDI FT232 kan stikkes i med deres male-headere. Den 8-polede female-header til DDS-60 kan med fordel være med bukkede ben i 90 grader, så DDS-60 kan lægges ned til kontrollerprintet.

Printet er monteret med nogle få SMD 1206 komponenter på printsiden, som er min favorit. Monter disse med en pincet og godt med flusmiddel, så er det ikke så svært, især ikke, hvis man har en lup-lampe til rådighed.

 

 

 

Nederst til venstre for midten, skråt op fra Rotary Encoder-terminalerne R1 og R2, kan modstandene R2 = 1,2 K (monteres til GND), og R3 = 4,7 K monteres. Disse udgør en spændingsdeler, som kan måle den til enhver tid tilbageværende spænding på batteriet. Det er formet således, fordi A/D-porten pin A5 ikke kan tåle overspænding over + 5 Volt, og med disse modstandsværdier skulle vi være sikret op til 25 volts input.

 

 

Service-print

For at få plads til det hele i kassen måtte jeg lave endnu et print til at bære knapper, spændingsregulator og Rotary Encoder.

 

 

Det print kom til at se sådan ud:

 

 

Filmen kan laves sådan her, men også på mange andre måder, størrelse: 86 x 47 m.m. Eller lav dit eget design.

 

Hvis du lader batteriet med en såkaldt VÆG-ADAPTOR, en lille transformator med en ensretterdiode, kunne det måske være en god idé, at lægge en formodstand med afkobling foran dioden, der sidder i tilførselsledningen til udvendig strømforsyning.

 

Selv bruger jeg en laboratoriestrømforsyning med strømbegrænsning, til genopladning af mit Lithium-ION-batteri på 7,2 Volt, 1350 mAh, og kan oplade det på et par timer til fuld spænding.

 

 

Resultat af anstrengelserne:

 

 

I toppen af kassen ses N-connectoren, hvortil en DUT, ”Device Under Test” kan tilsluttes.

 

DUT kan have mange udformninger, først og fremmest antenner, men der kan også måles på filtre og meget andet. Mere om det måske i en kommende artikel.

 

Display vil vise frekvensen i MHz med alle cifrene i øverste linje. Linje 2 viser ”R=”, som Returnloss, S11 for de teknisk mindede samt SWR som 1:x,xx, hvor ”<10”, betyder, at SWR er uendelig høj, når der ikke er nogen DUT, men også fordi, vi ikke har nogen praktisk anvendelse af SWR over 1:10.
 

Rotary Encoderen skifter frekvensen op eller ned, og for ikke at man skal få krampe i hånden af at dreje, kan man skifte multiplyer på displayet ved at trykke på knap 3. DEFAULT står multiplyeren på 100 kHz ved opstart. Derfra starter den med at skifte ned hver gang, der trykkes på Knap 3. Der vises kortvarigt den nye indstilling, som er 10 kHz, og sådan bliver det ved ned til 1 Hz, og på den måde løber den i ring fra høj multiplyer til lav muliplyer, og fra laveste skiftes der igen til den højeste, som er 1000 KHz..

 

 

Når frekvensen i displayet runder 60 MHz, som er TOP-frekvens, skiftes over til 500.000 Hz og fortsætter derefter den ene eller den anden vej afhængig af, hvad vej der drejes på Rotary Encoder.

 

På denne måde er det ret nemt at indstille til en ny frekvens, og man kan hurtigt dreje over et frekvensbånd og se SWR eller finde resonanspunktet for en tilsluttet antenne ved aflæsning af minimum Returnloss, som jo er negativ.

 

Nederst i billedet af den færdige SWR Måler ses tilslutningen til en udvendig væg-adaptor, der kan genoplade et indbygget Lithium-ION-batteri.

 

 

Kalibrering

DDS-60 (Direct Digital Signal generator) leverer ubelastet mere end 1 mW. Når der monteres en DUT eller en LOADprobe, ændres belastningen på generatoren en ganske lille smule. Dette følger i værste fald, dvs. kortsluttet DUT-terminal, denne kurve:

 

 

Sammenlign med belastningen med en 50 Ohm’s LOAD, som ser således ud:

 

 

Horisontalt viser kurverne frekvensen og vertikalt, ses de BIT, som AD8307 afleverer til ARDUINO eller ATmega328P.

 

Man må jo nok sige, at det ser absolut ikke slemt ud. Dog er der en forskel, målt til et fald fra 500 KHz og frem til 60 MHz på ca. 3,5 dBm, og denne forskel er det nødvendigt at slippe af med.
Dette gjorde jeg på den hårde måde og et EXCEL-regneark.

 

Senere er det dog lykkedes, at lade ARDUINO UNO eller ATmega328P selv generere en kalibreringstabel og lægge den i EEPROM-området i CPU’en.

 

 

Kalibrering fortages UDEN tilslutning af DUT.

Ved tryk på én af knapperne under opstart (tænd), starter en ny reference-kalibrering, men det er generelt kun nødvendigt, første gang SWR Måleren startes. Det kan dog måske være nødvendigt at foretage en ny kalibrering ved alt for store temperatursvingninger.

 

Det tager lidt tid, ca. 35 sekunder, men man kan følge udviklingen på displayet. Jaah.. Atmega328P er ikke den skarpeste kniv i skuffen, selv om den faktisk gør et godt stykke arbejde her.

Tabellen bliver testet for frekvensområdet: 500.000 – 60.000.000 Hz, med 200 kHz spring. Der noteres ikke efterfølgende dubletter, dvs. når linjen er flad (på billedet herover), bliver kalibreringspunkterne ens, så derfor noterer vi kun den første og fra/til det område, der er ens, men det er da alligevel blevet til over 100 kalibrerings-punkter, som bliver noteret i tabellen, der gemmes i EEPROM.

 

Disse kalibreringsdata bliver løbende indregnet i de formler, der bruges til beregning af Returnloss i dBm og SWR-beregningerne.

 

 

SWEEP over et frekvensområde

Jeg har programmeret en sweep-funktion, som søger efter bedste Returnloss inden for 10 MHz, med udgangspunkt i den frekvens, der står i display.

 

Ved tryk på KNAP-1, sweepes fra den frekvens, der står i displayet og 10 MHz frem, i 50 KHz spring. Hvis man når til enden, 60 MHz, før de 10 MHz ellers skulle slutte, bliver 60 MHz slutfrekvens.

 

Sweep udføres i 2 omgange og tager ca. 45 sekunder i værste fald.

1. omgang grov-sweepes med spring af 50 KHz. Ved bedste Returnloss noteres frekvensen, og der rulles 100 KHz tilbage.

 

I 2. sweep er springet 1 KHz, og der sweepes over 200 KHz. Efter endt sweep vises resonansfrekvensen for bedste Returnloss i displayet sammen med SWR.

 

 

Nøjagtigheden

Der er opnået en ret stor nøjagtighed på de foreløbige resultater af testmålingerne.

 

Fra 500 kHz til ca. 53 MHz konstaterer jeg, at den er bedre end SWR 1:1,05. Over denne og indtil 60 MHz, er den ca. 1:1,1 i fejlvisning med en TEST-LOAD på 25 Ohm, svarende til SWR til 1:2,0.
25 Ohm eller 100 Ohm bør begge resultere i -9,54 dBm Returnloss.

 

Denne fejlvisning er absolut til at leve med og har ingen indflydelse på følsomheden på instrumentet. Med en simpel hjemmelavet 50 Ohm’s LOAD opnår man nemt mere end -50 dBm’s Returnloss.

Ved blot at holde en 47 Ohm, 5 % modstand på DUT, aflæses -27,6 i Returnloss med et SWR på 1:1,09, måske med lidt flimmer på sidste decimal, som skyldes afrunding af decimaler tæt på måleresultatet (målemæssigt uden betydning).

 

Nøjagtigheden kan der ikke klages over, og alt i alt er resultatet overvejende tilfredsstillende for os radioamatører.

 

 

Hvad kan man så måle
Den primære måleopgave er jo kortbølge antenner. Det er et handy måleinstrument at have med på Field-day til check af, at antenner er i orden.

 

Men nu kan dette fixe instrument altså også bruges til andre ting. Den er jo i princippet født til at være en 50 Ohm’s generator med MAX 1 mW’s output, og i samarbejdet med et tidligere beskrevet instrument til måling af dBm-Watt, er grundlaget for en måling på filtre, lavpass eller højpass, med 50 ohm’s input/output, liggende lige til højrebenet.

 

Med disse 2 instrumenter til rådighed, er det en forholdsvis nem sag at udarbejde en GRAF eller filterkurve på et stykke ternet papir, hvis man nu ellers er af den type, der ikke er i besiddelse af en dyr HP-sweeper eller spektrumanalysator.

 

Antennearbejdet

Tit og ofte, når man arbejder med antenner, bliver man i tvivl om det, man står og laver, egentlig er rigtigt, og passer det nu, det man måler?

 

Dertil er det en god ting at have nogle LOAD’s, eller kunstantenner, der er rent Ohm’ske, og som har nogle værdier til sammenligning af det, man måler.

 

Ikke fordi SWR-måleren her nok skal vise det rigtige resultat, hvis den er lavet rigtigt, men for at komme tvivlen i ens eget sind til gode.

 

Derfor har jeg en række forskellige LOAD’s, nogle af dem kommercielle, andre er hjemmelavet, og det er en ret nem procedure at lave sådan nogle.

 

Et BNC-stik HAN skæres/slibes flangen væk, og centerpinden forlænges en smule med en passende tråd. Jeg brugte en pin fra et 25-polet CANON-stik, HAN, som passede lige ned i den spidse inderleder til BNC-stikket.
BNC er rigelig godt til denne øvelse.

 

Derefter blev den afkortet og slebet til med Drimmel-sliberen, og på toppen monterede jeg et par 1206 modstande, 51 Ohm, og så havde jeg en fin 25 Ohm’s LOAD til bestemmelse af SWR 1:2.0.

 

På billedet herunder ses i baggrunden et ubearbejdet stik med det bearbejdede stik i forgrunden, med en spids inderleder liggende ved siden af en pin fra et CANON-stik.

 

 

De kan fremstilles i en hvilken Ohm’sk værdi, man måtte ønske sig, og er gode til at checke, om man har lave sin SWR-måler rigtigt, fx ved at sammenligne 25 Ohm’s SWR med en 100 Ohm’s SWR – de skal være ens, 1:2.0, med Returnloss på -9,54 dBm.

 

 

Hvis man ikke vil montere SMD-modstande, kan almindelige kvartWatt’s modstande monteres på inderlederen, og studsen påloddes den anden ende af modstanden.

 

KvartWatt’s modstande kan, med megen forsigtighed, justeres rent Ohm’sk.

 

Fasthold modstanden i en passende holder, hvor du kan måle dens Ohm’ske modstand med et præcisions Ohm-meter med mindst 2 decimaler.

 

Med en slibespids på din Drimmel/gravør-sliber, slibes ganske forsigtig midt på modstanden, så kan en 27 Ohm’s modstand relativt nemt, og med lidt øvelse, ændres til en 25 Ohm’s modstand.

 

Det kan godt være, at man skal øve sig lidt, men jeg lavede en 24,99 Ohm’s modstand af en 27 Ohm, 10 % i første forsøg.

God fornøjelse…

 

Referencer:

Analog Device: Databladet for AD8307,
http://www.analog.com/media/en/technical-documentation/data-sheets/AD8307.pdf

Vejen til sendetilladelsen, 7. udgave, side 87, 13.9.2 Bromålinger

Midtnight Design Solution: http://midnightdesignsolutions.com/dds60/

Midtnight Design Solution: Calibration til brug i radioshack

Rotary Encoder: http://playground.arduino.cc/Main/RotaryEncoders

Min hjemmeside LINK: http://www.planker.dk/Projects/Arduino/MyProject.htm

ARDUINO SKETCH: SWR_Analyzer_V1.0.1.ino  (text-file)