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.
Ich meine nicht +/- 3Bit, sondern der ausgelesene Wert schwankt so um +/-3.
AREF liegt bei mir auf +5V. Ich habe mal diese Spannung nachgemessen. Sie Versorgungsspannung schwankt so um +/- 0.01.
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.
Sollten die Schwankungen mit 50Hz auftreten, könnte man ja gewisse Schlüsse ziehen- und hätte bereits eine Lösungsmöglichkeit....
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.
Ist das ein IIR- Filter? gefiltert[n]=gefiltert[n-1]*7/8 + neuer_wert/8. Sieht so aus.
>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.
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"
Hallo Controller, Du hast natürlich recht. Ein PT1-Filter ist ein Spezialfall eines IIR-Filters.
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! ;)
Ist dies nun ein IIR-Filter? gefiltert[n]=gefiltert[n-1]*7/8 + neuer_wert/8.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.