Höchsten Wert ausgeben

Hallo,

erstmal möchte ich mich kurz vorstellen. Meine Name ist Jan und ich bin 42 Jahre alt und vom Beruf Elektriker. Mit dem Arduino habe ich erst vor knapp 2 Wochen angefangen.

Ich komme auch soweit mit klar. Aber an einem Problem sitze ich nun schon fast 3 Tage.

Ich habe mittels einer Formel einen Wert errechnet dieser Wert wird auch korrekt über die serielle Ausgabe gesendet. Das es sich dabei um einen Messprozess von 100 Schritten handelt , habe ich natürlich auch 100 verschieden Werte. Ich möchte aber nun den Max.Wert davon haben und diesen gesondert auf mein Display anzeigen lassen. Wie man das Display ansteuert ist mir klar.

Aber ich schaffe es nicht den Max.Wert heraus zufiltern.

Vielleicht kann mir da jemand helfen?

Hier mal die Formel die ich benutze um an den Wert zu kommen:

" VSWR = (FWD+REV)/(FWD-REV);

r = (VSWR-1)/(VSWR+1);

rl = -20*log10(r); " In der seriellen Ausgabe erscheint auch der korrekte Wert von rl . Das es sich aber um mehrere Werte von rl handelt möchte ich halt den Wert max_rl haben.

Ich habe es damit versucht:

" if ( rl > max_rl ) max_rl = new_rl; new_rl = max_rl;

" Das funktioniert aber scheinbar nicht.

Vielleicht kann mir jemand einen Denkanstoß geben. Danke

Gruß Jan

if ( rl > max_rl ) max_rl = rl;

Sollte an sich schon reichen. Dass beide Variablen vom gleichen Typ sein sollen, ist sicher klar.

if ( rl > max_rl ) max_rl = new_rl; new_rl = max_rl;

Ich glaube hier liegt ein Denkfehler vor. Wenn RL der Meßwert ist und er der (eventuelle) neue Maximal-Wert sein soll, dann muss er doch irgendwie hinterlegt werden ?! So in Sinne von:

if( RL > MAX_RL )
  {
    MAX_RL = RL;
  }

. . . *na toll, sth77 war schneller :)

Man kann aber noch einen draufsetzen: max() ist eine bekannte Funktion auf dem Arduino.

max_rl = max( max_rl, rl );

Guckst du hier:
http://www.arduino.cc/en/Reference/HomePage

Beide Varianten funktionieren auf Anhieb. Danke schon mal dafür. Es gibt nur ein klitzekleines Problem.

Der Maximalwert bleibt nun solange erhalten , bis ich den Arduino von der Spannung weg genommen habe. Das heißt mach ich zum Beispiel 2 Messung hintereinander und bei der 1. Messung wurde schon der höchste Wert erzielt , so bleibt dieser auch nach der 2. Messung stehen.

Vielleicht zur Erläuterung des Projektes.

Man misst das Stehwellenverhältnis einer angeschlossenen Antenne und erhält zb. ein VSWR von 1.005 daraus ergibt sich eine Rückflussdämpfung von 53.97 db . Dieser Wert wird nun auch korrekt angezeigt.

Jetzt messe ich das ganze mit falsch angepasster Antenne und habe ein VSWR von 10.00 daraus ergibt sich eine Rückflussdämpfung von 1.75 db.

Aber auf dem Display bleibt immer noch 53.97 db von der 1. Messung stehen. Das ist natürlich irreführend.

Vielleicht muss ich sagen das die Messung aufgerufen wird mit :

" void Perform_sweep()

"

Gruß Jan

Wenn der Wert auch nach RESET noch bekannt sein soll, musst du ihn im EEPROM speichern.

Dafür gibt es eine Library:
Reference > EEPROM

z.B.:

#include <EEPROM.h>
int EE_Adr = 0;
if( RL > MAX_RL )  {
    MAX_RL = RL;
    EEPROM.write(EE_Adr, MAX_RL);
  }

Und im Setup():
MAX_RL = EEPROM.read(EE_Adr);

... Stehwellenverhältnis ... das kommt mir doch seeeeehr bekannt vor ;)

(aber es stimmt: Werte über das Ausschalten des Arduino hinweg behalten geht nur mit dem eingebauten EEPROM)

