logarithmischer Detektor AD8362

Gast #5167073
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
Gast #5167087
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.
Gast #5167121
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.
Angehängte Dateien:
Gast #5167147
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 }
Gast #5167240
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).
Gast #5167305
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
#5167519
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
Gast #5167538
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
Gast #5167922
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;
Gast #5167929
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
}
Gast #5167930
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
}
Gast #5167950
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.
Gast #5168268
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;
#5171749
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
Moderator Persönliche Seite #5171777
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.
#5172043
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren