Variable entprellen

Gast #4705049
Lesenswert?

Hallo zusammen.

Von meiner ADC Messung bekomme ich eine Variable.
Beispiel: 1234
Diese möchte ich gern auf einem GrafikLCD darstellen. Durch den 
ungenauen ADC Eingang ändert sich die Variable zwischen 1232 - 1236.
Das stört mich ein wenig.

Hat jemand eine Idee, wie man das Problem per einfacher Rechnung beheben 
kann.?



Danke euch ;)
Gast #4705066
Lesenswert?

Lothar M. schrieb:
> Was ist "das Problem"?
> Dass ich die Anzeige so hektisch ändert, oder dass sich der Wert der
> Variablen ändert?

Problem ist, dass sich die Variable so ändert. Die Anzeige der Variable 
folgt ja daraus.

Lothar M. schrieb:
> Das erstere ließe sihc durch ein weniger häufiges Update eledigen...

Das ist richtig. Allerdings benötige ich die ständige Abfrage
#4705075
Lesenswert?

cli schrieb:
> Lothar M. schrieb:
>> Was ist "das Problem"?
>> Dass ich die Anzeige so hektisch ändert, oder dass sich der Wert der
>> Variablen ändert?
>
> Problem ist, dass sich die Variable so ändert. Die Anzeige der Variable
> folgt ja daraus.

Die Frage war aber, welches von beiden jetzt für dich das Problem 
darstellt. Wenn das Problem also ist, dass sich die Variable so ändert, 
würde dich das also auch ohne die Anzeige stören?

> Lothar M. schrieb:
>> Das erstere ließe sihc durch ein weniger häufiges Update eledigen...
>
> Das ist richtig. Allerdings benötige ich die ständige Abfrage

Das verstehe ich nicht. Es stört dich, dass der Wert sich oft ändert, 
aber du brauchst oft einen neuen Wert? Wozu denn, wenn er sich 
zwischendurch nicht ändern soll?
Gast #4705094
Lesenswert?

Ich habe am Eingang ein Poti. Mit dem möchte ich genau einstellen. 
Bedeutet ich möchte nicht immer eine Sekunde warten, bis es mir den Wert 
anzeigt.



Wenn ich fertig bin mit einstllen, quasi die Variable nicht mehr 
verändere, soll die letzte Zahl ziemlich konstant bleiben. Damit es eben 
nicht flackert.


Am besten wäre eine Abfrage im Programm, ob sich der Wert um +-1 oder 2 
verändert oder aber, wenn sich der Wert stärker verändert.
Quasi ab +-3(wenn ich wieder am Poti drehe)
Moderator (Firma: Titel) Persönliche Seite #4705182
Lesenswert?

Harald W. schrieb:
> Um mit einem Poti einen Wert genauer als 1% einzustellen, brauchst
> Du ein sehr gutes Poti (möglichst Mehrgang)und eine ruhige Hand.
Allerdings ist es schon so, dass ich schnell mal 50 oder 53 oder 57 
einstellen könnte, und sich danach ohne Hand am Poti genau dieser Wert 
blieben soll.

cli schrieb:
> Ich habe am Eingang ein Poti. ...
> Wenn ich fertig bin mit einstllen, quasi die Variable nicht mehr
> verändere, soll die letzte Zahl ziemlich konstant bleiben. Damit es eben
> nicht flackert.
Wieviele Bits hast du da im ADC? Bei einem 8 Bit Wandler sollten nicht 
schon die untersten 2 Bit vor sich hinzappeln. Falls doch: wie sieht der 
Aufbau aus?
Was man aber prinzipiell erst mal immer hat, ist dass der Wert zwischen 
2 Zahlen hin- und herhüpft. Das kann man nur beheben, wenn man ein 
"Weiterlaufen" erst erlaubt, wenn der Wert mehr als 2..3 Inkremente 
neben dem aktuellen Wert liegt.
Gast #4705549
Lesenswert?

cli schrieb:
> Durch den
> ungenauen ADC Eingang ändert sich die Variable zwischen 1232 - 1236.

> Am besten wäre eine Abfrage im Programm, ob sich der Wert um +-1 oder 2
> verändert oder aber, wenn sich der Wert stärker verändert.
> Quasi ab +-3(wenn ich wieder am Poti drehe)

Nach dem Baumuster:

LetzteAnzeige = 735
Variable = 0

Schleife
  Meßwert holen
  Variable = Variable + Meßwert
  1 Millisekunde Pause
  Zähler = Zähler plus 1
  und wieder zurück
nach 10 Umläufen:
 Anzeigewert = Variable durch 10
 Variable = 0 nicht veregessen !

-- damit hast Du schon deutlich Ruhe im niederwertigsten Bit.

Wenn
  LetzteAnzeige - Anzeigewert oder Anzeigewert - LetzteAnzeige größer 2 
dann
  Unterroutine "schreibe in Anzeige"
  LetzteAnzeige = Anzeigewert
Ende wenn
-- nur Anzeigen, wenn Abweichun größer als

Mit einem ArduinoNano und I2C-Display schaffe ich damit etwa 30 Zyklen 
pro Sekunde.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren