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 ;)
cli schrieb: > das Problem Was ist "das Problem"? Dass ich die Anzeige so hektisch ändert, oder dass sich der Wert der Variablen ändert? Das erstere ließe sihc durch ein weniger häufiges Update eledigen...
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
cli schrieb: > Das ist richtig. Allerdings benötige ich die ständige Abfrage Aber eine Anzeige im 0,5 - 1s Takt ist vollkommen ausreichend. Schneller kannst du das ohnehin kaum verarbeiten. Nervig wird es doch erst, wenn sich die letzte Ziffer als unscharfe '8' darstellt.
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?
Vermutlich um eine kurze Latenzzeit zu erreichen. Ein gleitender Mittelwert mit einem Flush bei grossen Änderungen sollte dann das Mittel der Wahl sein.
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)
cli schrieb: > Ich habe am Eingang ein Poti. Mit dem möchte ich genau einstellen. Um mit einem Poti einen Wert genauer als 1% einzustellen, brauchst Du ein sehr gutes Poti (möglichst Mehrgang)und eine ruhige Hand.
Das funktioniert, weil ich nicht auf die letzte Zahl genau einstellen muss. Möchte sie aber trotzdem gern anzeigen
Ein Display was auf User-Eingaben reagiert sollte mit 10-15Hz aktualisiert werden. Um deinen Wert zu beruhigen kannst du ihn mit nem gleitenden Mittelwert über 8 oder 16 Werte glätten.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.