Category Archives: Electronics

Modifiering av 2-m-saxen ROX-2X

Den här artikeln publicerades först i QTC nr 5 2023.

Via SM0GNS Peder fick jag tag på en ganska komplett byggsats för kretskortet till en ROX-2X radiopejlmottagare [1] för 2-m-bandet. Antagligen hade Peder tröttnat på att jag lånat färdigbyggda mottagare av honom och tyckte det var dags att jag skaffade en egen, vilket jag inte var sen att nappa på.

Efter att jag lött ihop mottagaren och verifierat att den fungerade så började jag fundera på om den skulle gå att förbättra på något sätt. Främst var jag intresserad av att få till en digitalt styrd lokaloscillator för att eliminera risken att man har fel frekvens inställd, till exempel till följd av att man oavsiktligt kommer åt frekvensratten under en tävling, men jag hittade även ett par andra saker som kunde åtgärdas och några extra finesser att lägga till. Dessutom hittade jag på en egen antennkonstruktion som verkar fungera bra.

Den här artikeln beskriver hur mottagaren fungerar och vad jag gjorde för förändringar i den. Jag har inte haft tillgång till någon bygg-, komponent- eller funktionsbeskrivning utöver vad som finns på [1], så det jag skriver är mestadels baserat på schemat och egna tester.

Figur 1 visar schemat för ROX-2X med rutor som markerar vilka delar jag kommer att ändra.

Figur 1. Kopplingsschemat för ROX-2X.

Jag har ritat om schemat för att göra det aningen mer lättläst och för att enkelt kunna rita in ändringar (och för att jag inte bett om tillåtelse att återpublicera originalschemat). En liten detalj som jag fixat redan här är att den gröna lysdioden D5 som visar att spänningen är påslagen var felvänd i originalschemat.

RF-delarna sköts av en SA636 som är en krets främst tänkt för FM-mottagning i exempelvis DECT-telefoner. Tyvärr har den slutat tillverkas och är nog svår att få tag på, så inget att basera framtida konstruktioner på, men ett antal exemplar av ROX-2X lär finnas därute och många av idéerna här är mer allmänt tillämpliga, så förhoppningsvis är den här artikeln ändå av intresse.

Radiopejling på 2-m-bandet sker med sändare som skickar ut morsekod genom att AM-modulera en bärvåg. Så hur kan en krets för FM-mottagning fungera i detta sammanhang? Tricket är att man inte alls använder de vanliga utsignalerna, utan bara lyssnar på RSSI- utgången (Received Signal Strength Indicator). SA636 har nämligen en snabb RSSI som duger som AM-demodulator i denna tillämpning. En annan kreativ lösning i konstruktionen är att förstärkningen delvis ställs in genom att tappa av bias-ström på RF-ingångarna. Att detta fungerar kan man möjligen ana sig till av databladet som visar ett förenklat schema av ingångssteget, men möjligheten verkar inte alls nämnas där. Kanske är det något konstruktören experimenterat sig fram till.

Ingångsimpedansen är ganska hög, 700 Ω parallellt med 3.5 pF single-ended, dvs 1400 Ω parallellt med 1.75 pF differentiellt, så anpassningen mot Yagi-antennens impedans i trakterna av 40 ohm mår bra av en ganska rejäl upptransformering av impedansen med en faktor 9 (1:3 varvtalsförhållande) via transformatorn L2. Med trimkondensatorn C3 kan man avstämma anpassningen. Mer om det senare.

Mellanfrekvensen är på klassiska 10,7 MHz och två keramiska filter för denna frekvens vaskar fram den önskade signalen. Antennen och dess matchningskomponenter får duga som preselektorfilter före mixern för att undertrycka det oönskade sidbandet.

Lokaloscillatorn är LC-baserad och avstäms med en kapacitansdiod (D2) som biaseras av en potentiometer (RV1.2). Spolen (L3.1) har en kärna man måste trimma för att hamna i rätt frekvensområde.

RSSI-signalen innehåller dels den önskade AM-demodulerade audiosignalen (om än logaritmiskt demodulerad, men låg distorsion är inte en prioritet här) och dels en DC-nivå som indikerar signalstyrka även den tid då modulering saknas. Sändare kan antingen slå av bärvågen mellan morsepipen eller låta bärvågen ligga kvar omodulerad. I det senare fallet finns det en radiosignal att pejla mot hela tiden under ett sändningspass, alltså även när den AM-demodulerade signalen inte innehåller något hörbart, och det drar den här mottagaren nytta av som vi ska se.

RSSI-signalen förgrenas dels till en förstärkare, U4, som driver hörlurarna med den demodulerade signalen, dels via ett lågpassfilter, R8-C16, till en spänningsstyrd oscillator, U2, och dels till transistorn Q1 som ska tända lysdioden LED1 vid stark signal.

U4 har en volymkontrollingång, ben 4, som påverkas av samma volymkontroll, RV2.2, som justerar biasen på RF-ingångarna enligt tidigare beskrivning. Jag är osäker på hur mycket av känsligheten som bestäms av den justerbara biaseringen av RF-ingången respektive av U4. U4 har enligt databladet ett förstärkningsområde mellan ungefär -70 och +20 dB, men toleransen på vilken förstärkning man får för en viss styrspänning är hög, så olika exemplar av kretsen kan ha rejält olika förstärkning vid en och samma spänning. Men det är inte något större problem i den här tillämpningen.

Jag upplevde att den maximala ljudstyrkan var onödigt hög, så för att minska den kopplade jag om lite så att styrspänningen tas från en punkt som ligger ett diodfall lägre än normalt. Det krävde en kapad kopparbana vid ben 4 på U4 samt en kort bygel från C22 till ben 3 på D4. En alternativ och enklare lösning hade varit att öka värdet på R20 som ligger i serie med hörlurarna.

Ytterligare en åtgärd för att minska maximal ljudstyrka, och samtidigt göra en större del av volymrattens område användbart, var att sätta 22 k parallellt med volympotten RV2.2.

En viktig finess i mottagaren är den RSSI-styrda VCO:n U2 som används som en ”audio S-meter”. När RSSI-signalen blir tillräckligt hög börjar U2 oscillera, först med ett lågfrekvent tickande och sedan med allt högre frekvens i takt med att radiosignalen blir starkare (eller biaseringen av RF-ingången ökas). Även denna VCO-signal är kopplad till hörlurarna och den gör att det blir lättare att med hörseln avgöra små skillnader i signalstyrka eftersom de representeras med skillnader i frekvens istället för med skillnader i amplitud. Det här är väldigt användbart eftersom antenndiagrammet är ganska trubbigt, så det blir viktigt att särskilja små variationer i signalstyrka för att avgöra i vilken riktning som signalen är starkast när man sveper med antennen under pejlingen. Och som nämnts tidigare så hörs denna ton även mellan morsepipen när den vanliga audiosignalen är tyst (såvida det inte är en sändare som stänger av bärvågen mellan pipen).

Nivån på den RSSI-signal som styr U2 bestäms dels av radiosignalens styrka och dels av vilken förstärkning man ställt in på RF-ingången, men inte av den ytterligare förstärkningen i U4. Det är bara under ca halva området för volymratten som RF-förstärkningen påverkas, så när man vridit upp volymen till mer än ca hälften av max så blir inte RSSI-signalen som styr U2 högre. Vid svaga radiosignaler räcker nivån inte till att få igång U2, oavsett volyminställning, så när man är långt från sändaren får man förlita sig på den vanliga ljudstyrkan när man pejlar.

Den tredje grenen av RSSI-signalen går som sagt till Q1 och LED1. Tanken är att lysdioden ska tändas när RSSI-signalen blir stark nog, men detta fungerade inte alls. För att LED1 ska börja tändas måste nämligen RSSI bli högre än Vbe för Q1 (0,6 V) plus spänningsfallet över LED1 (ca 2 V), men den nivån uppnåddes aldrig. Antagligen fungerade det i en tidigare version av konstruktionen när R6 (som bestämmer förstärkningen hos RSSI-förstärkaren i U1) var 33k istället för 22k, men alltså inte med R6 = 22k. Med lite kreativ omkoppling så att LED1 hamnar i kollektorkretsen för Q1 istället för vid emittern, samt tillägget av ett spänningsdelande motstånd på basen så återställdes funktionen. De schemamässiga ändringarna framgår av figur 2 medan de fysiska ändringarna är utpekade i figur 3 med numrerade pilar som pekar ut följande detaljer:

  1. R100, 150 kohm från högra änden av R9 (basen på Q1) till jord.
  2. Kollektorn, ben 3, på Q1 svävar i luften. Till kollektorn är en sladd som leder till katoden på LED1 kopplad. Tunn emaljerad koppartråd användes för att inte riskera att bryta sönder Q1 när sladden rör sig.
  3. En tråd som kopplar emittern på Q1 till jord.
  4. R10 (330 ohm) har flyttats från sin ordinarie plats till mellan 5V och anoden på LED1.
  5. Sladden till anoden på LED1.

Figur 2. Modifierat kopplingsschema för ROX-2X.

Figur 3. Modifieringar för att få LED1 att fungera som avsett.

