www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wert vom AD-Wandler schwankt


Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende einen Mikrocontroller 90S8535 (ATMEL). Auf diesem 
Mikrocontroller lese ich einen AD-Wert vom AD-Wandler (10Bit Auflösung) 
aus.
Nun ist es so, dass dieser Wert schwankt. So in der Größenordnung +/- 3 
Stellen. An dem AD-Wandler habe ich nun einen Drucksensor (MPX4100) 
angeschlossen. Der Luftdruck schwankt bei mir um +/-2 bzw +/-3 hPa.
Was könnte ich tun um die Schwankungen zu reduzieren? Ich hab mir 
überlegt in Software einen Filter zu implementieren. Einen 
Mittelungsfilter. Für jeden Rat bin ich sehr dankbar.

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst du mit stellen 3 bit oder +- 3?

Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine nicht +/- 3Bit, sondern der ausgelesene Wert schwankt so um 
+/-3.

Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AREF liegt bei mir auf +5V. Ich habe mal diese Spannung nachgemessen. 
Sie Versorgungsspannung schwankt so um +/- 0.01.

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die rechnerische auflösung von einem digit zum nächsten beträgt 5V / 
1024 = 0,0049V. wenn jetzt dein vref schon um 0.01V schwankt kannst du 
dir denken, was passiert! also schön kondensatoren dran oder vref wo 
anderst hier beziehen.

und dann noch die filterung mit nem running average. also entweder sowas 
wie nen ringpuffer und jedes mal mitteln sowas:

gefiltert[n]=gefiltert[n-1]*7/8 + neuer_wert/8.

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollten die Schwankungen mit 50Hz auftreten, könnte man ja gewisse 
Schlüsse ziehen- und hätte bereits eine Lösungsmöglichkeit....

Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Rat. Einen Kondensator am AREF Pin fehlt bei mir noch. Wie 
hoch soll der sein? Ich denke so 100nF müssten reichen. Der 90S8535 hat 
laut Datenblatt keine interne Referenzspannungseinstellung. Bei den 
anderen Typen gibt es sowas. Da kann man dann das ADMUX Register 
entsprechend konfigurieren.

Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das ein IIR- Filter?

gefiltert[n]=gefiltert[n-1]*7/8 + neuer_wert/8.

Sieht so aus.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist das ein IIR- Filter?
>
>gefiltert[n]=gefiltert[n-1]*7/8 + neuer_wert/8.

nein, ist ein PT1-Filter mit Zeitkonstante ca 8*Abtastrate.

Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das sieht wirklich nach einem IIR-Filter aus.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Controller,

Schwankungen in dieser Größenordnung halte ich bei 10 Bit Auflösung als 
nicht normal, es sei denn der Sensor liefert bereits ein derart 
verrauschtes Signal. Ich würde erst mal die Ursache für die Schwankungen 
analysieren.

- Geeigneter Spannungsregler verwendet?
  ich verwende gerne LP2950 oder LP2951 für 10 Bit Auflösung.
- Spannungsregler richtig mit Abblock-Kondensatoren beschaltet?
  100nF bis 1uF am Eingang (je nach Regler) und 100nF + 10uF Elko am 
Ausgang
- Prozessor-Versorgung ausreichent abgeblockt?
  ich verwende hier 100nF parallel zu 10uF an VCC und falls VAREF
  getrennt ist dort ebenfalls nochmals 100nF parallel zu 10uF Tantal.
- Wichtig ist die Verdrahtung der Sensor-Versorgung und Masse.
  Sensorversorgung direkt an VAREF des Prozessors ohne irgende 
Abzweigung an
  andere Schaltungsteile (Sternverdrahtung)
  Den Sensor-Gnd ebenfalls direkt an Analog-Gnd des Prozessors 
(Sternpunkt)
- Falls der Sensor es verträgt an der Signalleitung nochmals direkt am 
Analogeingang des Prozessors 10-100nF einbauen. notfalls mit einem 
Serienwiderstand von maximal 10k-Ohm.

Erst wenn das alles nicht hilft würde ich in der Software filtern.
Eine andere beliebte Methode ist z.B.
6 Meßwerte aufnehmen.
nach Größe Sortieren.
kleinsten und Größten Meßwert wegwerfen.
Mittelwert aus den 4 verbliebenen Werten bilden.

Diese Methode hilft natürlich nur wenn gelegentlich ein falscher Meßwert 
dabei ist. Wenn alle Meßwerte verrauscht sind ist ein PT1-Filter 
vermutlich besser.
Die 7/8 oben kann man übrigens mit einfachen Schiebebefehlen berechnen.
7/8 = "1 - 1/8" = "Wert - Wert >> 3"

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Controller,

Du hast natürlich recht.
Ein PT1-Filter ist ein Spezialfall eines IIR-Filters.

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde auch behaupten, dass es wegen der rückkopplung ein IIR-filter 
ist.
FIR wäre dann der von mir vorher vorgeschlagene ringpuffer.

bei den problemen mit der versorgungsspannung wundert es mich eh, dass 
der messwert nur um +-3 stellen schwankt! ;)

Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist dies nun ein IIR-Filter?

gefiltert[n]=gefiltert[n-1]*7/8 + neuer_wert/8.

Autor: max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja

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.