Forum: Mikrocontroller und Digitale Elektronik AD Wert filtern


von Michael (Gast)


Lesenswert?

Hallo,

ich erhalte von einem AD-Wandler einen 24bit Wert.
Die letzten 5 Bits schwanken, also möchte ich den Wert filtern.
Wie geht man am besten vor?

u32 sample;

sample=adwert;

sample=sample>>5;
sample=sample<<5;
return(sample);

oder ist es besser den Wert zu filtern?

static float a,b;

a=((float)sample*0.7)+(b*0.3);
b=a;

return((u32)a);

oder alles quatsch!

von Benedikt K. (benedikt)


Lesenswert?

Michael wrote:
> oder alles quatsch!

Ja !
Die erste Lösung ist Mist, da du Genauigkeit verschenkst, die zweite da 
float viel weniger Genauigkeit hat als long !

static unsigned long wert;
wert=wert-wert/4+sample;
return(wert/4);

Das entspricht in etwa der float Lösung ist aber genauer und um den 
Faktor 100 schneller und etwa 2kByte kleiner.

von Michael (Gast)


Lesenswert?

besten Dank für die schnelle Antwort, werde ich gleich umsetzen.

von Joe (Gast)


Lesenswert?

Brauchst du denn die 24 BIT effektiv ?

Du solltest aus mindestens 8 oder 16 Messungen den Mittelwert bilden. 
Üblicherweise verschafft man sich so die nötige Stabilität.

24 BIT ist schon recht heftig. Werde dir darüber klar welche Auflösung 
du wirklich brauchst. Vielleicht kannst du mal die Meßaufgabe 
beschreiben.

5 Stellen schwanken, auch das ist sehr Viel.

von rene (Gast)


Lesenswert?


von Michael (Gast)


Lesenswert?

Die Lösung von Benedikt funktioniert schon sehr gut.
Laut meiner Berechnung würden 18 Bit der 24 genügen.

von Joe (Gast)


Lesenswert?

Dann kannst du durchaus die überflüssigen BITs herausschieben.

sample = adwert >> 6; aus deinem Beispiel.

Dann mach ne Mittelwertbildung über 32 Messungen und schon ist Ruhe.

Warum 32 ? im Prinzip geht nätürlich 2, 4, 8, 16, 32 ... und dann wieder 
BIT's schieben. Das spart das Rechnen.

von Thomas S. (Gast)


Lesenswert?

Kleine Anmerkung: Was hängt da vorne dran mit 24 Bit ? Ich kenne fast 
nix, was "echte" 24 Bit erzeugt und dies zu messen ist ne ganz andere 
Größenordnung.
Das ganze ist ähnlich wie bei den PC-Lautsprechern mit 1000W PMPO aus 
nem kleinen Steckernetzteil.....:o)
Die Schieberei ließe sich auch als sample &= 0xffffe0; schreiben,
bringt also nix.
Die Filterung (z.B. 0.75*alter + 0.25*neuer) ist angenehmer als 
Mittelwertbildung, da dabei doch ggf. eine ziemliche Verzögerung dazu 
kommt.

Thomas

von Michael (Gast)


Lesenswert?

Hi,

da hängt ein AD7714 mit einem Drucksensor von Motorola dran.
Ich ermittle damit den Druck und kann damit Höhenunterschiede von ca. 
10cm erechnen.

von OliverSo (Gast)


Lesenswert?

>Die letzten 5 Bits schwanken, also möchte ich den Wert filtern.
...

Benötigst du für die 10cm Auflösung 24bit oder 18 bit?

Oliver

von Michael (Gast)


Lesenswert?

Da reichen die 18 Bit.

Gruß Michael

von Obelix (Gast)


Lesenswert?

Schau mal, ob do da nicht auch etwas trixen kannst. Du erwartest doch 
bestimmt keine Spannungen im gesamten Bereich von 0 bis 5V, oder? 
Verschiebe bzw. dehne den Spannungsbereich den du benötigst mit einem 
OPAmp.

von Christian (Guest) (Gast)


Lesenswert?

Wie genau ist den der Sensor ?

KannstDu die Schwankungen alle anschauen?

Wenn ja, ist da eine Systematik drin?

Mitteln bringt-s nur dann, wenn die Störung auch symmetrisch ist,
extremfall:
Wert 0, dann kann der Wert (gemittelt)
nicht >Null sein,
da kleiner 0 der ADU nicht anzeigt, ,-)

24 bit ist schon ein gutes layout, wenn-s klappt,
siehe Applikatiuonen der Hersteller


Gruß, c.

von OliverSo (Gast)


Lesenswert?

>Die erste Lösung ist Mist, da du Genauigkeit verschenkst,

Eigentlich verschenkt er nur den seed für seinen Zufallsgenerator. Wenn 
5 Bits wackeln, was sagen da wohl die unteren 4 noch aus?

Nimm 19 bit, setzt da noch einen mitlaufenden Mittelwert, angepasst an 
die gewünschte Dynamik der Anwendung, drauf (anscheinend misst du ja 
Höhe per Luftdruck  - Boden-Luft-Abfangrakete oder Heißluftballon?). 
Wenn es genauer werden soll, musst du den unteren Bits das wackeln 
abgewöhnen. Am ADC liegt es ja wohl nicht, der hat schon ein SNR von 
137dB. Der Rest der Schaltung auch?