Det är tänkt att man inte ska behöva någon strömbrytare till mottagaren. Detta åstadkoms genom att gaten på PMOS-transistorn Q2 dras upp till 9 V av R18 när ingen hörlur är inkopplad. Q2 slår då av och resten av konstruktionen blir utan matning. När en hörlur är inkopplad dras gaten låg och Q2 börjar leda. Regulatorn U3 skapar en stabil 5-V-matning och lysdioden D5 indikerar att strömmen är på och att batterispänningen är högre än dryga 7 V (5 V plus spänningsfallet på ca 2 V över D5 plus lite spänning till strömbegränsaren R14). Genom att D5 sitter parallellt med spänningsregulatorn får man dels en sorts lågt-batteri-varning och dels slipper man slösa extra ström till denna diod eftersom all ström som flyter genom den också går vidare och gör nytta i resten av elektroniken. Hade dioden inte suttit där hade dess energiförbrukning istället omvandlats till värme i U3.

Tyvärr ville inte den hörlursstyrda strömbrytarfunktionen fungera. Efter lite felsökande upptäckte jag att C25, som är ritad som en polariserad kondensator i schemat, inte alls får vara polariserad. Jag hade satt dit en tantal, men i fallet att ingen hörlur är inkopplad kommer R18+R19+D6+R20 att lägga på en spänning med fel polaritet på denna, med läckström som resultat. Läckströmmen gör att gaten på Q2 inte blir hög nog för att Q2 ska slås av, så strömbrytningsfunktionen fungerade inte.

Lösningen är enkel, nämligen att ersätta C25 med en opolariserad keramisk kondensator. Om man tittar på foton på kretskortet på [1] så ser man att där sitter en keram och inte en tantal, så det är bara schemat som är lite vilseledande. Jag blev i alla fall fintad och hann konstruera in en fysisk strömbrytare som fortfarande finns kvar i mitt bygge.

Den stora förändringen jag ville göra var dock som sagt att införa en digitalt styrd lokaloscillator. Vidare ville jag hålla detta projekt någorlunda enkelt (betydligt mycket mindre ambitiöst än 80-m-mottagaren jag beskrev i en tidigare artikel [2]). Specifikt ville jag undvika att behöva konstruera (och vänta på tillverkningen av) nya mönsterkort och helst också klara mig med att använda komponenter som jag redan hade hemma. Dessa mål uppnåddes mestadels, men tidsmässigt drog det ändå ut på tiden och blev (som vanligt?) mer omfattande än jag hade tänkt mig. Inte minst mjukvaran tog tid att utveckla och har man väl en processor så är det lätt hänt att man kommer på att man kan lägga till den ena finessen efter den andra utan att behöva så värst mycket mer hårdvara.

Som digitalt styrd LO valde jag samma flexibla PLL-krets som jag använde i [2], nämligen Si5351A. Den styrs via ett I2C-interface och kan skapa tre olika fyrkantsvågor med valbar frekvens mellan ca 2,3 kHz och 200 MHz utgående från frekvensen hos en kristall. Fyrkantsvågen måste såklart filtreras för att bli en godtagbar sinus, vilket är vad som behövs för LO-ingången på SA636. Si5351A går att köpa monterad på ett litet kort tillsammans med en spänningsregulator [3] vilket gör det lätt att använda kretsen utan att göra ett eget mönsterkort.

För att skicka kommandon till Si5351A valde jag denna gång en för mig ny bekantskap, nämligen det prisvärda (runt femtilappen) och tillgängliga mikrokontrollerkortet Raspberry Pi Pico. Det innehåller en dubbelkärning ARM Cortex M0+ processor som officiellt går att klocka i upp till 133 MHz, vilket är långt mycket mer prestanda än vad som behövs här. Om man installerar rätt tillägg i senaste versionen av Arduino-miljön [4] går det bra att programmera kortet från denna för mig hemtama miljö. För att spara ström valde jag att ställa ned klockfrekvensen till 50 MHz (lägsta frekvens som är lätt inställbar i Arduinomiljön), men betydligt lägre klockfrekvenser hade också med råge gett tillräckliga prestanda.

För att det ska vara möjligt att se vad man ställt in mottagaren på för frekvens ville jag också ha någon sorts display. Jag grävde i skrotlådan och hittade en gammal 2×16 tecken alfanumerisk LCD med den vanliga HD44780 som drivkrets. Det finns färdigt stöd [5] för att prata med sådana displayer, så man behöver inte utveckla några egna lågnivårutiner.

För att styra det hela använde jag en digital ratt (encoder) och fyra membranknappar, ungefär som i [2]. Mjukvaran jag skrivit går att ladda ner från GtiHub [6]. Ett schema för kopplingarna utanför det ursprungliga kretskortet finns i figur 4.

Figur 4. Schema för kopplingarna utanför ROX-2X-kortet.

Jag byggde det hela i huvudsak på ett kopparlaminat som fick fungera både som jordplan och mekanisk support. De flesta svarta ledningarna i figur 4 utgörs därför av enbart en kort ledning ner till jordplanet. För att bygga lågpassfiltret använde jag ett litet mönsterkort ämnat för sådana filterbyggen som jag hade liggande sedan tidigare projekt.

Ett foto på hur det hela ser ut i praktiken finns i figur 5. Många av ledningarna är dragna med tunna emaljerade koppartrådar. De tar liten plats, väger inte mycket, är lätta att avisolera (genom att sticka in dem i en droppe lödtenn på spetsen av en lödpenna) och lätta att få att ligga ungefär där man vill. En nackdel är att man inte får någon färgkodning, så det kan vara svårare att reda ut vilken tråd som har vilken funktion. Ledningarna till ROX-2X-kortet drog jag dock med vanliga plastisolerade kopplingstrådar. Ofta partvinnade med en referenssignal (vanligtvis jord) för att inte få en massa onödiga jordslingor som möjligen skulle kunna skicka ut eller plocka upp störningar. LO-signalen drog jag i en tunn flexibel koax (ännu inte inkopplad i figur 5).

Figur 5. Display, filter, klockgenerator, processorkort mm, monterade på ett kopparlaminat i en 3D-utskriven låda.

Modifieringen av huvudkortet för att kunna koppla in den nya lokaloscillatorn beskrivs i figur 6. De olika pilarna anger följande:

  1. Anslutningspunkt för koaxialkabelns skärm.
  2. 2 st 100-ohmsmotstånd parallellt för att terminera koaxen i 50 ohm. Mittledaren på koaxen löds in på heta sidan av detta motstånd (ungefär där pil 3 pekar).
  3. Kapad ledning mot L3.
  4. C4 är bortplockad.
  5. C7 är bortplockad.
  6. C5 är bortplockad.

Figur 6. Modifieringar för att kunna koppla in den nya lokaloscillatorn.

I kopplingsschemorna i figurerna 2 och 4 framgår några finesser utöver vad som nämnts tidigare. Såväl RSSI-signalen som spänningen från 9-V-batteriet är indragna på analoga ingångar på processorkortet så att man kan bevaka dem från mjukvaran och presentera informationen i displayen. Batterispänningen skalas ned med en spänningsdelare för att passa området som ingångarna klarar och skyddsdioder mot 3.3 V ser till att ytterligare skydda ingångarna. En schottkydiod behövs också för att mata processorkortet från 5-V-spänningen från ROX-2X-kortet så att den matningen inte blir ihopkopplad med 5 V från USB-kabeln i de fall då man har USB inkopplad för programmering eller utläsning av information.

En aningen onödig funktion är att de två annars oanvända utgångarna från Si5351-kortet är kopplade (via dämpning i det här schemat och ännu mer dämpning i det modifierade ROX-2X-schemat i figur 2) till RF-ingången. Syftet är att kunna injicera en RF-signal med valfri frekvens så att mottagaren själv kan mäta upp karakteristiken på IF-filtret genom att svepa frekvensen på denna testsignal. Utgångarna konfigureras under testet för att drivas i motfas så att en differentiell signal skapas. Idén till den här lösningen har jag lånat från QDX-transceivern från QRP-labs [7]. Mätvärdena från RSSI-signalen, omräknade till någon sorts dB med hjälp av information i SA636-databladet, skickas ut via USB-porten till en PC där vidare analys kan göras i exempelvis Excel. Vid mätningen är det lämpligt att inte ha antennen inkopplad. Figur 7 visar inkopplingen av testsignalerna på LO-kortet medan figur 8 visar hur det ser ut där de kommer in på huvudkortet. Testsignalerna skickas i partvinnade emaljerade koppartrådar, vilket är tunnare och enklare att jobba med än koaxialkabel och fullt tillräckligt i det här fallet.

Figur 7. LO-kortet, filterkortet och inkopplingen av testsignalerna vid CLK1 och CLK2.

Figur 8. Injicering av testsignalerna på undersidan av ROX-2X-kortet. De stora seriekopplade kondensatorerna på 220 pF vardera utgör C2 som inte fick plats på ovansidan eftersom jag ville sätta transformatorn där.

Figur 9 och 10 visar resultatet från svep av såväl det önskade passbandet som spegelbandet när mottagaren var inställd på 144.75 MHz. Nivån på dämpningen utanför passbanden är inte att lita på eftersom dynamiken och brusnivån i denna test är begränsande. Inte litar jag heller fullt ut på att 1 dB skillnad på Y-axeln verkligen motsvarar 1.0 dB i verkligheten, men man får ändå en god fingervisning om hur IF-filtret beter sig.

Figur 9. Responsen i det önskade passbandet. Y-axeln är graderad i någon sorts approximativ dB-enhet.

Figur 10. Responsen i spegelbandet. Y-axeln är graderad i någon sorts approximativ dB-enhet.

Notera att den lilla asymmetrin i filtret är spegelvänd mellan signalbandet och spegelbandet, precis som väntat. Bandbredden är runt 50 kHz, vilket är lite onödigt mycket för en AM-signal. En lägre bandbredd skulle ge mindre brus, men också större risk att man måste ställa om frekvensen för att få in sändare som inte ligger så exakt i frekvens. Kristallfilter skulle kunna ge lägre bandbredd, men skulle behöva lite anpassningar eftersom de normalt har betydligt högre impedans än de 330 ohm som SA636 är gjord för.

En funktion som inte kräver någon speciell hårdvara, utan bara mjukvara, är att svepa upp 2-m-bandet och leta efter störningar för att se om mottagaren stör sig själv. Det är ju alltid en risk att de digitala delarna skapar någon ton på en olycklig frekvens som dränker signalen från en svag sändare. Figur 11 visar resultatet av två sådana svep utan inkopplad antenn. Dels ett svep som gjordes i en någorlunda störningsfri miljö (ute i trädgården några meter från huset) och dels inomhus nära en del datorutrustning. Man kan se att brusmattan från datorutrustningen överröstar eventuella interna störningar, samt att det inte finns några kraftiga interna störningar på någon viss frekvens, vilket är positivt.

Figur 11. Uppmätt brus utan antenn. Den blå kurvan är från en relativt tyst omgivning (ute i trädgården) medan den orangea är uppmätt inomhus nära diverse datorutrustning. Y-axeln är i godtyckliga dB.

Lådan har inte någon skärmning, utöver att mycket av elektroniken och sladdarna ligger nära jordplan eller är partvinnade med jordade ledningar, så kanske skulle man kunna vinna något på mer skärmning. Å andra sidan är det antennen som är klart bäst på att plocka upp störningar och jag har inte hört någon sänkning av störnivån när jag håller inne processorns resetknapp. När man gör det fortsätter Si5351 att generera LO-signalen och de analoga delarna fortsätter fungera, men processorn upphör att köra kod och prata med displayen. Så det är en rimlig test av hur mycket självstörning som förekommer, även om man egentligen skulle behöva upprepa testet vid många frekvenser över hela bandet för att vara helt säker.

Elektroniken byggdes in i en 3D-utskriven låda med display och processorkort närmast framsidan och RF-kortet på nivån bakom. I en mellannivå på sidan om klämde jag in ett batterifack byggt av kopparlaminat. Eftersom jag var tvungen att rita upp lådan i ett CAD-program inför 3D-utskriften lade jag in även övriga detaljer där och fick på så vis bra ritningsunderlag även för hur kopparlaminaten skulle sågas till. Figur 12 visar hur det hela ser ut innan botten skruvas på. Notera att en SMA-kontakt (högst upp i bilden) används för att koppla in antennen.

Figur 12. ROX-2X-kortet sitter en nivå ovanför/bakom processor och display.

Framsidan av mottagaren visas i figur 13. Övre raden i displayen visar dels batterinivån och dels RSSI-nivån via en stapel. Genom att dynamiskt skapa specialtecken i displayen kan man få fram de tecken man för tillfället behöver för att visa en viss batterinivå eller fylla ett visst antal pixlar i den högsta rutan i stapeldiagrammet. På undre raden visas aktuell frekvens samt numret på vilken av ett antal förprogrammerade frekvenser som för tillfället är vald. Om man inte tryckt på någon knapp eller vridit på frekvensratten på 10 sekunder så slutar processorn bry sig om ratten och de flesta knapparna och man kan inte ändra något. För att låsa upp måste man trycka på ”1”. I upplåst läge kan man justera frekvens med ratten, stega mellan vilken av siffrorna i frekvensinställningen man ska justera med ”1” respektive ”2”, skifta till nästa förprogrammerade frekvens med ”3” eller gå in i ett menysystem med lite fler funktioner genom att hålla inne ”4” i minst en sekund. I menysystemet kan man bland annat förprogrammera upp till 9 olika frekvenser och starta frekvenssvepen som diskuterats ovan. Under en normal tävling behöver man förhoppningsvis varken justera frekvensen eller alls titta på displayen, så det är bara volymkontrollen och hörlurarna som kommer till användning. Möjligen kan man vilja byta till beaconfrekvensen genom att trycka på ”3” när man tagit sista räven.

Figur 13. Lådan med mottagaren.

Ett par nackdelar med att bygga ut ROX-2X på det här sättet är att vikten blir lite högre (totalt knappt 600 g inklusive antenn), samt att strömförbrukningen blir mycket högre. Jag har mätt upp strax under 50 mA och med tanke på att 9-V-batterier verkar ha en kapacitet på ca 300 mAh vid denna last så kan man med marginal köra en tävling och kanske till och med två eller möjligen tre innan det är dags att byta. Att byta till ett laddningsbart LiPo-batteri med mycket högre kapacitet och kanske lägre vikt borde inte vara alltför svårt eftersom alla kretsar förutom nuvarande displayen borde kunna fungera på 3 V. Förutom displaybyte skulle det kräva att man lägger till en laddarkrets samt möblerar om runt en del spänningsregulatorer och vid volymkontrollen. Att ha två LiPo-batterier i serie för att få högre spänning skulle kräva mindre anpassning av elektroniken, men att laddningen blir lite mer komplicerad.

En mottagare är inte mycket att ha såvida man inte har en passande antenn. Om man letar runt lite på nätet kan man hitta flera måttritningar på olika varianter av pejlantenner för 2-m-bandet. Den vanligaste är nog en enkel Yagi med en direktor och en reflektor utöver den ”drivna” dipolen. En annan populär variant är HB9CV som har fördelen att bara ha två element och vara betydligt kortare, men nackdelarna att vara lite mer komplicerad med sina gamma-matcher och inte simuleringsbar med något program jag har tillgång till. Jag valde Yagi-spåret och efter att ha hittat flera olika förslag på mått så upptäckte jag programmet ”YagiCAD” där man kan simulera och optimera olika Yagi-konstruktioner. Efter en del optimerande från olika ursprungsdesigner fastnade jag för måtten i figur 14.

Figur 14. Måttritning för antennen. Spröten består av 25 mm brett stålmåttband; bommen av 16 mm elrör.

Enligt YagiCAD ska den ha strålningsdiagrammen i figur 15 vid 144.75 MHz och ett fram/bak-förhållande på över 40 dB.

Figur 15. Simulerade strålningsdiagram för antennen.

Spröten är tillverkade av 25 mm brett stålmåttband (köpt på Biltema) och som bom använde jag ett 16 mm elrör. För att fästa elementen konstruerade jag passande klämmor och skrev ut i PETG på en 3D-skrivare. Lådan för mottagaren fästs också med klämmor på bommen. För att få ett bra grepp när man håller antennen högt gjorde jag även ett handtag som fästs på bommen. Se figur 16 och 18.

Figur 16. Komplett pejlmottagare.

Antennen är ganska otymplig när man ska transportera mottagaren, så efter lite funderande konstruerade jag 3D-utskrivbara ”papiljotter” som man kan rulla upp spröten på. För att det ska fungera spetsas ändarna på spröten något och ett hål görs nära spetsen. De vassa kanterna oskadliggörs genom att strimlor av sporttejp tejpas över dem. Spetsen sticks in i mitten av papiljotten där det finns en M2.5-skruv som kan haka fast i hålet. Sedan är det bara att rulla ihop sprötet och avsluta med att sätta över en klämma som håller det hela på plats. Handtaget går också att vika åt sidan för att bli mindre skrymmande. Se figur 17 och 18.

Figur 17. Spetsat spröt med hål samt närbild på papiljotter.

Figur 18. Mottagaren hopfälld och klar för transport.

Modeller för de olika 3D-utskrivna delarna till antennen går att ladda ned från [8].

Enligt YagiCAD ska impedansen på antennen vara 33 – j5 Ω vid 145 MHz. Jag mätte upp den med en nätverksanalysator (VNWA) och fick den till 35 + j0 Ω (såklart lite beroende på antennens omgivning; i vissa positioner blev det nästan exakt 50 Ω). Eftersom jag mätte i änden på ca 6 cm koax (ca 0,2 ns) som vrider impedansen en aning medsols i Smith-diagrammet så är resultatet ännu närmare det teoretiska. Nästan lite för bra för att vara sant.

Jag mätte även inimpedansen i mottagaren och med hjälp av C3 kunde jag trimma den till 38 + j13 Ω. Av en lycklig slump (?) matchar alltså den resistiva delen nästan perfekt, medan det skulle behövas lite kapacitiv reaktans i serie med mottagarens ingång. -j13 Ω motsvaras vid 145 MHz av 84 pF. Jag hade 47 pF i lager och satte två sådana parallellt i serie med SMA-kontakten på ingången och hamnade på 32 – j0 Ω vid nästa mätning. Efter dessa övningar borde matchningen mellan antenn och mottagare vara utmärkt. Att den differentiella signalen från antennen skickas en kort bit i en koax utan föregående balun har förhoppningsvis inte alltför stor negativ inverkan.

Ännu har mottagaren inte testats i någon tävling, men preliminära tester jag gjort ser lovande ut. Jag satte i vardagsrummet, nära ett fönster, upp en enkel dipol som drivs av en signalgenerator som moduleras med lämpliga morse-signaler. Vid -10 dBm (0.1 mW) från generatorn så hörs sändaren tydligt på 500 m avstånd med nästan fri sikt. Inom 150 m hoppar audio-S-metern igång om man har volymen tillräckligt uppskruvad. Riktverkan och fram/back-förhållande upplever jag som goda. Som vanligt på 2-m-bandet så går det att hitta platser där signalen är betydligt svagare eller kommer från ett oväntat håll, men i den ganska snälla testmiljön blir det till allra största delen rättvisande bäringar och om mottagningen är konstig räcker det oftast att flytta sig en meter eller två. Jämfört med en annan, lånad, mottagare baserad på ROX-2X så upplever jag min som något mindre brusig (trots den digitala elektroniken) och lite mer känslig. Den bättre känsligheten tror jag beror på en mer omsorgsfull anpassning mellan antenn och mottagare och möjligen också på skillnader i antennkonstruktionen. Den stora skillnaden i användarupplevelse var dock att man slipper ratta på frekvensen för att hitta signalen.

Jag satte även upp en riktig 2-m-räv (gissningsvis 0,5 – 1 W) 500 m och 500 kHz från min svaga testsändare för att testa fallet att man befinner sig nära mål-beacon och vill pejla mot någon avlägsen räv. Med både min och den lånade mottagaren var jag tvungen att ta mig drygt 100 m från räven för att kunna pejla på ett meningsfullt sätt mot den svaga signalen. Det verkar alltså som att SA636 har rätt risiga blocker-prestanda och störs ut av en stark signal, även om den ligger 500 kHz från den frekvens som är inställd. Kanske en anledning att framöver konstruera en ny rävsax som baserar sig på en annan RF-kedja?

Referenser

[1] ”2m Receiver ROX-2X”, http://open-circuit.co.uk/wp/receivers/rox-2x/

[2] ”FoxScope, Rävsax för 80 m med dubbla mottagarkedjor”, QTC nummer 10 och 11, 2022.

[3] “Adafruit Si5351A Clock Generator Breakout Board”, https://www.adafruit.com/product/2045

[4] ”Arduino-Pico”, tillägg till Arduinomiljön för att programmera Raspberry Pi Pico, https://github.com/earlephilhower/arduino-pico

[5] ”LiquidCrystal”, bibliotek till Arduino, https://www.arduino.cc/reference/en/libraries/liquidcrystal/

[6] ”ROX-2X_Si5351”, programkod https://github.com/per-magnusson/ROX-2X_Si5351

[7] ”QDX – Digital Transceiver”, https://qrp-labs.com/qdx.html

[8] ”2 m Fox Hunting Antenna”, blog post with 3D models https://axotron.se/blog/2-m-fox-hunting-antenna/

2 m Fox Hunting Antenna

This article describes a Yagi antenna I have designed for use in a “fox hunting” receiver for the 2 m band (144 MHz). The antenna uses 25 mm wide steel tape measure for the elements, 16 mm PVC pipe as the boom and 3D-printed parts to keep it all together. Models for the 3D-printed parts are available for download.

Link to a zip-file with 3MF models of the parts:


[ZIP]

Several Yagi antenna designs for the sport of fox hunting (or ARDF, amateur radio direction finding) have been published and can be found by some searching on the web. I decided to have a go at designing such an antenna myself and used the free YagiCAD program to do so. After a number of rounds of optimization starting from different base designs, I ended up with the following:

Antenna dimensions [mm]

The shortest element is the director (towards antenna main lobe) while the longest is the reflector. The “driven” element is the one in the middle.

According to YagiCAD, the radiation pattern of the antenna is as follows:

Simulated antenna radiation patterns at 144.75 MHz

Front-to-back ratio is simulated to be above 40 dB.

While I have not measured the real antenna diagram, the subjective assessment is that the antenna performs well. Using a network analyzer, I have found that it’s impedance is around 40 -j0 ohms at 145 MHz.

For the beam, I used a piece of 16 mm outside diameter PVC electrical conduit pipe (“VP-rör” in Swedish).

For the elements, I used 25 mm wide steel tape measure from Biltema, e.g. part number 16-2931.

To mechanically connect the elements to the beam, I designed various clamps that I printed on my 3D printer. The antenna needs to be made smaller for storage and transportation, so I also designed spools and clamps to allow the elements to be rolled up and kept securely in that state. Furthermore, I have designed a handle that can grip on the pipe and be secured by a screw pulling a wedge. Pictures of all these parts are shown below.

Clamp for director and reflector. Requires M3 screws and nuts.
Clamp for driven element, including a strain relief (red) for an RG174 coax and some sideways adjustability of the elements for tuning. Requires a few M3 screws and nuts.
Another view of the clamp for the driven element. Note the slots in the green part that allows the length of the elements to be adjusted by a few mm.
Spool for rolling up an antenna element. The spool consists of two halves that need to be glued together, a 5 mm long M2.5 screw and a removable center pin that helps while rolling up the element. One pin can be used for all six spools.
Antenna spool with a clamp (red) that secures the rolled-up tape measure (not shown). Note the peg on the red clamp that fits in one of the notches on the spool (to the right in this picture) to prevent the whole thing from unrolling.
One half of the spool. There are three holes where short pieces of filament can be inserted to help with alignment during glue-up and to make the glue-up stronger.
The end of each antenna element needs to be chamfered at a shallow angle and a 3 mm hole has to be made to fit in the M2.5 “hook” inside the spool. The sharp cut edges can be made less dangerous by putting sports tape over them.
Complete handle
Handle without the clamp, showing the wedge and screw.
Cross section of handle, showing the wedge, screw and knob that pulls on the wedge to secure the grip on the pipe.
Complete receiver
Receiver ready for storage or transportation with rolled-up elements and the handle folded to the side
Close-up of antenna elements rolled-up on spools with clamps holding them in place

FoxScope – radiopejlmottagare med dubbla mottagarkedjor – del 2

Det här blogginlägget är andra och avslutande delen i en artikelserie där jag beskriver en mottagare (“rävsax”) för radiopejlorientering på 80m-bandet. En snarlik variant av artikeln publicerades i Sveriges Sändaramatörers, SSA:s, tidskrift QTC i nummer 10 och 11, 2022.

Denna andra del beskriver elektroniken, mekaniken och mjukvaran.

Blockschema

Figur 16 visar ett blockschema över mottagaren. Utöver vad som framgår av denna bild så händer en hel del intressanta saker i mjukvaran i processorn. Mer om det senare.

Figur 16. Blockschema

Som synes finns det två identiska mottagarkedjor, en för H-fältet och en för E-fältet. Antennsignalerna förstärks något av lågbrusförstärkare (LNA), filtreras och mixas med två lokaloscillatorsignaler som är fasvridna 90 grader från varandra. Detta möjliggör att man senare undertrycker det oönskade sidbandet.

Efter nedmixning till nära basband (nominellt 13 kHz) så bandpassfiltreras signalerna och förstärks med antingen 22 eller 52 dB innan de digitaliseras av 24-bitars audio codecs i en takt av 44.1 kHz. Inbyggt i AD-omvandlarna finns mycket effektiva antivikningsfilter med minst 60 dB dämpning från halva samplingsfrekvensen upp till åtminstone tredubbla samplingsfrekvensen. En tämligen kraftfull mikro-controller i form av en i.MX RT1062 från NXP sköter sedan resten av signalbehandlingen samt användargränssnittet i form av en grafisk display, en ratt och några knappar. Den färdigbehandlade signalen skickas till audio-DAC:ar med inbyggda hörlursförstärkare. För tillfället skickas samma signal till både höger och vänster kanal, men man skulle kunna tänka sig någon annan lösning i framtiden.

Konstruktionen innehåller även ett LiPo-batteri med laddarkrets, en USB-kontakt för laddning och programmering och en IMU, inertial measurement unit, som består av en magnetometer, en accelerometer och ett gyro för att kunna avgöra i vilken kompassriktning som antennen för tillfället pekar.

Processorn

Processorn sitter på en liten s.k. Micro Module som görs av SparkFun [3]. Genom att använda en färdig modul istället för att sätta processorn och tillhörande komponenter direkt på kortet slipper man dels löda en ganska besvärlig 196-bollars BGA-kapsel och dels får man på köpet en trevlig boot loader som gör att man enkelt kan programmera den via en USB-kabel. Det visade sig också lättare att få tag på denna modul än att köpa en lämplig lös processor i den bedrövliga halvledarbrist som råder. Modulen ansluts i en liten ytmonterad kontakt liknande de som används för moderna solid-state-diskar i M.2-format. Kontakten har 67 anslutningar fördelade på två rader med 0,5 mm centrumavstånd mellan benen och modulen är ca 22×22 mm, vilket gör det hela till en kompakt lösning.

i.MX RT1062 är en 32-bitars ARM Cortex-M7-processor som kan klockas i upp till 600 MHz, har stöd för flyttal och massor av periferienheter, såsom interface för I2S, I2C, SPI samt DMA, realtidsklocka, timers mm. Den har också mycket minne för att vara en mikrocontroller; 1 MB RAM och 16 MB flash finns på MicroMod-kortet. Att processorn är så kraftfull gör att programutvecklingen blir mycket enklare än om man ständigt behöver optimera och kompromissa med varje liten funktion man lägger till. Det finns också gott om färdiga programpaket, både från PJRC som utvecklar Teensy-familjen, från Arduino-världen, från ARM och från alla möjliga andra utvecklare och företag som släpper öppen källkod på t.ex. GitHub.

