-
        

Ergebnis 1 bis 5 von 5

Thema: Maximal Wert ermitteln?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627

    Maximal Wert ermitteln?

    Anzeige

    Hallo,
    ich möchte von dem analogeingang den höchsten Wert pro sekunde an ein LCD ausgeben. (MaxWert)

    gibt es da eine Funktion oder wie würdet ihr das machen?

    Meine idee ist etwas umständlich :

    -timer für eine Sekunde laufen lassen,
    -AnalogWert messen und speichern
    -nächsten AnalogWert messen und mit gespeichertem Wert vergleichen
    -wenn neuer wert größer als gespeicherter Wert: Wert ersetzen
    -wenn neuer Wert kleiner als gespeicherter Wert :gespeicherten Wert behalten
    -nächste messung...bin sekunde voll/Timer durchgelaufen
    -wenn sekunde voll gespeicherten Wert auf LCD ausgeben und Speicher auf 0 setzen.

    oder gibt es da vielleicht eine Funktion für?

    Tobias
    ...

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo Tobias,
    deine Methode funktioniert und ist insofern gut, dass zum Ende der Sekunde der max-Wert sofort verfügbar ist.
    In Bascom gibt es ja die Max()-Funktion.
    Dazu musst du aber alle Werte in ein Array speichern und dann am Ende deiner Sekunde aufrufen. Die ist wahrscheinlich schneller, als wenn du es selber in Bascom programmierst. Aber je nachdem wieviele Werte es sind, kann es schon eine kleinere Verzögerung geben.

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Hallo,
    welche metode belastet denn den µC weniger (der soll ja noch etwas neben her machen...)

    wie gebe ich denn wo die Werte von meinem Analogeingang hin?
    Code:
    'Dim some variables
    Dim Wb As Byte , B As Byte
    Dim W(10) As Word   
    
    'fill the word array with values from 1 to 10
    For B = 1 To 10
      W(b) = B
    Next
    
    Print "Max number " ; Max(w(1))
    ...

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo,
    nach deiner Messung schreibst du den Getadc-Wert an die aktuelle Position (also der Index) im Array. Dann erhöhst du aktuelle Position.
    Hast du eigentlich immer eine absolut konstante Anzahl von Messungen pro Sekunde? Ansonsten hast du bei der Max()-Funktion noch das zusätzliche Problem, dass du einerseits dein Array so groß machen musst, wie maximal Messungen kommen könnten.
    Alles Zusatzaufwand gegenüber deiner Methode.
    Wenn es zeitkritisch ist und viele Werte kommen würde ich auf jeden Fall deine Methode vorziehen.

    Zitat Zitat von TobiasBlome
    welche metode belastet denn den µC weniger (der soll ja noch etwas neben her machen...)
    Wie schon geschrieben: Bei deiner Methode verteilst du den Aufwand über die ganze Sekunde und hast den Wert nachher sofort verfügbar. Bei der Max()-Funktion hast du keinen Aufwand während der Sekunde, dafür am Ende jede Menge.
    Wenn die Anzahl der Messungen konstant ist, brauchen beide Methoden dieselbe Anzahl an Vergleichen. Bei variabler Anzahl musst du das Array von oben befüllen, sprich mit dem höchsten Index anfangen. Du kannst bei der Max()-Funktion nämlich das erste Element des Arrays angeben, ab dem das Array druchsucht wird.

    Gruß

    Rolf

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    vielen Dank für die Erklärung,
    dann verteil ich das lieber über eine sekunde
    also ich denke mal das vieleicht 5-10 Messungen / Sekunde ausreichend sind - das kann sicher ein Timer erledigen.
    ...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •