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


von AVRli (Gast)


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...

von Klaus D. (kolisson)


Lesenswert?

for i = alter messwert to neuermesswert

print i

next i

von Falk B. (falk)


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

von Karl H. (kbuchegg)


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 ...
1
   showValue( measuredValue );

... machst du
1
   if( measuredValue > displayValue )
2
     displayValue++;
3
4
   else if( measuredValue < displayValue )
5
     displayValue--;
6
7
   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.
1
   if( measuredValue > displayValue ) {
2
     if( measuredValue - displayValue > 100 )
3
       displayValue = measuredValue;
4
     else
5
       displayValue++;
6
   }
7
8
   else if( measuredValue < displayValue ) {
9
     if( displayValue - measuredValue > 100 )
10
       displayValue = measuredValue;
11
     else
12
       displayValue--;
13
   }
14
15
   showValue( displayValue );

von AVRli (Gast)


Lesenswert?

Das ist es! TOP

Vielen Dank

Hohoho Gruß, AVRli...

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
Noch kein Account? Hier anmelden.