HF-Pegelmesser mit AD8307; Berechnung der AVG- und der RMS-Leistung

  • Hallo zusammen,


    wir arbeiten in unserem OV gerade an einem HF-Pegelmesser. Die zu messende Leistung wird einem AD8307 zugeführt, gepuffert und wird dann einem Arduino zugeführt. Ein Touchscreen dient zur Bedienung und zur Anzeige.

    Grundsätzlich funktioniert das auch schon ganz gut (siehe Bild).



    Die Messung läuft zur Zeit so:

    Wir nehmen 320 Messwerte auf und speichern sie in einem Feld. Aus dem Feld ermitteln wir den kleinsten und den höchsten Pegel. Das funktioniert prima.


    Nun meine Frage: natürlich möchten wir auch den Mittelwert und den RMS-Wert anzeigen. Zur Zeit rechne ich die Werte des Feldes wieder in die lineare Ebene zurück, also in Watt und berechne dort die entsprechenden Größen. Das ist aber mit relativ viel Rechenaufwand und damit Zeit verbunden.

    Gibt es hier vielleicht jemanden, der einen eleganteren Weg kennt?

  • Hallo Uwe,


    In welchem Frequenzbereich, soll der AD8307 genutzt werden?

    Wie sieht dazu die Eingangsanpassung aus?

    Welche Genauigkeit und Auflösung wird erwartet?

    Welche Referenz wird bei der ADC Wandlung genutzt?


    Wie wird die RMS Leistung berechnet? Anhand dem Shapefaktor für ein Sinussignal.


    Von welchem Problem "Das ist aber mit relativ viel Rechenaufwand und damit Zeit verbunden." schreibst Du?

    Von 10ms oder 10 Sekunden?

    Der Mensch kann eh nur (max) 4 Werte pro Sekunde registrieren, somit wäre eine Anzeige alle 250 ms völlig ausreichend.


    "Gibt es hier vielleicht jemanden, der einen eleganteren Weg kennt?"


    Ziel ist es ja fmW(dBm) = e ( dBm * ln(10) /10 ); x entspricht der Leistung in dBm zu berechnen.


    Eine Reihenentwicklung für ex nutzen:


    ln(10) ~ 2,302585093

    x = dBm * ln(10) /10


    ex ~ f(x,n) = sum(k,n) x^k /k! ; für k=0 bis n


    n! = 1 * 1* 2 * 3 * ... * n ; n>=0 diese Funktion nennt man Fakultät.

    Auch lässt sich x^n = x* .. * x; mit n-Multiplikationen von x darstellen.


    Mit n=10 erhält man eine ausreichende Näherung, wenn man das Argument x im passenden Bereich wählt.

    D.h. man muss die Argumente für negative Leistungen [dBm] noch nach rechts auf der X-Achse verschieben, so dass die Reihenentwicklung funktioniert.


    Zum spielen hier noch ein Libreoffice-Rechenblatt.
    e-funktion.ods.zip

    73 de Uwe
    DC5PI

  • Hallo Uwe,


    vielen Dank für die rasche Antwort!


    In welchem Frequenzbereich, soll der AD8307 genutzt werden?

    - 100kHz bis 60MHz

    Wie sieht dazu die Eingangsanpassung aus?

    - Eingangsimpedanz: 50 Ohm; Rückflussdämpfung größer als 30dB.

    Welche Genauigkeit und Auflösung wird erwartet?

    - Fehler max. +/- 0,5dB; Auflösung ca. 0,03dB

    Welche Referenz wird bei der ADC Wandlung genutzt?

    - AD-Wandler ist ein MAX11613 (12-Bit) ich verwende die interne 2,048V-Referenz

    Wie wird die RMS Leistung berechnet? Anhand dem Shapefaktor für ein Sinussignal.

    - Ich rechne den dBm-Pegel in die entsprechende Leistung in Watt um. Das mache ich für 320 Werte. Die addiere ich und teile sie durch 320. Bei einer Sinusspannung kommt dann ca. 70% vom Spitzenwert raus.

    Von welchem Problem "Das ist aber mit relativ viel Rechenaufwand und damit Zeit verbunden." schreibst Du?

    Von 10ms oder 10 Sekunden?

    - Es geht schon um Millisekunden. Da ich unten auf dem Display die Hüllkurve abbilden möchte und die Zeiger flüssig anzeigen sollen, strebe ich ein möglichst kurze Zeit für die Berechnung an.


    Vielen Dank für das "Excel-Sheet". Ich muss noch prüfen, ob das so schneller geht... Alternativ habe ich auch einen Hardwareausgang für den Mittelwert. Schöner wäre es aber, alles per Software zu berechnen.


    Nochmals vielen Dank!!!

  • Hallo Uwe,


    ich nehme an, Du willst die Leistung in W grafisch als Kurve darstellen - deshalb die 320 Werte - oder ?

    Ansonsten spricht ja nichts dagegen, zuerst die dBm Werte zu mitteln und dann den einen Wert in W umzurechnen.

    Falls die Leistung in w oder mW grafisch über der Zeit dargestellt werden soll, wäre ein RMS Power Detector (z.B. AD8361) natürlich besser

    um die Berechnung zu vermeiden.

    Allerdings - bei einem 12 bit A/D-Wandler würde ich mir eine Lookup-Table leisten. 4096 Datenworte - soviel Speicher sollte

    heutzutage kein Problem sein. Der A/D-Code ist dann die Adresse und Du liest den vorberechneten Wert direkt aus der Tabelle aus.


    73

    Markus

  • Hallo Markus,


    ja, ich bilde die Hüllkurve unten ab und das sind 320 Pixel.


    Die Idee mit dem Lookup-Table ist sensationell! Das spart einiges an Berechnung! Das werde ich mal testen!


    Ja, ich möchte schon TRMS-Werte anzeigen können, aber ich möchte auch einen großen Dynamikbereich...


    Nochmals vielen Dank!!!


    73 de Uwe, DL4AC

  • Hallo zusammen,


    nochmals vielen Dank für die Unterstützung! In der Zwischenzeit habe ich aber festgestellt, dass der kleine Prozessor (ESP32) auch bei Gleitkommaberechnungen sehr schnell ist und die Messinstrumente und die Hüllkurvenanzeige absolut ruckelfrei bleiben...


    Hier gibt es ein paar Infos zum aktuellen Status des Projektes.