73 de RudiDL5

RudiDL5: ... Stehwellenverhältnis ... das kommt mir doch seeeeehr bekannt vor ;)

Na, steht doch oben in der Formel drin.

73 de HotSystems

Der Wert soll nach der erfolgten Messung wieder gelöscht werden. Also nicht speichern oder so.

Gruß Jan

Ah, dann hatte ich das falsch verstanden.

Nun, dann musst du eben, wenn die Messung beendet ist, oder, wenn eine neue Messung beginnt, den Wert zurücksetzen: MAX_RL = 0;

Danke an Alle ,

Problem ist gelöst.

Da der Sketch nun mittlerweile schon 88% des Speicher einnimmt muss ich nun leider aufhören damit.

Obwohl mir da einiges noch vorschwebt. :)

Gruß Jan

Na, steht doch oben in der Formel drin. 73 de HotSystems

Pfffft... VSWR hatte ich wohl im ersten Moment nicht damit in Verbindung gebracht - dat is ja auch schon laaaang her als ich mich damit befasst hatte... :D

73 de RudiDL5

RudiDL5: Pfffft... VSWR hatte ich wohl im ersten Moment nicht damit in Verbindung gebracht - dat is ja auch schon laaaang her als ich mich damit befasst hatte... :D

73 de RudiDL5

Upps... Ich dachte das ist wie Fahrradfahren, verlernt man nie. ;)

Ich dachte das ist wie Fahrradfahren, verlernt man nie. ;)

Och - manchmal muß man doch auch erst mit der Nase auf etwas naheliegendes gestubst werden. Oder glaubst du, dass ich noch eine wirklich tolle Figur mache, wenn ich nach 40 Jahren Autofahrt wieder auf 'n Fahrrad steige??? :D Ach herrjeee...

Jan74: Da der Sketch nun mittlerweile schon 88% des Speicher einnimmt muss ich nun leider aufhören damit.

Obwohl mir da einiges noch vorschwebt. :)

Die 88% musst du erst mal nicht so kritisch sehen, mag sein, dass diese zum großen Teil durch die Einbindung von Bibliotheken zustandekommen und weitere Funktionen deines Projektes dann trotzdem nur weitere 5% ausschöpfen. Beim Optimieren wird dir hier im Forum notfalls auch geholfen.

Die nächste Möglichkeit wäre dann der Wechsel des Unterbaus. Wenn du derzeit mit einem Arduino Uno oder einem vergleichbarem Board unterwegs bist, könntest du auf den Mega2560 umsteigen - damit bist du noch immer in der Arduino-Familie. Springt man weiter zu den 32Bit-Mikrocontrollern, bietet sich schon der Arduino Due an, weiterhin könntest du auch alternative Boards wie einen Teensy 3.1 einsetzen, der hat auch genug Speicher.

Hallo ,

irgendwie würde ich den vorhandenen Sketch noch ausweiten. Es ist ja ein Sketch der durch Funkamateure immer weiter ergänzt wird , wenn jemand eine weitere Idee hat.

Ich habe ja die Rücklaufdämpfung mit in das Program mit einbezogen. Und Dank der Hilfe hier im Forum ist dieser Wert nun auch auf dem Display sichtbar.

Aber es würde mich reizen diesen Wert auch noch auf dem Display zu plotten . Ich denke mir aber das der vorhandene Sketch mal durch geschaut und evtl. ausgedünnt werden müßte damit für die neue Funktion auch Platz ist. Hier ist der jetzige Stand mal als Video Arduino Antenna Analyzer

Der Sketch dazu ist im Anhang zu finden.

Jetzt eine Frage an die Experten ob mein Vorhaben überhaupt Sinn machen würde ?

Und ob jemand Lust hätte dieses zu verwirklichen. Weil ich lerne kerne dazu , aber die Sache mit dem Graphen ist mir zu Hoch :confused:

Gruß Jan DO5JWA

DDS_sweeper2_TFT.ino.ino (12.5 KB)

Mojen Mojen,

ich habe es allein geschafft . Die Rückflussdämpfung wird nun auch als Graph angezeigt. :slight_smile:

Aber vielleicht kann man den Code trotzdem noch abspecken .

Gruß

Jan DO5JWA