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


von Controller (Gast)


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.

von max (Gast)


Lesenswert?

meinst du mit stellen 3 bit oder +- 3?

von Controller (Gast)


Lesenswert?

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

von Controller (Gast)


Lesenswert?

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

von max (Gast)


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.

von Bensch (Gast)


Lesenswert?

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

von Controller (Gast)


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.

von Controller (Gast)


Lesenswert?

Ist das ein IIR- Filter?

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

Sieht so aus.

von Anja (Gast)


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.

von Controller (Gast)


Lesenswert?

Also das sieht wirklich nach einem IIR-Filter aus.

von Anja (Gast)


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"

von Anja (Gast)


Lesenswert?

Hallo Controller,

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

von max (Gast)


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! ;)

von Controller (Gast)


Lesenswert?

Ist dies nun ein IIR-Filter?

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

von max (Gast)


Lesenswert?

ja

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.