www.mikrocontroller.net

Forum: Compiler & IDEs ADC Wert Ausgabe per Software "nachziehen"?


Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich gebe mir auf ein Display etwa 4x pro Sekunde eingelesene ADC Werte 
aus.
Es handelt sich um eine Spannung die in mV ausgegeben wird.

Das klappt soweit nur gibt es einen optischen Schönheitsfehler. Die 
Anzeige springt zwischen

5014
5000
4986

OK 14mV ist wohl meine Auflösung pro ADC Schritt.

Gibt es eine Möglichkeit das die Anzeige sich selber in 1mV Schritten 
"nachzieht"?

5000, 5001, 5002, 5003, 5004, 5005 usw.

Beste Hohoho Grüße, AVRli...

Autor: Klaus De lisson (kolisson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
for i = alter messwert to neuermesswert

print i

next i

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  AVRli (Gast)

>Gibt es eine Möglichkeit das die Anzeige sich selber in 1mV Schritten
>"nachzieht"?

Ja, nennt sich Filter, hier einfach der Mittelwert. Das macht aber deine 
Anzeige langsamer.

MFG
Falk

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRli schrieb:

> Gibt es eine Möglichkeit das die Anzeige sich selber in 1mV Schritten
> "nachzieht"?

Sicher
Mach eine Variable, die enthält den Wert der anzuzeigen ist (die Var ist 
neu), nennen wir sie displayValue
Und dann gibt es noch eine Variable, die den neuen Wert enthält (die Var 
hast du schon), nennen wir sie mal measuredValue

und anstelle dass du wie bisher measuredValue einfach aufs Display 
klatscht ...
   showValue( measuredValue );

... machst du
   if( measuredValue > displayValue )
     displayValue++;

   else if( measuredValue < displayValue )
     displayValue--;

   showValue( displayValue );
und schon führst du den angezeigten Wert schön langsam dem Messwert 
hinterher. Bei groben Sprüngen im Messwert wird es allerdings ratsam 
sein, displayValue gleich in 1 Sprung auf den Messwert zu setzen, sonst 
dauert das Nachführen sehr lange.
   if( measuredValue > displayValue ) {
     if( measuredValue - displayValue > 100 )
       displayValue = measuredValue;
     else
       displayValue++;
   }

   else if( measuredValue < displayValue ) {
     if( displayValue - measuredValue > 100 )
       displayValue = measuredValue;
     else
       displayValue--;
   }

   showValue( displayValue );

Autor: AVRli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist es! TOP

Vielen Dank

Hohoho Gruß, AVRli...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.