Hen over sommeren 2016, har jeg
foretaget nogle eksperimenter, og lavet nogle ændringer i softwaren.
Eksperimenterne er primært gået på, at få MW til at blive så nøjagtig som
det er mig muligt, og her mener jeg, at jeg har vundet en del, ved at lave det
udvendige målehovede, som gør det muligt at have målehovedet helt tæt på
måleobjektet.
Ikke fordi MW er unøjagtig, men fordi der er visse unoder i softwaren, som det
er lykkedes mig at få fjernet, og derfor mener jeg, at denne dokumentation er
nødvendig.
Idéen med, at bruge AREF(EXTERN) er faktisk god nok, og bibeholdes. Det
har dog vist sig, at reference spændingen, som er superstabil med den monterede
stabilitets-enhed AD1403N, er en knap så god idé... og hvorfor så det?
Arduino UNO's AD- converter´s
standard-opløsning er 0-1023 v/ 5 Volt. Når vi ændre AREF- spændingen til f.
eks. 2,5 Volt, kommer vi lidt under den spænding, som AD8307 leverer som MAX-
spænding, ved ca +18 dBm, og regnestykket kommer til at sådan ud:
2,5 / 1023
= 0,00244379... og det ses, at vi her er lidt under AD8307´s
opløsning pr. 0,1 dBm,
Hvis AREF sættes til en anden spænding, f. eks. 2,5575 Volt, ser regnestykket
meget bedre ud:
2,5575 /
1023 = 0,0025, og så har vi sammenfald med AD8307, med 1 decimal efter
kommaet, og dette gør alting meget lettere.
Strømforbruget er mindre end 50 mA for hele MW.
Endelig diagram:
Her er så det ENDELIGE diagram med printudlæg i størrelse 60 x 100.
Bemærkning til
diagrammet.
JP1 er forbindelse til 3-stillings omskifter med neutralt midterstilling.
JP2 forbindels til et analogt måleinstrument 200 uA, og JP3 er forbindelse til
PROBEN.
R6, 3,3 K Ohm er i
printudlægget erstattet med en modstand på 1,8 K samt en trimmer på 2,2 K,
for lettere justering og tilpasning af skalaen til MAX.
Husk at skalaen først bliver justeret på plads, når kontrolleren viser
korrekt i display.
PRINTUDLÆG
Printet har målene 100 x 60 m.m.,
iøvrigt samme mål som display 4 x 16, og passer nogenlunde med, at det kan
sidde lige bag displayet.
SOFTWARE ÆNDRING
Jeg har ved forsøg overbevist mig selv om, at AD8307 er
utrolig præcis over de her 85-90 dB ++, så jeg IKKE nødvendigvis skal lave en
kompliceret beregning, mellem AD8307´s udlæsning, over en spændings-beregning
med justering for det fiktive "NULL-dBm"-punkt, men blot kan bruge ARDUINO
IDE's "map-funktion".
AD8307-proben følger derefter denne linearitet: | Bemærkninger: | |
dBm | AD8307 | |
18 | 1023 | Hvis dBm er positiv: Hvis dBm er
negativ: Herefter deles dBm med 10 så vi får dBm med 1 decimal. Denne udlæsningsmetode kan
KUN benyttes, hvis der er sammenfald mellem det AD8307 Derfor vil det stille krav til stabilitet og nøjagtighed af AD converter´s refferancespænding AREF på 2,5575 Volt, med MINIMUM dobbelt stabiliseret spændingsregulator. |
10 | 932 | |
0 | 832 | |
-10 | 733 | |
-20 | 632 | |
-30 | 532 | |
-40 | 432 | |
-50 | 332 | |
-60 | 232 | |
-70 | 133 |
Det ses af tabellen, at 10 dB springet stort set holde 100 punkter pr. 10 dB, og dermed kan præcisionen holdes med 0,1 dBm, bortset fra den sammentrykning, der er i hver ende af skalaen, men som tidligere nævnt, skal man ikke regne med skalaen under -70 dBm, og over +15 dBm. Misvisningen ved -10 dBm skyldes, med stor sikkerhed, min gamle målesender, en HP8601A Generator/Sweeper, som ikke er blevet kalibreret i mange år. Justering af AREF til 2,5575
Volt For at ændringerne kunne gennemføres, blev routinen "omregn_dBm()" ændret til: |
void omregn_dBm() |
Her kan ses en DEMO-Video af linearitet
Kompensation for fejlvisningen på 1,8 dBm
Der er tilføjet en funktion til
kompensation for frekvensvariationen mellem 0 og 525 MHz som udgør mindre end 2
dBm. Med denne rutine indkoblet, er misvisningen ved frekvenser op til 525 MHz, mindre end 0,5 dBm. Over 525 MHz vil misvisningen stige, og
er ca 3 dBm ved 800 MHz, men er da stadig brugbar, også på højere frekvenser
end 800 MHz. |
//**************************************************** // Kompensation for skiftende frekvens-område //**************************************************** void Kompensation() { val = analogRead(analogPin); // Læs den ANALOGE input pin nyval = int(val/10); // her vil værdien 515 f. eks. blive 51 //lcd.setCursor(13,0); lcd.print(nyval); switch(nyval) { case 48: Komp = 0.3; break; // 0 - 50 MHz, Kompensationsværdi = 0.3 dBm case 65: Komp = 0.7; break; // 50 - 100 MHz case 74: Komp = 1.2; break; // 100 - 250 MHz case 79: Komp = 1.8; break; // 250 - 350 MHz case 82: Komp = 1.8; break; // 350 - 450 MHz case 85: Komp = 1.0; break; // 450 - 525 MHz } } Værdierne for Komp kan ændres, hvis man synes ved kontrollen med en målesender, at tallene skal være anderledes. |
Nu må vi se om vi kan få
produktions-modnet projektet til et byggesæt. |
August 2016, de OZ6YM