Elektroniken

Kopplingsschemat är uppdelat på flera olika sidor. Figur 17 visar hur de hänger ihop med ett grönt block per schemasida.

Figur 17. Sammankopplingen av de olika schemasidorna. Signalflödet är huvudsakligen
från vänster till höger.

I figur 18 visas de två identiska lågbrusförstärkarna som buffrar, förstärker och filtrerar signalerna från de två antennerna. Jag beskriver här den övre kretsen.

Figur 18. De två lågbrusförstärkarna.

P1 är en hylslist för anslutning mot antennerna där de flesta benen är skärmande jord. D1 och D2 skyddar mot överspänningar och ESD. Genom att ha två dioder i serie blir kapacitansen mindre och påverkan på antennens resonansfrekvens inte lika stor. C8 och C9 monteras inte (gäller alla komponenter märkta ”NM”, Not Mounted). Q4, 2SK3557-6, är en JFET med lågt brus och hög inimpedans. När jag letade lämpliga lågbrusiga FET:ar att
använda i denna position tyckte jag det här såg ut att vara bästa alternativet, även om det inte finns tydliga data för bruset vid 3,5 MHz i databladet. Förhoppningsvis är spicemodellen inte alltför missvisande. J310 brukar annars vara ett populärt val i sådana här sammanhang, men den ser ut att vara brusigare. Jag har inte gjort några systematiska mätningar för att försöka ta reda på verkliga brusprestanda, men jag har gjort väldigt många simuleringar i den kraftfulla gratissimulatorn LTSpice.

Q4 utgör tillsammans med Q3 ett folded-cascode-steg. Basen på Q3 är RF-jordad och därmed är även emitterspänningen (nästan) konstant, vilket gör att man inte får någon millereffekt som ökar ingångskapacitansen hos Q4. Genom att Q3 sitter ”bredvid” Q4 och inte ovanför som i en vanlig cascode så behöver man inte lika hög matningsspänning. Priset man betalar är att de två transistorerna behöver separata biasströmmar, vilket ökar strömförbrukningen.

R4 och L1 fungerar som strömkälla till cascodesteget. Utan L1 hade brus från R4 signifikant bidragit till förstärkarens brus och med enbart L1, men utan R4, hade biasströmmen blivit väldigt känslig för temperatur och komponenttoleranser. När Q4 vill ha mycket ström (positiv amplitud från antennen) blir det mindre över till Q3 och vice versa, så i princip flyter lika mycket signalström genom Q4 som ut från kollektorn på Q3, om än med omvänd fas.

L4/R14 utgör last till första förstärkarsteget. R14 såg inte ut att behövas i simuleringar, men i praktiken var det bra att ha för att undvika resonansproblem. Brusbidraget från R14 är tämligen begränsat. Även R7 har som syfte att minska risken för självsvängning.

Q2 är en emitterföljare som buffrar den högimpediva utgången från cascodesteget för att kunna driva ett lågpassfilter med 75 ohms impedans (mer lättdrivet/strömsnålt än 50 ohm och det finns inget i den här delen av kretsen som tvingar fram användandet av just 50 ohms impedans) och sedan mixrarna.

Spänningsförstärkningen (det är svårt att tala om effekt här eftersom impedanserna på många ställen inte är väldefinierade) är ca 7 gånger från gaten på Q4 till kollektorn på Q3 och efter dämpningen som orsakas av främst den impedansanpassande R9 så är den nere på totalt ca 3,2 gånger vid filtrets utgång.

Enligt simuleringar med en modell av ferritantennen som är resonant under 3 MHz så är det brus från J1 som dominerar vid 3,5 MHz (vid antennens resonansfrekvens är det lustigt nog istället förluster i antennen som dominerar, följt av brus från Q3).

Q1 filtrerar matningsspänningen för att undvika att störningar kommer in den vägen. En något enklare variant av detta matningsfilter används på flera ställen i [4]. R3/C3 ger ytterligare filtrering av matningen till ingångssteget.

Figur 19 visar de fyra balanserade mixrarna.

Figur 19. Schema för mixrarna.

Som mixrar används de klassiska SA612 av gilbertcelltyp. Det finns två par av mixrar, ett för H-mottagaren och ett för E-mottagaren för att skapa I- (in phase) och Q- (quadrature phase) versioner av de nedblandade signalerna. Här beskrivs bara H-mottagaren (övre delen av figur 19).

Eftersom mixrarna dels har en ganska hög inimpedans på minst 1.5 kohm och dels är balanserade passade jag på att använda 4:1-transformatorer mellan ingångsförstärkarna och mixrarna. De höjer impedansen från 75 ohm till 300 ohm och gör samtidigt signalen differentiell och med dubbla spänningsamplituden. R80 tillsammans med mixrarnas inimpedans terminerar signalen och ser därmed till att det föregående filtret jobbar i önskad impedans. Det går att driva mixrarna single-ended (så som i 80m12), men signalkvaliteten blir rimligen bättre om man driver dem differentiellt.

Den föregående förstärkningen ser till att bruset från mixrarna (brustal ca 5 dB) inte dominerar. Man vill såklart att första förstärkarsteget, där signalerna med nödvändighet är svagast, ska dominera bruset.

Utsignalen från mixrarna är också differentiella och det utnyttjas för bästa signalkvalitet i de följande MF-förstärkarna på bekostnad av en del komplexitet. De aktiva mixrarna förstärker för övrigt signalen 5–7 gånger. Frekvensen hos MF-signalen är nominellt 13 kHz. Ytterligare nedblandning till under 1 kHz sker senare i mjukvara.

Kondensatorerna C58 etc. tvärs över utgångarna på mixrarna bidrar till lågpassfiltrering tillsammans med utimpedansen på ca 1,5 kohm.

LO-signalerna i fas och kvadratur skapas på en annan schemasida, se längre ned i artikeln, och termineras av 75-ohmsmotstånd vid mixrarna.

Q11 filtrerar matningsspänningen på samma sätt som Q1 gör vid ingångsförstärkaren.

De fyra mixrarnas utsignaler går till varsin MF-förstärkare. Se figur 20 och 21.

Figur 20. MF-förstärkarna. Innehållet i de fyra blocken framgår av nästa figur.

Q14 skapar en lämplig nivå på den förstärkningskontrollerande signalen. Q13 filtrerar matningen till förstärkarna. U12 skapar en ganska lågimpediv flytande ”jord” på halva förstärkarnas matningsspänning.

Figur 21. Schemat för var och en av MF-förstärkarna.

Varje MF-förstärkare har flera uppgifter:

  • att konvertera den differentiella signalen från mixrarna till en single-ended signal
  • att bandpassfiltrera signalen
  • att kunna förstärka antingen lite (13 gånger) eller mycket (400 gånger) beroende på hur stark signalen är.

Detta åstadkoms med en instrumentförstärkarkoppling med tre operationsförstärkare (opampar) av typ TS971. Valet av dessa beror på att de dels var tillgängliga (ingen självklarhet i dessa tider av komponentbrist), dels hade lämpliga prestanda och dels fanns i en liten SC70-5-kapsel så att lösningen inte skulle ta så stor plats. Med tre opampar per kanal och tillhörande kringkomponenter tar det hela ändå ganska mycket utrymme på kortet.

C148 gör att DC-förstärkningen är låg. Om Q17 slås på kopplas R117 in och ökar AC-förstärkningen med 30 dB jämfört med om bara R118 bestämmer förstärkningen. 47-pF-kondensarorerna i återkopplingen runt varje opamp begränsar förstärkningen av oönskade höga frekvenser. R120/C147 ger ytterligare en aning lågpassfiltrering och D8 ser till att klippa om signalen blir alltför stark.

I figur 22 visas de två ”audio codecs” av typ WM8731, U17 och U18, som omvandlar de analoga MF-signalerna till digital form, omvandlar tillbaka basbandssignalen till analog form och innehåller förstärkare som kan driva hörlurar. Tyvärr har WM8731 hunnit bli obsolet sedan jag påbörjade konstruktionen och i framtida versioner borde den ersättas med något modernare.

Figur 22. Audio-codecs

I figur 22 visas de två ”audio codecs” av typ WM8731, U17 och U18, som omvandlar de analoga MF-signalerna till digital form, omvandlar tillbaka basbandssignalen till analog form och innehåller förstärkare som kan driva hörlurar. Tyvärr har WM8731 hunnit bli obsolet sedan jag påbörjade konstruktionen och i framtida versioner borde den ersättas med något modernare.

Varje codec innehåller två 24-bitars AD-omvandlare och två DA-omvandlare för att hantera stereoljud. I det här fallet används stereokanalerna hos AD-omvandlarna för att digitalisera I och Q från mixrarna.

Eftersom det bara behövs ett par hörlurar så används inte DA-omvandlare och hörlursförstärkare i U18. Förstärkarna kan leverera ohälsosamt starka signaler, så R108/R109 samt D6 och D7 begränsar den maximala ljudnivån till säkrare nivåer. Ännu en idé lånad från 80m12.

U19 är en liten spänningsregulator som förser U17 och U18 med en ren matningsspänning på 3,1 V. Det kan tyckas lite märkligt att använda 3,1 V istället för traditionella 3,3 V, men codecarna är specificerade att fungera bra med denna spänning och strömförbrukningen borde bli aningen lägre. Det var också lättare att få tag på 3,1-V-regulatorer än 3,3-V-regulatorer i den pågående komponentbristen.

Kontaktdonen P10 och J3 passar i varandra om man sågar isär kortet i två delar. Så länge man inte sågat isär kortet så är signalerna ihopkopplade och kontaktdonen behövs inte. På detta vis kan hela konstruktionen tillverkas, monteras och testas på ett 100 x 100 mm stort kort, medan slutprodukten kan bli betydligt smalare när kortet har sågats av ungefär på mitten och de två halvorna lagts ovanpå varandra. Se foton senare i artikeln.

Lokaloscillatorn baseras på den populära Si5351 som kan skapa tre olika fyrkantsvågor mellan några få kHz upp till 200 MHz med så gott som obegränsad frekvensupplösning. I det här fallet skulle vi vilja ha två sinusvågor på ca 3,5 MHz (sändarens frekvens plus MF-frekvensen som är 13 kHz) i kvadratur, dvs med 90 graders fasskillnad. Si5351 kan skapa signaler med inställbar fasskillnad, men vid så låg frekvens som 3,5 MHz så räcker den inställbara tidsskillnaden inte till för att uppnå 90 grader.

Lösningen jag tänkte ut framgår av figur 23. Si5351 (U1) skapar en 3,5-MHz-signal, CLK3M5, samt två signaler med fyrdubbla frekvensen, dvs ca 14-MHz. CLK3M5 går dels via en schmittrigger-inverterare (U3A) till D-ingången på en vippa (U2) och dels fördröjs den lite via RC-länken R45/C41 innan den passerar en annan schmittrigger (U3B) som snyggar till signalen innan den når D-ingången på vippan U4. Båda vipporna klockas med väsentligen samma 14-MHz-klocka, men RC-fördröjningen gör att U2 fångar en förändring av CLK3M5 en 14-MHz-cykel tidigare än U4. En 14-MHz-cykel är 90 grader av en 3,5-MHz-cykel, så på detta sätt får man en perfekt 90 graders fasvridning. I schemat finns ett tidsdiagram för de olika vågformerna.

Figur 23. Lokaloscillator med kvadraturutgångar

R75 centrerar RC-vågformen på ingången till U3B så att den hamnar ungefär mitt för omslagspunkterna för inverteraren vilket gör att fyrkantsvågen på utgången blir så gott som symmetrisk.

Man kan finjustera fasskillnaden genom att skruva på fasfördröjningen hos de två 14-MHz-klockorna, men det är inget jag skrivit mjukvara för ännu.

Fyrkantsvågorna från D-vipporna dämpas av R35/R38 och R46/R49 samt omvandlas till sinusvågor genom två lågpassfilter med 75 ohms impedans (ingen anledning att använda 50 ohm här heller). Därefter förgrenas signalerna med varsin resistiv splitter innan de skickas vidare till mixrarna.

Efter att jag konstruerat denna lösning läste jag i byggbeskrivningen till QRP Labs mottagare QDX [5] (se sida 42 i Rev 1.12 av byggbeskrivningen) att det på något sätt verkar gå att få till kvadratursignaler även vid 3,5 MHz med Si5351. Hur detta görs i QDX verkar dock inte vara publicerat, men om man lyckas med det kan man förenkla den här kretsen och bli av med vippor, RC-länk och schmittriggrar.

Eftersom upplösningen i frekvens är fenomenal så kan man ganska lätt kalibrera frekvensen hos mottagaren så att man tar hänsyn till kristallens tolerans och får bättre än 1 ppm frekvensnoggrannhet vid rumstemperatur. I en eventuell framtida version av mottagaren kommer jag nog att förbättra detta ytterligare genom att ersätta kristallen med en TCXO (temperaturkompenserad kristalloscillator) så att inte heller temperaturvariationer ger något nämnvärt bidrag till frekvensfelet.

Så långt den analoga signalkedjan från antenn till AD-omvandling.

Figur 24 visar schemat med processormodulen, displayen, USB-porten, knapparna och kompasskretsarna.

Figur 24. Processor, IMU samt anslutningar till display, knappar och USB-port.

Här följer en beskrivning av signalerna motsols runt symbolen för processormodulen.

Liksom en del andra kretsar matas processorn med 3,1 V istället för 3,3 V för minskad strömförbrukning och bättre tillgänglighet på lämpliga regulatorer. Man får också fördelen att batterispänningen kan sjunka lägre innan kretsens matningsspänning påverkas. Detta är dock inte så viktigt i praktiken eftersom batterispänningen knappt sjunkit under 3,9 V även efter en och en halv timmes användning.

En standby-spänning, VRTC, som inte styrs av huvudströmbrytaren, förser realtidsklockan med matning så att tiden hålls även när resten av mottagaren är avstängd.

Fyra membrantangenter är inkopplade på signalerna BTN1-4 och avstudsas i mjukvara. Tangenterna är köpta på Electrokit (artikelnummer 41012140) och ansluts via en stiftlist med 2,54 mm delning.

Teensy-korten har en liten extraprocessor för att hantera programmering av den stora processorn och i vissa fall måste man innan programmering skicka en puls på pinnen Program till den. Därför finns en tryckknapp, SW1, kopplad till Program. I de allra flesta fall går det dock bra att programmera om även utan tryck på denna knapp, varför den sitter direkt på kortet och inte är åtkomlig med mindre än att man skruvar isär lådan.

USB-anslutningen sker via en intern kabel till ett separat litet kort med USB-kontakt och lysdioder för att indikera laddning/fullt batteri.

En signal för vardera mottagarkedjan (IFE_ATT_30 och IFH_ATT_30) avgör vilket av de två förstärkningarna med 30 dB skillnad som MF-förstärkarna ska bidra med.

Signalerna från AD-omvandlarna kommer in på I2S-bussen via I2S_ADCDATA1 och I2S_ADCDATA2. Denna buss kräver för övrigt tre klocksignaler (MCLK, BCLK och LRCLK) som skapas av processorn. Ytterligare en datasignal, I2S_DACDATA, går till DA-omvandlarna. I2S-utgångarna från processorn är försedda med serietermineringsmotstånd för bästa signalintegritet.

I2C-bussen används för att prata med Si5351, IMU-kretsarna och för att konfigurera audio-codecarna.

TFT-färgskärmen ansluts via en 40-polig FPC-kontakt och för att spara pinnar så används SPI-interfacet istället för det alternativa parallella interfacet. Bakgrundsbelysningen kontrolleras via pulsbreddsmodulering från processorn av U23, en AP2502. Jag lyckades få tag på den, men om den är otillgänglig så kan man även driva bakgrunds-LED:arna via några motstånd och Q9. Detta har dock nackdelen att ljusstyrkan blir beroende av batterispänningen som sjunker under användning. Det är viktigt att man väljer pulsbreddsmoduleringsfrekvensen så att inga övertoner hamnar i 80-m-bandet. Annars lär man höra det om man skulle tuna in övertonens frekvens.

En nerskalad version av batterispänningen är kopplad till en pinne med ADC-funktion så attman kan hålla koll på batteristatus.

En viktig del i användargränssnittet är en ratt kopplad till en ”encoder”. Ratten styr menysystemet, inställning av dämpning/förstärkning, frekvens mm. Ratten har även en tryckfunktion. Signalerna heter ENC_A, ENC_B och ENC_SW och de avstudsas i mjukvara.

U6 är en kombinerad 3-axlig accelerometer och 3-axligt gyro och den används av mjukvaran tillsammans med den treaxliga magnetometern U7 för att räkna ut en gyrostabiliserad kompassriktning hos antennen. De här två kretsarna var de komponenter jag var mest rädd för att de skulle orsaka lödproblem. U7 har en galet liten kapsel, bara 0,8 x 0,8 mm med fyra BGA-bollar på 0,4 mm centrumavstånd från varandra medan U6 är en 3 x 3 mm liten LGA med 16 anslutningar på ett avstånd av 0,5 mm. Som tur var gick lödningen bra (mer om det nedan) och jag slapp försöka rätta till besvärliga lödproblem. Ett tag övervägde jag att såga bort delen av kortet med dessa kretsar och placera på en bättre plats i lådan för att undvika störande magnetiska material, men det visade sig inte behövas och kontaktdonen P5 och P6 som var tänkta för detta fall är alltså onödiga.

Kontaktdonen som ansluter USB och knappar till huvudkortet valdes baserat på tillgänglighet (många av de populära JST-kontakterna är t.ex. svåra att få tag på för tillfället) och liten storlek. De tillverkas av Cvilux och har 1,25 mm delning. För att göra passande kablage var jag tvungen att investera i en lämplig crimptång. Efter lite googlande föll valet på en PAD-11 från Engineer. Att crimpa så här små hylsor kräver lite övning, men efter några mindre lyckade försök så gick det ganska bra att göra under mikroskop.

Det enda som återstår av schemat är spänningsmatningsdelen som visas i figur 25.

Figur 25. Strömförsörjning och laddning

LiPo-batteriet med en kapacitet på 1500 mAh och en nominell spänning på 3,7 V ansluts till P7. Batteriet är köpt på Electrokit, artikelnummer 41016064. U15 hanterar laddningen av batteriet när USB-kabeln är inkopplad. Laddströmmen är satt till ca 300 mA via R104. Två lysdioder (monterade på det separata kortet med USB-kontakt) indikerar om laddning pågår eller är klar.

Regulatorn U16 har ganska låg egenförbrukning och matas alltid av batteriet. Den skapar stand-by-spänningen till realtidsklockan i processorn. I en tidigare version av mottagaren hade jag en regulator med ännu lägre egenförbrukning, men den gick inte att få tag på när jag konstruerade denna version.

För att inte behöva dra all ström från batteriet via kontaktdon, kablar och potentiellt korroderande strömbrytare så används PMOS-transistorn Q16 för att slå av eller på strömmen till resten av mottagaren. Den styrs i sin tur av en vippströmbrytare via signalen POWER_SW#.

Linjärregulatorn U13 skapar 3,1-V-matningen till bland annat processorn. Avkopplingskondensatorerna är mestadels på 100 nF eftersom regulatorn vill se max 10 µF på utgången. Utan denna begränsning hade jag använt 1-µF-kondensatorer.

U14 är en boost-omvandlare som skapar den högre råspänning på 6 V som behövs för att driva analoga kretsar i radiodelarna. Nominell switchfrekvens är 1,6 MHz, så om det stämmer så hamnar inga övertoner i 80-m-bandet. Tyvärr är undre toleransen för switchfrekvensen 1,15 MHz, vilket gör att tredje övertonen skulle kunna komma inom bandet. Övre toleransen är 1,85 MHz, vilket gör att andra övertonen också skulle kunna göra det. I den mottagare jag byggt så var kretsen väluppfostrad och höll sig närmare nominell frekvens, men om man skulle bygga fler så är detta något att hålla ögonen på. Helst skulle man vilja ha en krets som går att synka till en väl vald extern, exakt, frekvens (kanske skapad av processorn), men jag har inte hittat någon lämplig krets för detta. Komponentbristen gör det inte lättare att hitta något passande.

SDR-mjukvara

Även om elektronikkonstruktionen, antennen och mekaniken tog en hel del tid att utveckla så är det mjukvaran jag lagt klart mest tid på.

Teensy-familjen har ett väletablerat system (audio-paketet) för att smidigt koppla ihop olika mjukvarublock som behandlar audiosignaler och i princip är detta väldigt lämpligt för att sätta ihop en signalkedja för låg mellanfrekvens och basband i en SDR-mottagare som denna där digitaliseringen sköts av audio codecs. En svaghet som jag ville undvika var dock att audio-paketet jobbar med 16-bitars fixtal, vilket kanske inte räcker för att få ut mesta möjliga signaldynamik i ett SDR-system som detta. Som tur är finns även en
användarutvecklad variant som jobbar med 32-bitars flyttal [6] och som jag nyttjade. En hel del anpassningar behövde också göras i exempelvis kod för att prata med WM8731 och I2S-mottagarblocken så att 24-bitarsformat används och konverteras till flyttal.

För vanliga audiotillämpningar är det kanske inte så noga om olika audioströmmar hamnar någon millisekund fel relativt varandra, men här måste vi ha perfekt repeterbarhet på fasen mellan de två audioströmmarna. Det visade sig att audiopaketet inte var så noga med denna detalj när C++-objekten i signalkedjan skapas vid uppstart, så kod fick läggas till för att få en välkontrollerad och synkron initialisering av objekten. Tur att källkoden är öppen så att sådana ändringar är möjliga.

Själva SDR-funktionerna görs i huvudsak av ett annat färdigt mjukvarupaket, AudioSDR [7]. Detta behövde också modifieras; bland annat för att ta emot flyttal och för att lägga till några nya alternativa MF-filter. Dessa filter designas ganska smidigt med hjälp av gratismjukvara från Iowa Hills, men någon gång nyligen verkar hemsidan där alla filterdesignprogrammen fanns att ladda ned ha försvunnit. Det finns dock ett GitHub-repo där man kan ladda ned källkoden [8]. Många av finesserna i AudioSDR är inte nödvändiga i denna pejlmottagare. T.ex. är AGC och AM-mottagning inte av intresse, men MF-filtreringen, den komplexa nedblandningen till basband och Hilbertfiltreringen som gör att man kan undertrycka det oönskade sidbandet passar perfekt för applikationen. Hur undertryckning av sidband går till med denna metod (”phasing”) går jag inte närmare in på, utan hänvisar till avsnitt 9.2 i [4] som ger en gedigen genomgång av inte bara matematiken bakom, utan även av analyserar olika felkällors inverkan på resultatet. En framtida förbättring av mottagaren vore att införa rutiner som möjliggör finjustering av signalnivå och fas före Hilbertfiltreringen för optimal sidbandsundertryckning.

Efter att basbandssignalerna för de två mottagarkedjorna vaskats fram är det dags för lite mer specialiserad och hemsnickrad signalbehandling för att analysera framförallt fasskillnaden mellan signalerna från de två antennerna. Denna signalbehandling går till som följer:

Först kastas vartannat sampel bort för att minska beräkningsbördan något. Detta kan göras eftersom signalen redan är bandbegränsad av MF-filtret till långt under en fjärdedel av samplingstakten (44,1 kHz), så en halvering av samplingstakten till 22,05 kHz orsakar ingen nämnvärd vikningsdistorsion.

Nästa steg är att göra överlappande ”FFT:er” (Fast Fourier Transform, samma matematiska beräkning som används vid vattenfallsdisplayer och alltså delar upp signalen i olika frekvenskomponenter) av längd 1024 på signalen från E-fältsantennen (eftersom den alltid finns tillgänglig, medan H-fältsignalen är väldigt svag vid sitt minimum). Det ger en frekvensupplösning på 22,05 kHz/1024 = 21,53 Hz. Före FFT:n läggs ett Gauss-fönster på signalen för att inte få ”kjolar” och för att den följande frekvensuträkningen ska bli mer exakt.

FFT:n söks igenom för att se om det någonstans finns en topp som sticker ut och om det gör det så behöver frekvensen för den tonen beräknas. Det görs genom att väga samman styrkan hos det starkaste facket i FFT:n och de omedelbart närliggande facken enligt metoden i [8], vilket ger ett mycket noggrannare estimat av frekvensen än att rakt av välja mittfrekvensen för det fack som hade starkast signal.

Nu vet vi vilken frekvens som vi har tagit emot och som fasjämförelsen ska göras vid. Fasjämförelsen görs i tidsdomänen på följande vis: Först skapas syntetiska sinus- och cosinussignaler av längden 1024 med den uppmätta frekvensen. Därefter multipliceras 1024 sampel av vardera signalen från E-mottagaren och H-mottagaren, sampel för sampel, med dessa syntetiska signaler och resultaten ackumuleras. Det handlar alltså om att räkna ut korrelationen mellan respektive signal och sinus- samt cosinus-signalerna. Dessa två korrelationer, låt oss kalla dem sincorr_E, coscorr_E samt sincorr_H och coscorr_H, visar vilken fas som signalen har relativt den påhittade sinussignalen. Nu är det bara att räkna ut arctan(sincorr_E/coscorr_E) och arctan(sincorr_H/coscorr_H) för att få fram respektive fasvinkel. Dessa vinklar i sig säger inte något intressant, men skillnaden mellan dem är precis vad vi är ute efter. Så en enkel subtraktion mellan dem visar nu den önskade fasskillnaden mellan E-fält och H-fält!

Om antenn och mottagare fungerar som de ska så är det nu bara att svepa med mottagaren i ungefärlig riktning mot sändaren och se i vilken riktning denna fasskillnad gör ett hopp på 180 grader, samtidigt som H-signalen har ett minimum. Beroende på fasvinklarna till vänster och till höger om hoppet kan man avgöra om man har sändaren framför eller bakom sig, så separat sidbestämning blir överflödig.

Figur 26 visar hur displayen kan se ut när man pejlar först bort från sändaren och sedan mot den. De violetta staplarna visar signalstyrkan från H-antennen i olika kompassriktningar man svept över, medan de vita markeringarna visar fasskillnaden mellan E och H. Bredden på displayen täcker i detta fall 80 grader av kompassvarvet. Som synes finns ett minimum i mitten av bilden i båda fallen, men i vänstra fallet är fasskillnaden låg till vänster om mitten och hög till höger om mitten, medan förhållandet är det omvända i högra bilden. Om man vet att mottagaren mäter upp en hög fas när man pekar till vänster om sändaren och en låg när man pekar till höger så kan man genast avgöra om minimat/fashoppet man hittat är det önskade, eller om man måste rotera ett halvt varv för att vara vänd mot sändaren.

Figur 26. Skärmbilder efter pejling bort från sändaren respektive mot den.

Övrig mjukvara

Det går att få in mycket mer än de rena SDR-funktionerna i mjukvaran och en del av finesserna som lagts till kan anas i skärmbilderna i figur 26. Under en tävling tittar man normalt inte på någon annan vy än den i figuren, men före en tävling kan man göra ett antal inställningar, kalibreringar och även titta på olika typer av debuginformation som kan vara intressant under utvecklingen.

