RF-Powermeter
- Details
- Zugriffe: 6370
In diesem Beitrag wird der Aufbau eines preisgünstigen Leistungsmessgerätes mit Messmodul von SV1AFN gezeigt. Die recht übersichtliche Hardware besteht aus nur drei einzelnen Baugruppen, einem Arduino UNO, einem Farb-LCD und der Messbaugruppe von Makis, SV1AFN, und ist dadurch schnell aufgebaut.
Der Messbereich erstreckt sich von 1 MHz bis zum 8 GHz-Bereich hinein, bei einer Empfindlichkeit von - 60 dBm ... 0 dBm. Interessant sind auch die Ausgabe-Modi "dBm", "W" und "Peak-Hold" die sich über den Touch-Screen einfach umschalten lassen. In einem weiteren Menü können die Messparameter konfortabel eingestellt werden.
Die hier verwendete Software ist von Dietmar, DL2SBA, entwickelt worden und steht unter RF Powermeter - Firmware 1.9.0 zum Download zur Verfügung. Dort können auch die benötigten Files (HMI und TFT) für das Nextion-Display heruntergeladen werden.
Links ist das RF-Power-Modul (22 x 34,5 mm) von Makis abgebildet. Es basiert auf dem logarithmischen Messwandler AD8318 und einem Analog-Digital-Konverter mit 12 Bit Auflösung (AD7887BRZ). | ||
Die Verdrahtung der drei Module ist auf der Seite von Dietmar übersichtlich dargestellt. | ||
Das verwendete TFT-LCD Touch Display NX3224T024 hat eine Größe von 2,4" und muss zur Verwendung zuerst noch Programmiert werden. | ||
Zur Programmierung des Displays werden die Files aus der NeoNextion Library benötigt. Sie werden mit Hilfe des Nextion Editor auf das Display geladen. Nach der erfolgreichen Programmierung wird dies auf der Anzeige bestätigt. | ||
Der Startbildschirm ist recht einfach gehalten. | ||
Der Testaufbau ist nun soweit abgeschlossen und das RF-Powermeter kann nun Kalibriert werden. | ||
Zur Kalibrierung, in meinem Fall bis 3,3 GHz, wird der SMIQ 03B von R&S verwendet. Hier nochmals meinen Dank an Klaus, DK8TQ, für seine Unterstützung. |
Auf der französischen Seite von Marc, F6ITU, wird die Kalibrierung sehr detailiert beschrieben. Leider wird die Seite mit dem Regressions Tool nicht mehr gefunden, so dass mit Google eine Alternative gesucht werden muss.
In meinem Fall habe ich hierzu mit der Tabellenkalkulation Numbers ein Tabellenblatt entwickelt, welches einem die vielen einzelnen Schritte der Umrechnung der Koefizienten abnimmt und die berechneten Werte als Textfile zur Verfügung stellt. Dieses kann dann einfach an die entsprechende Stelle im Arduino-Sketch hinein kopiert werden.
Die zur Kalibrierung erfassten Pegelwerte, zwischen 0 .. -60 dBm in Stufen von 5 dB, werden durch eine polynominale Regression 3. Grades umgesetzt. Die hierbei errechneten vier Koeffizienten werden dann, je Messbereich, in einem Array, abgelegt.
Kleine Anmerkung zum Speicherbedarf
In den hierzu verwendeten Speicherbereich werden je Messbereich 4 Koefizienten zu je 4 Bytes (float) abgelegt. Daraus ergibt sich der Bedarf von 16 Bytes je Messbereich und entsprechend für 22 Bereiche 352 Bytes.
Dies wird auf der Seite von Marc, F6ITU, anders dargestellt, er geht in seiner Darstellung davon aus, dass je Kalibrierungspunkt (zB. 1 MHz: 0, -5, -10, .. -35, -40, -50, -60 dBm) ein Wert abgelegt wird, also in seinem Fall 11 x 4 = 44 Bytes je Messbereich. Das ist aber nach meiner Meinung nicht korrekt, tatsächlich werden ja nur die berechneten Koeffizienten im ROM abgelegt und das sind dann eben nur die 16 Bytes.
Vorbereitung der Daten zur Kalibrierung
Im Menü "Raw Value" können die Rohwerte für die einzelnen Stützpunkte ausgelesen werden, die dann in das Tabellenblatt übernommen werden.
Koeffizientenberechnung
Zur Berechnung der Stützwerte für die Polynominale Regression wird von folgender Gleichnug ausgegangen, die auch später zur Messwert-Berechnung im Sketch herangezogen wird:
f(x) = a3 * x^3 + a2 * x^2 + a1 * x + a0 |
Am Beispiel der Messreihe für 100 MHz soll das Verfahren aufgezeigt werden. Insgesammt sind je Frequenzbereich 13 Stützpunkte, von 0 dBm .. -60 dBm in 5 dB-Schritten, aufgenommen worden. Daraus ergibt sich der folgende Gleichungsansatz:
Hier sind die 13 Gleichnungen für die einzelnen Stützpunkte angesetzt. |
Als Matrix A * x = b dargestellt, ergibt sich folgendes Bild. |
Zur Lösung wird nun diese Matrix mit ihrer transponierten Form mutipliziert:
A^T * A*x = A^T * b |
Links steht nun das Ergebnis der berechneten Normalengleichung und kann nun mit Hilfe des Gauß-Jordan Algorithmus gelöst werden. |
Die Parameter a3 .. a0 werden nun aus der ausmultiplizierte Matrix mit dem Gauß-Jordan-Algorithmus berechnet.
Die Matrix wird im Gauß-Jordan-Algorithmus nun so umgeformt, dass sich eine Einheitsmatrix ergibt, die dann die Koeffizienten a3 .. a0 als Lösung enthält. |
Auf diese Weise lassen sich nun alle Koeffizienten für die einzelnen Messbereiche ermitteln und auch wie oben schon erwähnt, durch das Tabellenblatt in eine geeignete "Text-Form" umsetzten, die dann einfach in das Array im Sketch kopiert wird.
So sieht das Ergebnis der formatierten Zeile aus, die dann direkt in den Sketch übernommen werden kann. |