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
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.
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.
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.
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.
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 }
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
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).
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
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
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
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;
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 | }
|
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 | }
|
Noch eine Anmerkung: Warum wird hier dividiert, obwohl man nur multiplizieren müsste? Beachte:
1 | 1 /0.050 = 200.0 |
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.
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; |
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.
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
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.
Ja. Wenn man das Development Board von Analog Devices verwendet. Aber auf einem 2 seitigen, selbstgeaetzten Print, oder Steckbrett ...
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.
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.