En av de mer komplexa funktionerna är hanteringen av IMU:n, dvs kompassen. Ett s.k. Kalmanfilter väger samman informationen från accelerometer, gyro och magnetometer för att estimera hur mottagaren är orienterad relativt jordytan och magnetiska norr. Som tur är finns det färdiga bibliotek som utför denna komplexa matematiska algoritm och jag valde att använda Kalmanfilterkod utvecklad av NXP, men ompaketerad av Adafruit, se [10]. I princip ser man bara till att förse Kalmanfiltret med periodiska uppdateringar (ca 100 gånger i sekunden i detta fall) av mätvärden från sensorerna och kan sedan när som helst fråga det i vilken riktning som antennen pekar.

Själva användargränssnittet kräver lite omtanke för att fungera bra i en tävlingssituation. Som nämnts tidigare så består det förutom av skärm och hörlurar av fyra knappar plus en encoder med knappfunktion. När man slår på strömmen startar den upp på en förprogrammerad frekvens och ratten styr förstärkningen. Vad de fyra membranknapparna gör framgår av text i nederkanten av skärmen. I figur 26 är funktionerna i tur och ordning: centrera plotten i nuvarande pejlriktning, rensa innehållet i plotten, lås till sändarens frekvens, respektive växla mellan olika filterbandbredder från 100 Hz till 3 kHz.

På skärmen visas förutom pejlingsplotten, även lite annan information som nuvarande frekvens, förstärkning, signalstyrkor, batterispänning, aktuell fasskillnad mellan E och H (phi), kompassbäring, aktuell tid, vilken räv som sänder och ett färgat fält som anger vilken färg på penna jag valt att använda för aktuell räv. Jag brukar springa omkring med fem olika pennor runt halsen och i hastigheten kan man lätt ta fel när man ska rita in en bäring på kartan. Speciellt på SM i 80 m när sju olika rävar är igång och det bara finns fem färger att välja på kan det vara bra med detta stöd.

Vid sprinttävlingar programmerar jag in de fyra aktuella frekvenserna i förväg och Lock-funktionen ersätts då av en funktion för att växla mellan de fyra frekvenserna.

Kretskort

Mönsterkortet har fyra lager för att inte behöva kompromissa med jordplan och
signalintegritet. Det är tillverkat hos JLC PCB till en rimlig kostnad tillsammans med en pastastencil som möjliggör att man applicerar lodpasta på alla lödytor. Alla ytmonterade komponenter förutom två kontaktdon sitter på en och samma sida av kortet. Figur 27 visar det bestyckade kortet.

Figur 27. Ovansidan av kretskortet innan det sågades isär.

Antennsignalerna kommer in uppe till vänster, förstärks och skickas vidare nedåt där de mixas i de fyra SO8-kretsarna. Under rutan med mixrar och MF-förstärkare finns en ruta med lokaloscillatorn. På högra delen av kortet finns längst ned kontaktdon för USB, encoder, hörlurar och batteri. Nere i högra hörnet sitter IMU-komponenterna. Högre upp finns Program-knapp, de två audio-codecarna, laddkrets, displaykontakt och den röda modulen med processorn.

Montering och lödning av kortet gick till som så att jag först tryckte på lodpasta med hjälp av stencilen, sedan tillbringade runt fyra timmar med att med pincett under mikroskop plocka på de över 300 komponenterna och sedan värma upp kortet underifrån via en tjock stålplåt ovanpå induktionshällen i köket. I förväg hade jag testat fram ett recept med tider och effektinställningar som gav en vettig temperaturprofil. Lödningen gick riktigt bra och det enda jag behövde åtgärda var ett par lodbryggor vid display- och processorkontakterna.

När en hel del av funktionerna var provkörda var det dags att såga isär kortet mellan de vertikala linjerna och montera ihop det som en dubbelmacka via ytmonterade kontaktdon på undersidan av kortet. Se figur 28.

Figur 28. Korten efter isärsågning och hopkoppling.

Mekanik

Jag valde att tillverka lådan för mottagaren genom att rita ihop 3D-modeller och skriva ut på 3D-skrivare. Det har blivit några iterationer och nuvarande utseende är kanske inte det slutgiltiga. För att skärma av elektroniken i mottagaren så att störningar från elektroniken inte kopplas in i antennen så är lådan skärmad invändigt med hjälp av koppartejp. Skarven mellan lådhalvorna överbryggas av en ledande packning. Kretskorten är jordade till koppartejpen på många punkter via små fjäderbelastade pogo-pinnar. Se figur 29.

Figur 29. Jordande pogo-pinnar har lötts på RF-kortet.

Rent allmänt är en slutsats från experiment med en tidigare prototyp att det lönar sig mycket mer att försöka skärma in störande kretsar än att skärma känsliga kretsar.

Antennerna är ju avsiktligt gjorda för att plocka upp svaga signaler och de är kopplade till de känsligaste punkterna i signalkedjan, så att inte skicka ut störningar som når antennerna är högsta prioritet. Processorkort och display är två av de värsta störgeneratorerna och av den anledningen får plattformen som displayen är monterad på göra dubbel nytta genom att även vara bas för koppartejp som omsluter processormodulen och utgör ett jordplan nära displayen.

Med korten färdigbestyckade kan det hela monteras i lådan, se figur 30.

Figur 30. Stegvis montering av mekanik och elektronik.

En liten utmaning var genomföringen av antennsignalerna genom lådväggen. Valet föll till slut på en 12-polig hylslist på RF-kortet med de flesta benen jordade för skärmning och använda en lång stiftlist uppe vid antennerna som fick sticka in via utskrivna hål i lådan. Detta gör monteringen av olika delar enkel och oberoende. Specialkonstruerade lådor utskrivna på 3D-skrivare ger sådana trevliga möjligheter. Att ha kontaktdon mellan antennen och RF-kortet har den extra fördelen att det blir lätt att direkt koppla in en signalgenerator eller nätverksanalysator för att göra mätningar på kortet.

För att få bra läsbarhet på displayen även i solljus valde jag att bygga upp skuggande väggar runt den. Det möjliggör också att man sätter koppartejp runt dessa väggar och förhoppningsvis får lite mindre läckage av störningar via detta nödvändiga hål i skärmningen.

Ratten som styr menysystemet sitter mitt på nederdelen av lådan och under den sitter de fyra membranknapparna. Se figur 31.

Figur 31. Färdigbyggd mottagare

Ytterligare en idé jag lånat från 80m12 är att ha ett handledsband fäst i mottagaren så att man kan släppa den och låta den dingla t.ex. när man vrider in en kompassriktning och ritar bäringar på kartan.

För att få skruvarna att fästa i plasten användes gängade insatser av mässing som värmdes ned i lämpliga hål med hjälp av en lödpenna inställd på knappt 300 grader. Enbart rostfria skruvar användes för att störa magnetometern så lite som möjligt. Även muttrarna till strömbrytare och hörlursuttag valdes för att vara omagnetiska.

Antennerna sitter ihop i en ganska komplex 3D-utskriven modul som håller dem på bra positioner och skyddar mot stötar.

Det hela är såklart inte perfekt vattentätt, men om det väntas regn kan man förbättra situationen något genom att tejpa skarven mellan lådhalvorna.

Nuvarande hölje är utskrivet i materialet PETG, vilket är ganska segt och tåligt. En tidigare version var utskriven i PLA, men den plasten är ganska skör och gick delvis sönder när jag snubblade på en tävling.

Slutord

Med en till stora delar mjukvarubaserad mottagare så går det att införa nya finesser och förbättringar utan omfattande omkonstruktion. Även på hårdvarusidan finns det såklart förbättringar att göra och nuvarande version måste nog ses som en prototyp med förbättringspotential, även om jag i princip uppnått i stort sett allt jag tänkte mig när jag drog igång det här projektet och har tävlat med den med viss framgång.

Att utveckla den här mottagaren har varit lärorikt och kul (och tämligen tidskrävande) och jag hoppas att redogörelsen kan inspirera andra att ta fram nya innovativa pejlmottagare eller låna idéer och lösningar till mer traditionella mottagare.

Referenser

[1] QTC 02/12, SM5CJW, Bo Lenander, ”Bygg en rävsax – 80m12 – för 3,5 MHz”
[2] “Ferrite Antennas for very Low Frequencies, Final Report”, https://www.cia.gov/readingroom/docs/CIA-RDP78-03424A000500010007-0.pdf
[3] Teensy MicroMod, https://www.sparkfun.com/products/16402
[4] Hayward, Campbell, Larkin, “Experimental Methods in RF Design”
[5] QDX från QRP Labs, https://www.qrp-labs.com/qdx.html
[6] Teensy audio med flyttal, https://github.com/chipaudette/OpenAudio_ArduinoLibrary
[7] AudioSDR, https://github.com/DerekRowell/AudioSDR
[8] Iowa Hills filter design source code, https://github.com/hayguen/iowahills_dsp
[9] “Quadratic Interpolation of Spectral Peaks”
https://ccrma.stanford.edu/~jos/sasp/Quadratic_Interpolation_Spectral_Peaks.html
[10] NXP Sensor Fusion (via Adafruit) https://learn.adafruit.com/how-to-fuse-motion-sensor-
data-into-ahrs-orientation-euler-quaternions?view=all