projekte:swr-meter_kurzwelle
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
projekte:swr-meter_kurzwelle [2016-12-21 23:09] – danielwf | projekte:swr-meter_kurzwelle [2021-01-31 12:42] – [Messbrücke] snoopy | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== SWR-Meter Kurzwelle ====== | ====== SWR-Meter Kurzwelle ====== | ||
+ | |||
+ | (siehe auch https:// | ||
Für den Funkbetrieb auf Kurzwelle und dem Selbstbau von Antennen ist ein Stehwellen-Messgerät erforderlich. Viele Kurzwellen-Transceiver haben dieses zwar eingebaut, aber die Anzeige-Elemente werden oft auch für andere Messwerte benötigt. Spätestens jedoch bei der Verwendung eines Selbstbaugerätes, | Für den Funkbetrieb auf Kurzwelle und dem Selbstbau von Antennen ist ein Stehwellen-Messgerät erforderlich. Viele Kurzwellen-Transceiver haben dieses zwar eingebaut, aber die Anzeige-Elemente werden oft auch für andere Messwerte benötigt. Spätestens jedoch bei der Verwendung eines Selbstbaugerätes, | ||
Zeile 14: | Zeile 16: | ||
===== Dateien ===== | ===== Dateien ===== | ||
- | Das Zip-Archiv mit Arduino-Code, | + | Das Zip-Archiv mit Arduino-Code, |
Für die Teile der SWR-Messbrücke gibt es einen [[https:// | Für die Teile der SWR-Messbrücke gibt es einen [[https:// | ||
Zeile 22: | Zeile 24: | ||
===== Messbrücke ===== | ===== Messbrücke ===== | ||
- | **Der Aufbau dieses SWR-Meters basiert auf der [[http://dl6gl.de/ | + | **Der Aufbau dieses SWR-Meters basiert auf der [[https:// |
* Der OpAmp TLC272 wird nur mit 5V betrieben (3.8V Arbeitsbereich an den Eingängen) | * Der OpAmp TLC272 wird nur mit 5V betrieben (3.8V Arbeitsbereich an den Eingängen) | ||
Zeile 30: | Zeile 32: | ||
Der Schaltplan, die Platine und die Bestückung sind hier zusammengefasst: | Der Schaltplan, die Platine und die Bestückung sind hier zusammengefasst: | ||
- | // | + | Die bebilderte Anleitung zum Aufbau des Messkopplers |
===== Arduino ===== | ===== Arduino ===== | ||
Zeile 47: | Zeile 49: | ||
Der Arduino-Code ist auch im oben verlinkten Zip-Archiv enthalten. \\ Implentiert wurde ebenfalls die von Georg Latzel, DL6GL beschriebene und für die BAT43 ermittelte [[http:// | Der Arduino-Code ist auch im oben verlinkten Zip-Archiv enthalten. \\ Implentiert wurde ebenfalls die von Georg Latzel, DL6GL beschriebene und für die BAT43 ermittelte [[http:// | ||
- | Wie immer eine kurze Warnung vorab: ich bin kein Programmierer und es gibt die ein oder andere Stelle, die man noch verbessern könnte. Auch wenn der Code gut funktioniert, | + | Wie immer eine kurze Warnung vorab: ich bin kein Programmierer und es gibt die ein oder andere Stelle, die man noch verbessern könnte. Auch wenn der Code gut funktioniert, |
Folgende Parameter sind von jedem selbst noch anzupassen: | Folgende Parameter sind von jedem selbst noch anzupassen: | ||
Zeile 58: | Zeile 60: | ||
* Die Korrektur der Diodenkennlinie lässt sich mit "bool diodeCorr = 0;" ausschalten. Damit ist der angezeigte Wert vergleichbar mit konventionellen analogen SWR-Metern, die diese Korrektur auch nicht vornehmen. Der Wert stimmt dadurch mit den Werten überein, die z.B. auch mein "Yaesu FT-990" | * Die Korrektur der Diodenkennlinie lässt sich mit "bool diodeCorr = 0;" ausschalten. Damit ist der angezeigte Wert vergleichbar mit konventionellen analogen SWR-Metern, die diese Korrektur auch nicht vornehmen. Der Wert stimmt dadurch mit den Werten überein, die z.B. auch mein "Yaesu FT-990" | ||
- | **Arduino-Sketch** | + | **Arduino-Sketch** |
<code c> | <code c> | ||
Zeile 67: | Zeile 69: | ||
// by Daniel Wendt-Fröhlich, | // by Daniel Wendt-Fröhlich, | ||
// " | // " | ||
- | // | + | // |
// | // | ||
// | // | ||
Zeile 94: | Zeile 96: | ||
#include < | #include < | ||
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); | LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); | ||
- | bool DisplayRefresh = 1; | + | bool DisplayRefresh = 1; |
+ | unsigned long printMillis = 0; | ||
+ | unsigned long serialMillis = 0; | ||
// | // | ||
// Configuration | // Configuration | ||
- | int maxPower = 50; // maximum Power in Watt (incl. corrections) , maxPower = (5*N/ | + | int maxPower = 90; // maximum Power in Watt (incl. corrections) , maxPower = (5*N/ |
int swrFpin = 0; // SWR-Coupler Connections | int swrFpin = 0; // SWR-Coupler Connections | ||
int swrRpin = 1; | int swrRpin = 1; | ||
Zeile 140: | Zeile 145: | ||
// than (maxPower * 8 ) * Padc ==> (maxPower * 8 ) * (voltageF² / 50ohm) | // than (maxPower * 8 ) * Padc ==> (maxPower * 8 ) * (voltageF² / 50ohm) | ||
+ | |||
if (diodeCorr == 1) swr = (calcF + calcR) / (calcF - calcR); | if (diodeCorr == 1) swr = (calcF + calcR) / (calcF - calcR); | ||
if (diodeCorr == 0) swr = (areadF + areadR) / (areadF - areadR); | if (diodeCorr == 0) swr = (areadF + areadR) / (areadF - areadR); | ||
} | } | ||
+ | |||
// .----------------------------------------------------------------------------------------------------------------------------------------------------------------. | // .----------------------------------------------------------------------------------------------------------------------------------------------------------------. | ||
Zeile 155: | Zeile 162: | ||
lcd.backlight(); | lcd.backlight(); | ||
lcd.setCursor(4, | lcd.setCursor(4, | ||
- | lcd.setCursor(4, | + | lcd.setCursor(4, |
- | delay(2000); | + | delay(2000); |
- | lcd.clear(); | + | lcd.clear(); |
} | } | ||
Zeile 164: | Zeile 172: | ||
// | LOOP | | // | LOOP | | ||
// ' | // ' | ||
+ | |||
void loop() { | void loop() { | ||
readMeter(); | readMeter(); | ||
- | Serial.print(powerF, | ||
- | Serial.print(" | ||
- | Serial.println(swr, | ||
- | lcd.setCursor(0, | + | |
- | lcd.print(" | + | if (printMillis < millis() ) { |
- | if (powerF< | + | |
- | if (powerF< | + | lcd.print(" |
- | lcd.print(powerF,0); // print power | + | if (powerPeak< |
- | lcd.print(" | + | if (powerPeak< |
+ | lcd.print(powerPeak,0); // print power | ||
+ | lcd.print(" | ||
+ | |||
+ | char wattMeter[7] = " | ||
+ | for (byte i=1; i<=6; i++) { | ||
+ | if (powerPeak > (i * maxPower/7) ) wattMeter[i-1] = (char)0xFF; | ||
+ | } | ||
+ | if (powerPeak > maxPower) wattMeter[6] = ' | ||
+ | lcd.setCursor(9, | ||
+ | | ||
- | char wattMeter[7] = " | + | lcd.setCursor(0, |
- | | + | |
- | if (powerF | + | if (swr > 9.99) {lcd.setCursor(4, |
- | | + | if (swr <= 9.99) {lcd.setCursor(4,1); lcd.print((float)swr, |
- | if (powerF > maxPower) wattMeter[6] | + | |
- | | + | |
- | lcd.setCursor(0, | + | char swrMeter[7] = " |
- | if (swr < 0.1 ) swr = 0; // needed | + | if (swr > 1,2 ) swrMeter[0]=(char)0xFF; |
- | if (swr > 9.99) {lcd.setCursor(4, | + | |
- | if (swr <= 9.99) {lcd.setCursor(4, | + | if (swr > ((i*0.5)+1)){ |
+ | swrMeter[i] = (char)0xFF; | ||
+ | if (3 <= ((i*0.5)+1)) swrMeter[i] = ' | ||
+ | | ||
- | char swrMeter[7] = " | ||
- | if (swr > 1,2 ) swrMeter[0]=(char)0xFF; | ||
- | for (byte i=1; | ||
- | if (swr > ((i*0.5)+1)){ | ||
- | swrMeter[i] = (char)0xFF; | ||
- | if (3 <= ((i*0.5)+1)) swrMeter[i] = ' | ||
} | } | ||
+ | lcd.setCursor(9, | ||
- | } | + | printMillis = millis() + 200; |
- | lcd.setCursor(9,1); lcd.print(swrMeter); | + | |
- | | + | |
+ | if (powerF > 0){ | ||
+ | Serial.print(powerF, | ||
+ | Serial.print(" | ||
+ | Serial.println(swr, | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | | ||
} | } | ||
projekte/swr-meter_kurzwelle.txt · Zuletzt geändert: 2022-11-17 22:34 von 127.0.0.1