Oliver

von Michael (Gast)


Lesenswert?

das gibt ein Variometer zum Gleitschirmfliegen, die Genauigkeit reicht 
mit 18 Bit aus.

von Michael (Gast)


Lesenswert?

hier ist das Gerät zu sehen:

www.flugvario.de

von Sardaukar (Gast)


Lesenswert?

Bei einem weissen Rauschen ist ein Mittelwertfilter ideal, falls kleine 
Spitzen auftreten, könntest Du die mit einem Media-Filter wegbringen.
Eine Kombination von den beiden ist auch leicht möglich und braucht kaum 
Rechenzeit.

von Unbekannter (Gast)


Lesenswert?

Hmm, da stopfen sich die Gleitschirmflieger und teilweise auch die 
Segelflieger mit Elektronik voll und vergessen das eigentliche Fliegen 
total.

Was nützt ein super-genaues Vario überhaupt? Um effizient zu fliegen 
brauchst Du in erster Linie Erfahrung, Erfahrung und nochmals Erfahrung. 
Ob ein Bart nun mit 2,4 m/s oder 2,4543 m/s geht, ist pieps egal. 
Wichtig ist nur dass er geht und wie weit oben Du raus kommst und ob Du 
die richtigen Bärte erwischt, also nicht bei jedem Pups mit Kurbeln 
anzufangen.

Klar, ein Endanflugrechner ist was nettes, ab auch der nützt herzlich 
wenig, wenn er Dir anzeigt, dass Du mit -200 Meter am Platz rauskommst 
weil Du vor lauter Display ablesen in ein ordentliches Saufen geraten 
bist.

Thermikfliegen muss man im Arsch haben und kann man nicht durch Display 
anglotzen ersetzen. Keine Ahnung wie es bei den Gleitschirmflieger ist, 
aber im Segelflieger meldet der Arsch und die Feinmotorik den Bart weit 
früher als das teuerste E-Vario.

Übung und Erfahrung kann man nicht durch Elektronik ersetzen. Es ist 
übrigens viel spannender und lehrreicher, eine ordentliche 
Streckenplanung am Boden von Hand zu machen und dann hinterher 
kontrollieren, wie gut Theorie und Praxis zusammengepasst hat.

von Michael (Gast)


Lesenswert?

Hallo Unbekannter,

ich gebe Dir in allen Punkten Recht.

Aber versuche mal ein Gerät zu verkaufen, das sich an Konkurenzprodukten 
messen muss und immer verliert.
Auch schon Anfängerflieger die noch nie länger als 30 min. in der Luft 
waren, geschweigeden einen Streckenflug gemacht haben fragen mich nach 
MC Ready und Kartendarstellung, Waypoints.........

Gruß Michael

von Berti (Gast)


Lesenswert?

Windowing ist auch ein Ansatz...

von Falk B. (falk)


Lesenswert?

@ Unbekannter

>Was nützt ein super-genaues Vario überhaupt? Um effizient zu fliegen

Wobei ich mal behaupte, dass ein Variometer nicht mal ansatzweise 18 Bit 
AD-Wandler braucht. Schliesslich misst es nur den Differenzdruck über 
kurze Zeitabschnitte. Mit dem richtigen Differenzdruckgeber + Analogteil 
tuts ein popeliger 8 Bit AD-Wandler.

MfG
Falk

von Obelix (Gast)


Lesenswert?

Welche Drucksensor kommt denn nun genau zum Einsatz?

von Michael (Gast)


Lesenswert?

es ist ein MPX4115.
Natürlich brauche ich nicht die Genauigkeit zur Anzeige des Steigens 
oder Sinkens.
Wenn man aber nicht möchte dass das Vario am Startplatz ständig 
rumpiepst und im Flug einen sauberen Piepton erzeugen möchte braucht man 
schon etwas genauere Werte.

von Ziff (Gast)


Lesenswert?

Was soll das rumgehacke auf den 24bit wandlern. Sie sind standard fuer 
5$. Frueher waren die 7109 gut, heute hat man 24 bit. Wenn dann noch 18 
rauskommen ist doch gut.

von Christian (Guest) (Gast)


Lesenswert?

Ich bin davon ausgegangen, dass er eine
hohe Bitzahl braucht - aber danach sieht es eher nicht
aus
=> "abschneiden" der überflüssigen Bits


Gruß
c.

median:  naja, wenn man 1 1 1 und 3 3 3
hat, kommt nicht 2 raus.
Aber wie gesagt, die Störungen sollten bekannt sein
bzw. ein "Modell" dafür vorliegen.
Median käme auch nicht in Frage, wenn der Senor nahe
am Limit arbeitet.

Das Ergebnis zum Mittelwert dürfte sogar schlechter sein
bei entspr. Störungen (Rauschen), da ich bei den
Werten
1 1 1 2 2 2
gemittelt 1,5 bekommen, ;-)

Das ist vermutl. eh klar.

speed, es ist eine einfaches sortieren + mittleren wert nehmen.
Da kann ggf. der Mittelwert schneller sein !?


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.