Kuvaus
Maailman edullisin dable-vektori-HF-antennianalysaattori! USB-liitäntä ja ilmainen ohjelmisto. Arduino-käyttäjät: lisää vektoriimpedanssianalysaattori ja RF-generaattori projektiisi!
Miksi AA-30.ZERO?
AA-30.ZERO:n luomisessa täytimme radioamatöörien ja tee-se-itse-harrastajien lukuisia toiveita antaa heille mittaustyökalu, joka voidaan helposti integroida omiin projekteihinsa. Analysaattori on saatavana sarjana tämän vaatimuksen täyttämiseksi.
Valmis käytettäväksi
Analysaattorissa on kaikki tarvittava: käyttäjät voivat liittää AA-30.ZERO:n tietokoneeseen (USB-UART-TTL-sovittimen kautta) ja suorittaa kaikki tavalliset laboratoriomittaukset vain viidessä minuutissa. AA-30.ZERO on täysin yhteensopiva AntScope-ohjelmistomme kanssa.
Tee se itse
Kokeneet käyttäjät voivat liittää AA-30.ZERO:n Arduino-levyjen kanssa tehdäkseen oman laitteisto-/ohjelmistoprojektinsa, koska AA-30.ZERO on yhteensopiva Arduino-standardien kanssa. Olemme myös antaneet saataville useita esimerkkejä AA-30.ZERO:n käyttämisestä tee-se-itse-projekteissa.
Lisää ideoita:
Haluatko tehdä oman automaattisen antennivirittimen? Käytä AA-30.ZERO:ta suuntakytkimen tilalle!
Haluatko suorittaa RF-piirejä tai antennianalyysiä etänä? Yhdistä AA-30.ZERO ESP8266 Wi-Fi SoM:n kanssa ja tee se helposti!
Haluatko virittää antennisi ohjatuilla elementeillä? Käytä hienosäätöön AA-30.ZERO.
Hinta & TEHO
Ei ole mahdollisuutta löytää näin tehokasta kilpailijaanalysaattoria niin alhaisella hinnalla. AA-30.ZERO:n avulla radioamatöörien unelmat toteutuvat!
RigExpert AA-30.ZERO – Tekniset tiedot
Taajuusalue: 0,06 - 30 MHz
Taajuussyöttö: 1 Hz resoluutio
Mittaus varten 25, 50, 75 ja 100 ohmin järjestelmät
Asuminen: ei mitään, vain PCB – saatavana sarjana
Näyttö: 4 LEDiä
Tiedonsiirtoliittymä: UART, 38400 baudia
SWR mittausalue: 1-100
R- ja X-alueet: 0…10000, -10000…10000
RF-lähtö
• Liittimen tyyppi: SMA
• Lähtösignaalin muoto: neliö, 0,06 - 30 MHz
• Lähtöteho: +13 dBm (50 ohmin kuormalla)
Tehoa
• Syöttö: ulkoinen 5V
• Virrankulutus (max) 150 mA
Yleisdata
Mitat (L x K x S), vain PCB ilman liittimiä: 55 mm x 69 mm x 5 mm (2,1 x 2,7 x 0,2 tuumaa)
Paino ilman liittimiä: 65 g (2,29 Oz)
Käyttölämpötila: 0…40 °C (32…104 °F)
Aloitus .ZERO:n kanssa
Ennen kuin aloitat.
AA-30.ZERO on tarkoitettu käyttäjille, jotka vaativat joustavuutta, edullisia ja pieniä kokoja. Se tulee ilman sisäänrakennettua USB:tä tai pin-otsikoita, jotta kustannukset pysyvät alhaisina. Se on paras valinta mittausytimelle, jonka haluat jättää upotettuna projektiin.
Huomaa, että AA-30.ZERO toimii 5 V jännitteellä (kuten useimmat Arduino tai Arduino yhteensopiva laudat).
Varmista, että syötät oikeaa tehoa ja käytä komponentteja/sovittimia, joiden käyttöjännite vastaa AA-30.ZERO.
AA-30.ZERO:n liittäminen tietokoneeseen
AA-30.ZERO toimitetaan ilman sisäänrakennettua USB-piiriä, joten kommunikointiin analysaattorin kanssa tulee käyttää ulkoista USB-UART-TTL-sarjamuunninta.
AA-30.ZERO voi kommunikoida muiden laitteiden kanssa kahden sisäänrakennetun UART-liitännän kautta: UART1 (nastat 0/TX1 ja 2/RX1) ja UART2 (nastat 4/TX2 ja 7/RX2). Oletuksena käytetään UART2:ta.
Ensimmäisen projektimme toteuttamiseksi voisimme hankkia esimerkiksi SparkFun USB UART Serial Breakout.
USB2UART-sovitin liitetään AA-30.ZERO-laitteeseen värillisillä johtoilla.
HUOMAA: liitä USB-sovittimen TX-nasta analysaattorin PC-levyn RX-nastaan ja liitä sitten USB-sovittimen RX-nasta analysaattorin TX-nastaan.
Liitä USB2UART tietokoneeseesi tavallisella USB-kaapelilla.
Varmista, että käyttöjärjestelmä tunnistaa USB-UART-sovittimen ja asentaa ohjaimen:
AntScope-ohjelmiston asennus
Ole kiltti lataa AntScope-ohjelmisto, avaa arkisto ja pura tiedostot (alihakemistoineen) työpaikallesi ja suorita sitten AntScope.exe:
Jos AntScope-ohjelmisto ei tunnista AA-30.ZERO:ta automaattisesti, valitse yhdistetyn laitteen tyyppi Configure-valikosta:
Varmista, että COM-portin numero on asetettu oikein:
Onnittelut! Nyt kaikki on valmista ensimmäistä mittausta varten!
Aloita mittaaminen
Liitä AA-30.ZERO antenniisi (tai muuhun kuormaan, jonka haluat mitata) joustavalla kaapelisovittimella ja napsauta sitten valikkorivin alapuolella olevaa Scan range -kuvaketta:
Napsauta Aseta koko alue -painiketta ja napsauta OK aloittaaksesi:
Huomaa PC-levyn vilkkuva LED, jos AA-30.ZERO…
Muutaman sekunnin kuluttua tulos näytetään:
AntScope2 ohjelmisto
Työpöytäohjelmiston uudempi versio, ns AntScope2, on käytettävissä; ohjeet ovat samanlaiset kuin yllä olevat.
AA-30.ZERO:n yhdistäminen Arduino Unoon
Otsikoiden asentaminen
AA-30.ZERO toimitetaan suoraan irrotettavalla päätukisarjalla:
Jos haluat liittää analysaattorisi Arduino-levyyn, sinun tulee ensin juottaa irrotettavat otsikot. Liitä sen jälkeen AA-30.ZERO Arduino-korttiisi:
Pinssin käyttö
- D0 – UART-liitäntä 1, TX, datalähtö
- D1 – UART-liitäntä 1, RX, data sisään
- D4 – UART-liitäntä 2, TX, datalähtö
- D7 – UART-liitäntä 2, RX, data sisään
Voit valita käytettävän UART-liitännän juottamalla uudelleen jumpperit:
Oletusarvoisesti AA-30.ZERO käyttää UART2-liitäntää.
Arduino IDE:n asentaminen ja ensimmäisen projektisi kääntäminen
Kokoa ja suorita hyvin yksinkertainen luonnos Arduino-taulullesi. lataa ja asenna Arduino IDE.
// RigExpert AA-30 ZERO antenni- ja kaapelianalysaattori ja Arduino Uno
//
// Vastaanottaa Arduinosta, lähettää AA-30 ZERO.
// Vastaanottaa AA-30 ZERO, lähettää Arduinoon.
//
// 26. kesäkuuta 2017, Rig Expert Ukraine Ltd.
//
1TP42Sisällytä "SoftwareSerial.h"
#define RX0_Pin 0
#define TX0_Pin 1
#define RX1_Pin 4
#define TX1_Pin 7#määritä HW_SERIAL#ifndef HW_SERIAL
OhjelmistoSerial ZERO(RX1_Pin, TX1_Pin); // RX, TX
#endifmitätön perustaa() {
#ifdef HW_SERIAL
pinMode(RX0_Pin, INPUT);
pinMode(TX0_Pin, OUTPUT);pinMode(RX1_Pin, INPUT);
pinMode(TX1_Pin, OUTPUT);
#else
NOLLA.alkaa(38400); // init AA-puolen UART
NOLLA.huuhtele()
Sarja.alkaa(38400); // käynnistä PC-puolen UART
Sarja.huuhtele();
#endif
}
mitätön silmukka() {
#ifdef HW_SERIAL
//digitalWrite(TX0_Pin, digitalRead(RX1_Pin));
//digitalWrite(TX1_Pin, digitalRead(RX0_Pin));
jos (PIND & (1 << 4)) PORTD |= (1 << 1); muu PORTD &= ~(1 << 1);
jos (PIND & (1 << 0)) PORTD |= (1 << 7); muu PORTD &= ~(1 << 7);
#else
jos (NOLLA.saatavilla()) Sarja.kirjoittaa(NOLLA.lukea()); // datavirta AA:sta PC:lle
jos (Sarja.saatavilla()) NOLLA.kirjoittaa(Sarja.lukea()); // tietovirta PC:ltä AA:lle
#endif
}
Tämä yksinkertainen "sarjatoistin" -koodi tarjoaa kaksisuuntaisen tiedonsiirron tietokoneesi ja analysaattorikortin välillä. Muuten, koska Arduino-kortti toimii nyt toistimena, voit toteuttaa siihen mitä tahansa koodia ja hallita tiedonvaihtoa tietokoneesi ja AA-30.ZERO:n välillä.
Sarjaliikenneprotokolla
Koska AA-30.ZERO tehtiin amatööreille, jotka haluavat aina rakentaa jotain mielenkiintoista, jouduimme huolehtimaan siitä, että analysaattorin käyttäjille annetaan enemmän vapautta.
Alla lueteltujen komentojen avulla et voi vain mitata antenniesi ja kaapeleiden parametreja, vaan myös automatisoida analysaattorisi, esimerkiksi saada se suorittamaan säännöllisiä mittauksia automaattisesti heti virran kytkemisen jälkeen. Tästä voi olla hyötyä esimerkiksi silloin, kun instrumentti on osa monimutkaisempaa järjestelmää, esimerkiksi antenniviritin.
Viestintäprotokolla
Komento | Kuvaus | Vastaus |
---|---|---|
ver | palauttaa analysaattorin tyypin ja laiteohjelmistoversion | AA-30 ZERO XXX |
fqXXXXXXXXX | aseta keskitaajuudeksi XXXXXXXXX Hz | OK |
swXXXXXXXXX | aseta pyyhkäisyalueeksi XXXXXXXXX Hz | OK |
frxNNNN | suorittaa NNNN-mittauksia määritetyllä alueella | lähtötaajuus (MHz), R ja X jokaiselle mittaukselle |
Esimerkki:
SW1000000\r\n
FRX10\r\n14.000000,58.84,17.28\r\n
14.100000, 69.74, 16.79\r\n
14.200000, 68.52, 5.62\r\n
14.300000, 62.49, 2.79\r\n
14.400000,57.51,4.62\r\n
14.500000,55.38,9.11\r\n
14.600000,56.52,13.56\r\n
14.700000, 59.40, 17.41\r\n
14.800000, 64.12, 20.05\r\n
14.900000,71.13,22.01\r\n
15.000000, 81.57, 21.63\r\n
Tietojen visualisointi
Yksi yksinkertaisimmista tavoista visualisoida mittaustuloksia on tehdä oma sovellus
Asenna Processing IDE
Lataa ja asenna ensin Käsitellään IDE:tä. Kun IDE-ohjelmisto on asennettu, kootaan tämä melko yksinkertainen luonnos:
// RigExpert AA-30 ZERO -antenni- ja kaapelianalysaattorille Arduino Unolla
//
// Vastaanottaa tiedot AA-30 ZERO:sta ja tekee pinnan
// joka on SWR:n visualisointi ajan funktiona
//
// 26. kesäkuuta 2017, Rig Expert Ukraine Ltd.
//
tuontikäsittely.sarja.*;Sarja ZERO;
int askel; // Tiedonsiirtoprotokollan vaiheet (0 – aseta taajuus; 1 – aseta alue; 2 – aloita mittaukset)int maxSamples = 100; // Mittauspisteen lukumäärä
int maxSets = 50; // Ajan syvyys
kellua pisteitä[][]; // Mittaustiedot
int näyte; // nykyinen näyte
int aseta; // nykyinen tietojoukko
int värit[]; // käyrän väri
int kaikki yhteensä; // hankitut näytteet yhteensä
boolean valmis; // näyttö piirretty uudelleen, jos tosi
int Taajuus; // nykyinen taajuus
int Alue; // nykyinen alue// Koodi lähettää komennon analysaattorille
mitätön sarjallistaa(Merkkijono cmd) {
int len = cmd.pituus();
int charPos = 0;
sillä aikaa (len— != 0) {
NOLLA.kirjoittaa(cmd.charAt(charPos));
charPos++;
}
}// SWR-laskentatoiminto
// Z0 – Järjestelmän impedanssi (eli 50 50 ohmin järjestelmissä)
// R – mitattu R-arvo
// X – mitattu X-arvo
kellua laske SWR(kellua Z0, kellua R, kellua X) {
kellua SWR, Gamma;
kellua XX = X * X;
kellua nimittäjä = (R + Z0) * (R + Z0) + XX;
jos (nimittäjä == 0) {
palata 1E9;
} muu {
kellua l = (R – Z0) * (R – Z0);
kellua t = (l + XX);
t = t / nimittäjä;
Gamma = sqrt(t); // aina >= 0
// HUOMAUTUS:
// Gamma == -1 täydellinen negatiivinen heijastus, kun linja on oikosulussa
// Gamma == 0 ei heijastusta, kun viiva on täydellisesti sovitettu
// Gamma == +1 täydellinen positiivinen heijastus, kun linja on auki
jos (Gamma == 1.0) {
SWR = 1E9;
} muu {
SWR = (1 + Gamma) / (1 – Gamma);
}
}
// palauttaa arvot
jos ((SWR > 200) || (Gamma > 0.99)) {
SWR = 200;
} muu jos (SWR < 1) {
SWR = 1;
}
palata SWR;
}
mitätön perustaa() {
Taajuus = 115000000;
Alue = 230000000;
näyte = 0;
aseta = –1;
askel = 0;
pisteitä = Uusi kellua[maxSets + 1][maxSamples + 1];
värit = Uusi int[maxSets + 1];
valmis = väärä;
kaikki yhteensä = 0;
tausta(0);
aivohalvaus(120, 240, 255, 255);
lyöntiPaino(1);
koko(640, 480, P3D);
printArray(Sarja.lista());
// Korvaa COM-nimi sellaisella, joka vastaa ehtojasi
NOLLA = Uusi Sarja(Tämä, "COM21", 38400);
NOLLA.puskuriAllenne(13);
viive(1000);
sarjallistaa("SW0\r\n“);
}
mitätön piirrä pinta() {
valmis = väärä;
valot();
kellua sp = 0.001 * frameCount;
kamera((leveys / 3) * synti(sp), 0, 800, leveys / 2, korkeus / 2, 0, 0, 1, 0);
tausta(0, 0, 0);
tekstin koko(30);
täyttää(255, 255, 255);
// —————- Akseli ———————
aivohalvaus(255, 255, 255, 128);
linja(0, korkeus, 0, leveys korkeus, 0);
linja(0, 0, 0, 0, korkeus, 0);
linja(leveys, 0, 0, leveys korkeus, 0);
linja(0, korkeus, 5 * maxSets, 0, korkeus, 0);
linja(leveys / 2, korkeus, 5 * maxSets, leveys / 2, korkeus, 0);
linja(leveys korkeus, 5 * maxSets, leveys, korkeus, 0);
// —————- Taaj. merkit —————-
aivohalvaus(255, 255, 255, 128);
linja(leveys / 2, 0, 0, leveys / 2, korkeus, 0);
textAlign(KESKUSTA);
teksti(Taajuus / 1E3 + ”kHz”, leveys / 2, korkeus, 5 * maxSets);
teksti(((Taajuus / 1E3) – (Alue / 2E3)) + ”kHz”, 0, korkeus, 5 * maxSets);
teksti(((Taajuus / 1E3) + (Alue / 2E3)) + ”kHz”, leveys korkeus, 5 * maxSets);
// —————– Tilan otsikko ——————
textAlign(VASEN);
tekstin koko(36);
teksti("SWR ajan funktiona", 0, –100, 0);
tekstin koko(30);
jos (hiirimäinen < korkeus / 5) {
jos (hiiriX < leveys / 2) {
täyttää(255, 0, 0);
textAlign(OIKEIN);
teksti("F =" + Taajuus / 1E3 + ”kHz”, leveys / 2 – 50, –50, 0);
täyttää(255, 255, 255);
textAlign(VASEN);
teksti("Alue =" + Alue / 1E3 + ”kHz”, leveys / 2 + 50, –50, 0);
} muu {
täyttää(255, 255, 255);
textAlign(OIKEIN);
teksti("F =" + Taajuus / 1E3 + ”kHz”, leveys / 2 – 50, –50, 0);
täyttää(255, 0, 0);
textAlign(VASEN);
teksti("Alue =" + Alue / 1E3 + ”kHz”, leveys / 2 + 50, –50, 0);
}
} muu {
täyttää(255, 255, 255);
textAlign(OIKEIN);
teksti("F =" + Taajuus / 1E3 + ”kHz”, leveys / 2 – 50, –50, 0);
textAlign(VASEN);
teksti("Alue =" + Alue / 1E3 + ”kHz”, leveys / 2 + 50, –50, 0);
}
// Hanki ääripäät
kellua minV = 1E9;
kellua maxV = –1E9;
varten (int i = 0; i < aseta; i++) {
varten (int j = 0; j < maxSamples + 1; j++) {
jos (pisteitä[i][j] > maxV) maxV = pisteitä[i][j];
jos (pisteitä[i][j] > maxV) minV = pisteitä[i][j];
}
}
println("Min =" + minV + "; Max = " + maxV);
minV = 1;
jos (maxV < 2) maxV = 2;
muu jos (maxV < 5) maxV = 5;
muu jos (maxV < 10) maxV = 10;
muu maxV = 100;
kellua hK = leveys / maxSamples;
kellua vK = korkeus / (maxV – minV);
kellua zK = 2;
// —————– Piirrä vaakasuuntaiset merkit —————–
täyttää(255, 255, 255);
textAlign(OIKEIN);
linja(0, korkeus – vK, 0, leveys korkeus – vK, 0); // SWR = 2
teksti("SWR = 2,0", 0, korkeus – vK, 0);
linja(0, korkeus – 2 * vK, 0, leveys korkeus – 2 * vK, 0); // SWR = 3
teksti("SWR = 3,0", 0, korkeus – 2 * vK, 0);
linja(0, korkeus – 4 * vK, 0, leveys korkeus – 4 * vK, 0); // SWR = 5
teksti("SWR = 5,0", 0, korkeus – 4 * vK, 0);
// Piirrä viivat
varten (int i = 0; i < aseta; i++) {
jos (värit[i] % 5 == 0) aivohalvaus(255, 0, 0, 255 * i / aseta);
muu aivohalvaus(120, 240, 255, 255 * i / aseta);
varten (int j = 1; j < maxSamples + 1; j++) {
// arvotaan vain, jos SWR < 100.0
jos (pisteitä[i][j – 1] < 100) {
linja((j – 1) * hK, korkeus – (pisteitä[i][j – 1] – 1) * vK, i * zK, j * hK, korkeus – (pisteitä[i][j] – 1) * vK, i * zK); // Käsittele saapuvat tiedot void serialEvent(Serial p) { String inString; inString = p.readString(); if (inString.indexOf("OK") >= 0) {
}
}
}
} mitätön piirtää() {
jos (valmis) {
piirrä pinta();
}
}
vaihtaa (askel) {
tapaus 0: sarjallistaa("FQ" + Taajuus + “\r\n“);
askel = 1;
tauko;
tapaus 1: sarjallistaa("SW" + Alue + “\r\n“);
askel = 2;
tauko;
tapaus 2: sarjallistaa("FRX" + str(maxSamples) + “\r\n“);
askel = 0;
näyte = 0;
jos (aseta == maxSets) {
// vaihtokäyrät taaksepäin
varten (int i = 1; i < maxSets + 1; i++) {
värit[i – 1] = värit[i];
varten (int j = 0; j < maxSamples + 1; j++) {
pisteitä[i – 1][j] = pisteitä[i][j];
}
}
} muu {
aseta++;
}
värit[aseta] = kaikki yhteensä++;
valmis = totta;
tauko;
}
} muu {
kellua[] numerot = kellua(jakaa(inString, ‘,’));
jos (numerot.pituus == 3) {
kellua SWR = laske SWR(50, numerot[1], numerot[2]);
pisteitä[aseta][näyte] = SWR;
näyte++;
}
}
}
// Muuta taajuuden ja alueen arvoja hiiren rullalla
mitätön hiiren rulla(MouseEvent -tapahtuma) {
kellua e = tapahtuma.getCount();
jos (hiirimäinen < korkeus / 5) {
jos (hiiriX < leveys / 2) { // Muuta taajuutta if (taajuus > 1E5) {
Taajuus += e * 100000;
piirrä pinta();
}
} muu {
// Muuta aluetta
jos (Alue > 1E5) {
Alue += e * 1E5;
piirrä pinta();
}
}
}
}
Tärkeä ilmoitus
Varmista, että tässä käytetään oikeaa COM-numeroa:
Käsittelyluonnoksen suorittaminen
Kun luonnos on kopioitu IDE-editoriin, paina RUN-painiketta:
Muutamaa sekuntia myöhemmin mittaustulokset näkyvät näytölläsi seuraavasti:
Verrataan saatuja piirustuksia AntScope-ohjelman piirtämään kaavioon:
Saadaksesi 100%:n samankaltaisuuden, sinun on leikittävä hieman logaritmisella asteikolla.
Lähdetiedostot, joista aloittaa
Voit ladata lähdetiedostoja osoitteesta GitHub-arkisto.
Meidän ystävämme Edward March (WB9RAA) teki luonnoksen Arduinolle, joka jäsentää F,R,X-linjan ja lisää SWR:n lennossa.
// RigExpert AA-30 ZERO antenni- ja kaapelianalysaattori ja Arduino Uno
//
// Vastaanottaa Arduinosta, lähettää AA-30 ZERO.
// Vastaanottaa AA-30 ZERO, lähettää Arduinoon.
//
// 26. kesäkuuta 2017, Rig Expert Ukraine Ltd.
//
1TP42SisältääOhjelmistoSerial ZERO(4, 7); // RX, TX
//
// Muokattu WB9RAA Toim March
// 6. tammikuuta 2018
//
// puhuu AA-30 Zerolle 38 400 baudilla ja
// tehdä datasta laskentataulukon kuvaajaksi sopivaksi
//
// Lakaise kaikki kinkkunauhat noin 10 000 taajuudella. askeleet
// Laskee SWR:n lennossa, joten jokainen tekstirivi
// lähetetty on: "Freq,R,X,SWR \r\n"
// sekoitetaan myös OK- ja fq sw frx -komentojen kanssa
// Käännetty Arduino IDE 1.8.5:llä
// kokonaispyyhkäisyaika on noin 25 sekuntia 160-10 miljoonan kaistan kohdalla.
//
// Nopeammat kaaviot "frx3":lla kaikilla kaistoilla, joten vain reuna- ja keskitaajuudet tulostetaan.
// Muita ideoita, pyyhkäise 1..30 Mhz ja tulosta vain F,R,X,SWR kun swr on alle 2.0
//int j;
hiiltyä HamBandit[][35] = {
{ “\r\nver\r\n“ } , //0
{ "fq1900000\r\nsw200000\r\nfrx20\r\n“ }, //1{ "fq3750000\r\nsw500000\r\nfrx50\r\n“ }, //2{ "fq5331900\r\nsw2800\r\nfrx3\r\n“ }, //3
{ "fq5347900\r\nsw2800\r\nfrx3\r\n“ }, //4
{ "fq5358900\r\nsw2800\r\nfrx3\r\n“ }, //5
{ "fq5404900\r\nsw2800\r\nfrx3\r\n“ }, //6
{ "fq7150000\r\nsw300000\r\nfrx35\r\n“ }, //7
{ "fq10125000\r\nsw50000\r\nfrx10\r\n“ }, //8
{ "fq14150000\r\nsw300000\r\nfrx30\r\n“ }, //9
{ "fq18118000\r\nsw100000\r\nfrx10\r\n“ }, //10
{ "fq21225000\r\nsw450000\r\nfrx45\r\n“ }, //11
{ "fq24940000\r\nsw100000\r\nfrx10\r\n“ }, //12
{ "fq28985000\r\nsw1970000\r\nfrx50\r\n“ }, //13
{ “” }, // Päätemerkki //14
//
};
mitätön perustaa()
{
NOLLA.alkaa(38400); // init AA-puolen UART
NOLLA.huuhtele();
NOLLA.setTimeout(2500);
Sarja.alkaa(38400); // käynnistä PC-puolen UART
Sarja.huuhtele();
viive(50);
j = 0;
Sarja.println(“\r\n\nAA-30Zero Project Ver.20180107A, Ed March WB9RAA\n“);
Sarja.println(“\nRigExpert 'AA-30 Zero' Antenna Analyzer -analysaattorilla\nSkannaa kaikki 1...30Mhz Ham-kaistat.\nKun olet valmis Suorita uudelleen painamalla /. Muussa tapauksessa kirjoita komennot arvoon AA-30 Zero\n“);
Sarja.println("AA-30 Zero Commands");
Sarja.println("ver : HANKI AA-LAITEOHJELMISTON VERSIO");
Sarja.println(“fq1234567 : SET KESKITAAJUUS HERTZISSÄ esim. fq7150000");
Sarja.println(“sw300000 : SET SWEEP RANGE IN HERTZ ex. sw300000 pyyhkäisee 300 khz alusta loppuun");
Sarja.println(“frx123 : START SWEEPING palauttaa F,R,X Yhteensä 123 riviä. frx3 palauttaa 3 riviä BEGIN,CENTER,END\n“);
}
pitkä tmo = 250;
mitätön silmukka()
{
jos (NOLLA.saatavilla())
{
String s = NOLLA.readStringUntil(‘\n‘);
s.korvata(“\r“, “”);
Sarja.kirjoittaa(s.c_str()); // datavirta AA:sta PC:lle
int i = s.sisällysluettelo(‘,’);
jos (i > 0)
{
// Jäsennä merkkijono floatiksi R & X
i++;
kellua R = s.alamerkkijono(i).kellua();
int ii = s.alamerkkijono(i).sisällysluettelo(‘,’);
kellua X = s.alamerkkijono(i + ii + 1).kellua();
//
// Laske SWR R&X:stä
//
kellua XX = X * X;
kellua Rm = (R – 50) * (R – 50);
kellua Rp = (R + 50) * (R + 50);
kellua N = sqrt(Rm + XX);
kellua D = sqrt(Rp + XX);
kellua G = N / D;
kellua vswr = (1 + G) / (1 – G);
// Koska emme voi tulostaa floatteja, saamme int & murtoluvun INT:nä
// if swr is 4.12 then v1=4 and v2=12 — 1.04 then 1 and 4 printed as 1.04 using %d.%02d
int v1 = vswr;
int v2 = (vswr – v1) * 100;
jos (v1 < 0)
{
v1 = 99;
v2 = 0;
}
hiiltyä z[50];
sprintf(z, “,%d.%02d”, v1, v2); // comput swr merkkijonona
Sarja.kirjoittaa(z); // lisää merkkijonoon
}
Sarja.kirjoittaa(“\r\n“); // ja terninate kuten se oli CR LF:n kanssa
tmo = 250;
}
jos (Sarja.saatavilla())
{
hiiltyä c1 = Sarja.lukea();
jos (c1 == ‘/’)
{
j = 0;
}
muu
{
NOLLA.kirjoittaa(c1); // tietovirta PC:ltä AA:lle
}
tmo = 250;
}
viive(1);
jos (—tmo < 0)
{
jos (HamBandit[j][0] != 0)
{
varten (int i = 0; HamBandit[j][i] != 0; i++)
{
int ch = HamBandit[j][i];
Sarja.kirjoittaa(ch);
NOLLA.kirjoittaa(ch);
jos (ch == ‘\n‘)
{
varten (int d = 0; d < 50; d++)
{
viive(1);
jos (NOLLA.saatavilla())
{
Sarja.kirjoittaa(NOLLA.lukea()); // datavirta AA:sta PC:lle
}
}
}
}
tmo = 250;
j++;
}
}
}
Jatkuu…
RigExpert AA-30.ZERO – Lataukset
Työpöytäohjelmisto
- Kirjoita AntScope-sivu tai AntScope2-sivu.
Käyttöoppaat
- Katso Aloitussivu saadaksesi täydelliset ohjeet analysaattorin käytöstä.
Kaavio ja piirustukset
- Kaavio ja tuoteluettelo.
- PCB piirustukset (TOP ja ALALLA).
Arviot
Tuotearvioita ei vielä ole.