Forum: HF, Funk und Felder logarithmischer Detektor AD8362


von BernHF (Gast)


Lesenswert?

Hallo,

ich habe mir ein AD 8362 Power Detektor Modul zugelegt und möchte die 
Ausgangsspannung ( 50 mV/db ) nun mit einem MC mit LCD in dBm anzeigen 
lassen.
Nun zu meiner Frage.
Wie erfolgt die Umrechnung der DC-Spannung in dBm Werte ?

zum Beispiel : 10 MHz mit 63 mVrms und einer Ausgangsspannung von 2.382 
V am Modul entspricht wie viel dBm ?

Hat jemand eine Erklärung für mich ?

Gruß Bernd

von Hp M. (nachtmix)


Lesenswert?

BernHF schrieb:
> 10 MHz mit 63 mVrms und einer Ausgangsspannung von 2.382
> V am Modul entspricht wie viel dBm ?

Das hangt vom Lastwiderstand ab.
0 dbm entspricht 1mW.

von Karl M. (Gast)


Lesenswert?

Hallo Bernd,

Du musst Dich erstmal für eine Eingangsbeschaltung für deinen vorher 
festgelegten Frequenzbereich entscheiden.
Darüber hinaus kann man ein symmetrisches oder asymmetrisches Signal 
einspeisen. Seite 20f

Aus dem Datenblatt erhalten wir einige Richtwerte:
Linear-in-decibels output, scaled 50 mV/dB
Law conformance error of 0.5 dB

Wenn man von diesen Eckdaten ausgeht, legt man ein 0dBm und/ oder -10dBm 
Signal an den Eingang an und legt damit die äquivalente Eingangsspannung 
0dBm/-10dBm fest.
Das kann  z.B. in der Bandmitte des Freqeunzbereichs erfolgen.

Man beachte auch die max. Ausgangsspannung von 4,9V des AD8362 bei max. 
8dBm (Differential) und 0dBm  (Single-Sided) !!!

Hat man also eine richtige Referenzspannung von 5V und 10bit Auslösung, 
so erhält man ~ |10,2|Bit bei jeder Änderung der Eingangsleistung um 
0,5dB .
Dies kann man einfach in ein Tabelle packen - ADC-Messwert/10 --> 
Leistung [0,5dBm] -, um das berechnen zu sparen.

von Karl M. (Gast)


Lesenswert?

Und ja, ich habe mit dem AD8362 solch ein RMS Leistungsmesser für KW 
aufgebaut und einen Atmel AVR eingesetzt und programmiert.

OM Andreas hat seine Erfahrungen hier niedergeschrieben.
# http://www.dl4jal.eu/mwattmeter/mwattmeter.html

Ursprünglich hatte OM DL1ALT einen AD8362 in seinem RMS Leistungsmesser 
verwendet.

von BernHF (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die schnellen Antworten.

Das Modul soll für ein mW-Meter bis ca. 500 MHz sein.
Danke Karl M. für den Link. Genau so etwas soll es werden.
Leider fehlen mir noch die Grundlagen für die Umrechnung
in der Software.

von Karl M. (Gast)


Lesenswert?

Hallo Bernd,

du benötigst ein 0dBm Frequenzgenerator!
Und schaue dir ganz genau die unterschiedlichen Anpassungen für die 
Frequenzbereiche an.

von 0Hz - 500MHz wird nicht ohne weiter Fehler funktionieren !

Der 0dBm Frequenzgenerator gibt dir dann noch einen Bezugspunkt, z.B bei 
-10dBm durch Nutzung eines 10dB Dämfpungsglieds.

Von diesem festen Spannungswert, kann Du dann doch einfach weiter 
rechnen.

Wir wissen: die Skalierung beträgt 50 mV/dB mit einem 10Bit ADC und 
einer Referenzspannung ARef = 5V erhalten wir:
50mV /5000 mv/dB *1023Bit = ~10,2Bit/dB also 10Bit/dB

Daraus folgt: 5Bit/[0.5]dB

"==" bedeutet "entspricht"

Nur zur Darstellung nehmen wir man an:
-10dBm == 900Bit, der ADC-Messwert (Abgeleichwert)

Eine Veränderung der Leistung um +10dB entspricht:
+10dB * 10Bit/dB = +100Bit

Somit folgt:
0dBm = -10dBm +10dB == 900Bit +100Bit = 1000Bit, der ADC-Messwert

Anmerkung, für das Rechnen in die /andere( Richtung:
Du kannst und musst nur in 5Bit Schrittweiten Rechnen,
also rechnet man ADC-Messwert/5 und erhält:

-10dBm == 900Bit, der ADC-Messwert (Abgeleichwert)
-10dBm == 900Bit == 180Bit5 mit neuer Einheit [Bit/5]

Beispiel:
Also der ADC-Messwert beträgt:
"==" bedeutet "entspricht"
500Bit == 100Bit5

Dreisatz:
XdBm/100Bit5 = -10dBm /180Bit5 <==>
XdBm = -10dBm /180Bit5 *100Bit5

XdBm = -5,5dBm
Bei der Division muss man noch passend Runden:
wenn der Rest r:
r = {0 : 0<= r <0.5 // 5 : 0.5<= r <1 }

von BernHF (Gast)


Angehängte Dateien:

Lesenswert?

Hallo  Karl M.

danke für die Ausführliche Erläuterung.
So langsam steige ich dahinter.
Werde Morgen ( heute )mal mit dem Arduino versuchen wie weit
ich komme.

Danke

von Wolfgang (Gast)


Lesenswert?

BernHF schrieb:
> zum Beispiel : 10 MHz mit 63 mVrms und einer Ausgangsspannung von 2.382
> V am Modul entspricht wie viel dBm ?

Die Leistung bezogen auf 1mW (Einheit dBm) hängt nicht von deinem Modul 
ab.

Die Leistung kannst du aus Amplitude (63 mVrms) und dem 
Abschlusswiderstand berechnen (P=U²/R). Ausgehend von diesem Bezugspunkt 
kannst du dann mit der angegebenen Skalierung des Moduls (50 mV/dB) die 
Ausgangsskalierung deines Moduls per Geradengleichung umrechnen, besser 
noch wären vernünftige weitere Kalibrierpunkte (mit Abschwächern).

von Karl M. (Gast)


Lesenswert?

Hallo,

mein Beitrag vom 07.10.2017 00:05 enthält einen großen Fehler,
es war schon zu spät.
Wir rechnen mit logarithmischen Spannungsverhältnissenn 
(Leistungsverhältnissen)...

<copy>
Wir wissen: die Skalierung beträgt 50 mV/dB mit einem 10Bit ADC und
einer Referenzspannung ARef = 5V erhalten wir:
50mV /5000 mv/dB *1023Bit = ~10,2Bit/dB also 10Bit/dB

Daraus folgt: 5Bit /[0.5]dB

"==" bedeutet "entspricht"

Nur zur Darstellung nehmen wir man an:
-10dBm == 900Bit, der ADC-Messwert (Abgleichwert)

Eine Veränderung der Leistung um +10dB entspricht:
+10dB * 10Bit/dB = +100Bit ; Anm. auch die Einheiten muss man beachten.

Somit folgt:
0dBm = -10dBm +10dB == 900Bit +100Bit = 1000Bit, der ADC-Messwert für 
0dBm
</copy>


*Beispiel:*
"==" bedeutet "entspricht"

Ist: scale 10Bit /dB

Angenommen der ADC-Messwert beträgt 500 [Bit]
Gesucht ist die Eingangsleistung X [dBm].

(-10dBm - XdBm) == (900Bit - 500Bit) ==> ;mit scale 10Bit /dB und 
Umstellen

XdBm = -10dBm - 400Bit /(10Bit /dB) <==>
XdBm = -10dBm - 40dB = -50dBm

Beachten muss man aber noch, dass bei der Berechnung von 400Bit 
/(10Bit/dB)
das Ergebnisse nur den Reste 0 oder 5, bedingt durch die Auflösung des 
AD8362, haben kann.

/Also:/ 40,0dB oder 40,5dB.

++++++++++++++++++++++++++++++++++++++++++++++++

Mein Ansatz im Programm war, ich rechne nur mit dem *ADC-Messwert /5* , 
einer neuen Einheit Bit5 und betrachte das letzte Bit, um den Reste 
"0" oder "5" zu wählen.

Ist: scale 10Bit /dB == 2Bit5 /dB

Angenommen:
Abgleichwert: für -10dBm == 900Bit == 180Bit5
ADC-Messwert: beträgt 500 [Bit] == 100Bit5
Gesucht ist die Eingangsleistung X [dBm].

(-10dBm - XdBm) == (900Bit - 500Bit) ==>
(-10dBm - XdBm) == (180Bit5 - 100Bit5) ==> ;mit scale 2Bit5 /dB und 
Umstellen

XdBm = -10dBm - 80Bit5 /(2Bit5 /dB) <==>
XdBm = -10dBm - 40dB = -50dBm

Der Trick besteht nun darin,
den Wert des letzte Bits von 80 [Bit5] zu betrachten, hier 0, und das 
Ergebnis zu berechnen:
80Bit5 /(2Bit5 /dB) = 40dB mit Rest: +0/10dB = 40,0dB
Braucht denn nur Intergerarithmetik.

Wäre der Wert 81 [Bit5], so entspricht dies:
81Bit5 /(2Bit5 /dB) = 40dB mit Rest: +5/10dB = 40,5dB

von Ingo D. (ingo2011)


Lesenswert?

Hi Bernd,

genau wie Nachtmix schrieb:
Hp M. schrieb:
> Das hangt vom Lastwiderstand ab.
> 0 dbm entspricht 1mW.

die daraus resultierende Spannung ist dann deine Referenz, da die 
Ausgangsspannug ja 50mV/dB beträgt , kannst Du dann weiter Rechnen.
Habe sowas auch mal aufgebaut und mal in der Uni vermessen.

http://www.igerlach.de/HFmW/index.html

Musst Du mal ein bisschen nach unten Scrollen. Bin allerdings nicht so 
zufrieden mit meinem Messkopf...

Gruß Ingo

von Karl M. (Gast)


Lesenswert?

Hallo Ingo,

Du meinst sicherlich die Leistungsmessung bis 1GHz.

Ja der AD8362 ist kein Baustein für Breitbandmessköpfe.

In deinem Bild ist aber eine gute Linearität bis ca. 500MHz abzulesen.
Ich hatte meinen bis ins 200Mhz in Betrieb, als Ergänzung für den 
FA-NWT01.

All das ist auch im Datenblatt mit den unterschiedlichen Anpassungen am 
Eingang wieder zu finden.

73

von BerndHF (Gast)


Lesenswert?

Hallo zusammen,

nochmals danke für die Anregungen.Bin dadurch ein Stück weiter
gekommen.

Die angezeigten Werte sind plausibel und stimmen mit den Werten am 
DSA815
überein.
Manchmal ändert sich beim  AD8362 der Wert für 0 dBm von 3,330 Volt in 
4,382 Volt ????
Die Umrechnung habe ich wie folgt gelöst :

[code]
 float volts = atof(v);
   float dBm = (volts - 3.330) / 0.050;
   // volts = A0 minus Referenz für 0 dBm durch 50 mV/dB
   if(dBm < 0) {
       dBm = abs(dBm);
   } else {
       dBm = dBm * -1;
   }
   return dBm;

von Karl M. (Gast)


Lesenswert?

Hallo Bernd,

wo kommt "volts" her ?

Und warum wird da mit float und ohne Bechtung der Auflösung (scale) von 
0,5dB gerechnet.

Und was soll das sein?
1
if(dBm < 0) {
2
  dBm = abs(dBm);
3
} else {
4
  dBm = dBm * -1;
5
}

von Karl M. (Gast)


Lesenswert?

Hallo Bernd,

wo kommt "volts" her ?

Und warum wird da mit float und ohne Beachtung der Auflösung (scale) von 
0,5dB gerechnet.

Und was soll das sein?
1
if(dBm < 0) {
2
  dBm = abs(dBm);
3
} else {
4
  dBm = dBm * -1;
5
}

von Karl M. (Gast)


Lesenswert?

Noch eine Anmerkung:
Warum wird hier dividiert, obwohl man nur multiplizieren müsste?
Beachte:
1
1 /0.050 = 200.0

von BerndHF (Gast)


Lesenswert?

Hallo Karl,



[code]
void loop()
{

dtostrf(analogRead(A0)*(4.988/1023.), 1, 4, v);
   vStr = String(v);
   dBm = getdBm(v);

.......
 float getdBm(char v[20]) {
   float volts = atof(v);
   float dBm = (volts - 4.383) / 0.050;
   // volts = A0 minus Referenz für 0 dBm durch 50 mV/dB
   if(dBm < 0) {
       dBm = abs(dBm);
   } else {
       dBm = dBm * -1;
   }
   return dBm;
 }

Karl M. schrieb:
> Und was soll das sein?if(dBm < 0) {
>   dBm = abs(dBm);
> } else {
>   dBm = dBm * -1;
> }

Für die Unterscheidung pos. dBm  und neg. dBm Wert.

von Wolfgang (Gast)


Lesenswert?

BerndHF schrieb:
> if(dBm < 0) {
>        dBm = abs(dBm);
>    } else {
>        dBm = dBm * -1;
>    }

Warum die implizite Typumwandlung in der Bedingung und nicht
1
if(dBm < 0.0)

Und statt der ganzen if-Konstruktion gleich:
1
dBm = -dBm;
 oder direkt ohne Nachbearbeitung des berechneten Wertes
1
float dBm = (4.383 - volts) / 0.050;

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

BerndHF schrieb:
> dtostrf

dtostrf() würde ich heutzutage nur noch nehmen, wenn der Platz arg
knapp ist, ansonsten ist [s]printf() viel einfacher zu handhaben.

In meinem AD8319-basierten Powermeter habe ich ansonsten vor allem
damit zu tun gehabt, für die einzelnen Frequenzbereiche eine
Newton-Interpolation für das Ergebnis einzurichten.

von Pandur S. (jetztnicht)


Lesenswert?

Es ist aber schon klar, dass diese Logamps breitbandig sind ... Und du 
diesen 65dB  dynamischen Bereich besser vergessen solltest. Wenn du 
nicht wirklich mit dem ganzen Design aufpasst und optimierst ist der 
untere Rand nicht bei -55dBm, sondern bei -20dBm. Das Schaltnetzteil an 
der Speisung wir mitgemessen ! Das Mobilfunkgeraet in der Hosentasche 
wird mitgemessen !

Den spezifizierten Bereich auch zu bekommen bedeutet ein Design, mit 
allem Drumrum speziell darauf ausgerichtet. Also Eingangsfilter, Low 
Noise Speisung, Ausgangsfilter, alles in einem bis mind 3GHz dichten HF 
Gehauese

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Sapperlot W. schrieb:
> alles in einem bis mind 3GHz dichten HF Gehauese

Ach, übertreib' mal nicht.  Das sind ja keine DIP-8-Gehäuse mehr wie
bei den ersten Logamps.  Die Strukturen rundrum sind so klein, dass
die Antennenwirkung der Bauteile entsprechend reduziert ist.  Mein
AD8319-basiertes Powermeter zeigt in Ruhe so um die -63 dBm an.  Wenn
ich das DECT-Telefon direkt daneben lege und etwas machen lasse, dann
kann man kurzzeitig in der Tat eine Einstrahlung sehen, aber das
Mobilofon in der Hosentasche ist schon deutlich weit genug weg.  Signale
werden ab ca. -60 dBm dann einigermaßen sauber, ab -55 dBm völlig
ordentlich angezeigt.

Mit einer ordentlichen Schirmung könnte man da sicher nochmal 3 bis
6 dB rausholen, aber auch so ist das Teil völlig brauchbar.

von Pandur S. (jetztnicht)


Lesenswert?

Ja. Wenn man das Development Board von Analog Devices verwendet. Aber 
auf einem 2 seitigen, selbstgeaetzten Print, oder Steckbrett  ...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Sapperlot W. schrieb:
> Ja. Wenn man das Development Board von Analog Devices verwendet.

Habe ich nicht.

> Aber
> auf einem 2 seitigen, selbstgeaetzten Print,

Zweilagig ja, aber natürlich nicht selbstgeätzt.

> oder Steckbrett  ...

Das mach mal vor mit einem TSSOP mit 0,65 mm Pinabstand.

von Markus W. (dl8mby)


Lesenswert?

> oder Steckbrett  ...

@Jörg Wunsch

> Das mach mal vor mit einem TSSOP mit 0,65 mm Pinabstand.

Dazu nimmt man einen TSSOP/DIL Adapter z.B. von Ebay, siehe
Link, und kann das IC sehr wohl auf ein Steckbrett montieren.

http://www.ebay.de/itm/10-Stuck-SOIC-8-DIP8-Adapter-SMD-0-65-1-27mm-Konverter-SO-8-SOP-8-TSSOP8-PCB-/262788078077?hash=item3d2f63d9fd:g:OAkAAOSwnHZYaW97

Ob das bei diesem Teil sinnvoll ist, ist eine andere Frage.

Markus
DL8MBY

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Markus W. schrieb:
> Ob das bei diesem Teil sinnvoll ist, ist eine andere Frage.

Ja, wer das (hier) tut, der hat irgendwas wohl nicht ganz verstanden. 
;-)

Generell sind diese AD-Logamps meiner Erfahrung nach recht gutmütig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.