www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD Wert filtern


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
besten Dank für die schnelle Antwort, werde ich gleich umsetzen.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Michael (Gast)
Datum:

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

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da reichen die 18 Bit.

Gruß Michael

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian (Guest) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das gibt ein Variometer zum Gleitschirmfliegen, die Genauigkeit reicht 
mit 18 Bit aus.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier ist das Gerät zu sehen:

www.flugvario.de

Autor: Sardaukar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Berti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Windowing ist auch ein Ansatz...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Drucksensor kommt denn nun genau zum Einsatz?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ziff (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian (Guest) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !?


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.