Hallo zusammen! Folgendes: Ich habe einen ADC, welcher einen Druck misst...also er misst natürlich die Spannung des Drucksensors. Problem ist, dass mein Wert ziemlich wackelt. Wie kann ich diesen am besten beruhigen? Wenn ich die Sample-Rate runter stelle, dann wird das Ding schneckenlangsam. Mit einer höheren Sample-Rate und Averaging durch eine bestimmte Zahl an Messwerten bringt auch Zappeln oder Schneckentempo. Aber auch im Schneckentempo springt der Wert, nur halt langsamer. Es ist ein 20-Bit SD-Wandler (den hatte ich grad hier) In einem Metallgehäuse das ganze und sehr weit getrennt von irgendwas digitalem. Klar, Layout macht viel aus, aber was kann ich jetzt tun, um den Wert zu beruhigen?
Hi, der Sigma Delta Wandler benötigt ein Sample&Hold Glied, wenn er noch keines integriert hat. Er bildet den Mittelwert der Eingangsspannung, also wenn die während einer Messung davonläuft dann macht der Käse am Ausgang.
gleitender Mittelwert über eine gewisse anzahl?! oder in der hardware nen leichten pufferkondensator davor, um peaks weg zu filtern.
20 BIT und welche Eingangsspannung wird gemessen ? Beispiel: 0-5 Volt bei 20 BIT = 1048576 Schritte oder anders formuliert: 5V / 1048576 = 4,76 µVolt. Was erwartest du da ? Da gehts dann schon mit dem Layout los, sag jetzt nicht das Ganze ist auf nem Lochraster Board.
20 Bit löst keiner so easy auf. Da zappeln immer die letzten paar Bit.
1275 schrieb: > wenn er noch > keines integriert hat Das ist ein fertigr Wandler für Brückenmessungen. Direkt zum anschließen mit integriertem PGA. Frank Bär schrieb: > In welchem Umfang zappelt der ADC denn? Die Werte liegen im "Nullzustand" zwischen 502764 und 502806. Ich weiß, das ist nicht soooo viel, aber ich seh es auf dem Display und in meinem Stromausgang. Wie könnte ich das los werden?
1275 schrieb: > der Sigma Delta Wandler benötigt ein Sample&Hold Glied Gerade eben nicht. Der ΔΣ-Wandler liefert einen kontinuierlichen Bitstrom. Erst der digitale Filter, der den Bitstrom in einen Wert umrechnet, sorgt für eine Abtastrate.
Bernd N schrieb: > 5V / 1048576 = 4,76 µVolt. Was erwartest du da ? 3V / 1048576 = 2,86uV Mir ist das völlig klar! Und es ist kein Lochraster, nein. Ich suche ja nur nach einer geeigneten Möglichkeit, das ganze nachträglich in Software zu beruhigen, ohne dass die ganze Geschichte extrem langsam wird. Einfach die letzten Stellen abschneiden?
raketenfred schrieb: > gleitender Mittelwert über eine gewisse anzahl?! Also ich habe jetzt eine bestimmte anzahl von messungen und mache da draus den Mittelwert. Aber der SD-Wandler ist ja eh schon ne Schnecke. Momentan liest er mit 10SP/s ein. Da dann noch nen Mittelwert und das Display hinkt. Ich kann die SP/s jetzt hochdrehen, aber das ändert nichts.
>> Einfach die letzten Stellen abschneiden?
So ist es. Wie sinnvoll das ist ergibt sich aber erst aus dem
Zusammenhang. Was willst du messen und wie genau willst du es messen ?
Was soll denn die Anzeige später einmal anzeigen ? Druck in welchen
Schritten ?
Guido schrieb: > Die Werte liegen im "Nullzustand" zwischen 502764 und 502806. Ich weiß, > das ist nicht soooo viel, aber ich seh es auf dem Display und in meinem > Stromausgang. Wie könnte ich das los werden? Bilde einen gleitenden Mittelwert über ~20 Werte, damit kriegst du das weggebügelt.
Am Meßeingang C gegen Masse (von 20 pF bis einigen nF) je nach Geschwindigkeitsanforderung. In der Software entweder einen gleitenden Mittelwert oder besser einen Medianfilter programmieren. Elegant wäre das Mittelwertfilter gleich als Standard FIR-Filter zu programmieren, um die Filtercharakteristik später optimieren zu können.
Du hast ein Rauschen von ca. 120µV. Wie steht es um die Abschirmung des ADCs, der Referenzspannungsquelle und dem Rauschen auf der Refrenzspannung selbst? Der LTC2400 (24bit) ist mit 0,3ppm RMS Rauschen angegeben, das macht bei 5V Referenz 4.2µVpp. Was für einen Wandler hast du denn genau? Guido schrieb: > Einfach die letzten Stellen abschneiden? Kosmetik
> Einfach die letzten Stellen abschneiden?
Das ist auch keine Lösung: stelle dir mal vor, dass der Messwert z.B.
genau auf der Hälfte deines Bereiches liegt.
Es zappelt dann trotzdem...
Auf wie schnelle Änderungen willst du reagieren können? -> passender Tiefpassfilter. Möglichst alle Störquellen deaktivieren (µC - sleepmodi). Wobei alles >15bit schon recht sportlich wird. moving average filter glätten ohne langsamer zu werden.
Paul schrieb: > Am Meßeingang C gegen Masse (von 20 pF bis einigen nF) je nach > Geschwindigkeitsanforderung. Ich habe da einen 1u Kondensator an jedem Eingang
Vielleicht versuchst Du auch mal zu klären ob Du Dir Störung von der Sensor Seite einfängst. Also speise doch mal eine saubere Gleichspannung aus z. B. einer Batterie ein. Vielleicht hast Du aber auch Spikes auf der Versorgungsspannung für die Brücke. Klemm doch mal ein Scope ran.
Luk4s K. schrieb: > Gerade eben nicht. Der ΔΣ-Wandler liefert einen kontinuierlichen > Bitstrom. Erst der digitale Filter, der den Bitstrom in einen Wert > umrechnet, sorgt für eine Abtastrate. Von Abtastrate habe ich auch nichts gesagt.
Exponentieller Average ist ein Ansatz, der kontinuerlich Werte liefert, ohne viel zu Rechnen zu geben.
>> Das ist auch keine Lösung: stelle dir mal vor, dass der Messwert z.B. >> genau auf der Hälfte deines Bereiches liegt. Es ist dann keine Lösung wenn es ohne Sinn und Verstand erfolgt. Ein AD Wandler wandelt immer eine Eingangsgröße in eine Ausgangsgröße. Wenn das mit 16 BIT geht dann kann er die letzten 4 BIT sehrwohl verwerfen. Leider immer noch keine Angaben über die Anzeige und somit ist die Diskussion sinnfrei.
Guido schrieb: > Einen MAX11206 Auf dem Papier sieht der doch schonmal ganz gut aus. Und jetzt noch: Was für eine Refrenzspannungsquelle?
Bernd N schrieb: > Leider immer noch keine Angaben über die Anzeige und somit ist die > Diskussion sinnfrei. Ich würde mir gerne den Druck mit einer Auflösung von 0,1mbar anzeigen lassen. Meine Anzeige schwankt drucklos zwischen -0,5 und + 0,2.
Luk4s K. schrieb: > Guido schrieb: >> Einen MAX11206 > Auf dem Papier sieht der doch schonmal ganz gut aus. > Und jetzt noch: Was für eine Refrenzspannungsquelle? Eine LT1406CIS. Die Initialgenauigkeit ist hierbei egal, da mit dieser Quelle kalibriert wird.
Lars schrieb: > Luk4s K. schrieb: >> Gerade eben nicht. Der ΔΣ-Wandler liefert einen kontinuierlichen >> Bitstrom. Erst der digitale Filter, der den Bitstrom in einen Wert >> umrechnet, sorgt für eine Abtastrate. > > Von Abtastrate habe ich auch nichts gesagt. Doch, ein Sample&Hold impliziert eine Abtastrate.
Guido, wir reden leider immer noch aneinander vorbei. 0,1 mBar verstehe ich aber ich wüßte gerne folgendes: Beispiel: Anzeige von 0-2 Bar, Schrittweite = 0,1 mBar. Welche Eingangsspannung entspricht 2 Bar ? Wie ist der Bereich ausgenutzt ? Kannst du nicht einfach mal alle Daten zusammenhängend herausrücken und dann mal mit z.B. 16 BIT rechen und selbst dabei erkennen ob 16 BIT dafür ausreichen ? UREF ? Dann kann man immer noch Mittelwertbildung, TP etc. in Software angehen. Im ersten Schritt kann man jedenfalls durch einfache Mathematik bestimmen welche Auflösung für die Aufgabe benötigt wird und genau dieses Konzept hätte ich gerne von dir in einem Rutsch.
Guido schrieb: > LT1461CIS, sorry! Die macht ca. 24µVpp Rauschen. Jetzt hast du mehrere Möglichkeiten: Du willst die 20bit voll ausnutzen und suchst die Rauschquelle und eliminierst sie. Oder dir sind die letzten Bits egal und schneidest sie ab. 0,1mBar Auflösung, was ist Fullscale? Was ist dein Drucksensor und wie sieht das Analogfrontend aus?
Bernd N schrieb: > Guido, wir reden leider immer noch aneinander vorbei. OK, also ich habe eine Druckmessung von 0-10bar und möchte diese gerne mit 0,1mbar auflösen. Bei Vollausschlag bekomme ich einen ADC-Wert von 802310 (Brückenspannung am DMS vom Drucksensor) Der PGA steht auf 64, das ist das höchste, was geht, sonst verlässt er den Messbereich vom ADC (der ADC stellt sich die Verstärkung beim Kalibrieren selber ein). Die Referenzspannung beträgt 3,000V
Luk4s K. schrieb: > Was ist dein Drucksensor und wie > sieht das Analogfrontend aus? Es handelt sich um einen keramischen DMS. Die Brückenausgänge gehen je auf einen 1u-C und von da an den ADC, dieser hat Signal-Buffer, um die Quelle nicht zu belasten.
Die Referenzspannung beträgt 3,000V 802310 = 3V ? = 10 Bar ? Besser 1048576 = 3V, will sagen das der Ansatz schon nicht gut ist. Im ersten Schritt würde ich den Sensor so anpassen das 10 Bar auch ca. der Wandler Endpunkt ist und erst dann gehts weiter. Habe ich deine Werte richtig verstanden ?
Guido schrieb: > OK, also ich habe eine Druckmessung von 0-10bar und möchte diese gerne > mit 0,1mbar auflösen. Das sind ca. 16,7bit. bzw. 10ppm. Guido schrieb: > Der PGA steht auf 64 Aha. Dann werden aus den 2,86µV/bit schonmal 45nV/bit. Dann machen deine 42Bits rauschen nur noch 1,8uV aus.
Ja, 6 Stellen z.B. 10.0001 Bar = 16 BIT + 1 also 3 BIT wegwerfen, Anpassung korregieren und Mittelwert bilden. Wenns dann noch wackelt Filter verwenden.
Bernd N schrieb: > 802310 = 3V ? = 10 Bar ? 802310 == 10 bar, nicht 3V! Wi gesagt, der interne PGA kann nur 2^n bis 128, also nichts zwischen 64 und 128. Bernd N schrieb: > Im > ersten Schritt würde ich den Sensor so anpassen das 10 Bar auch ca. der > Wandler Endpunkt ist und erst dann gehts weiter. Externe Beschaltung ist leider nicht drin, der PGA muss das erledigen, daher leider auch keine 100%ige Anpassung ;-\
Wenn ich mich nicht allzusehr verrechnet hab, dann hast du schon das Minimum an Rauschen rausgeholt. Die Kosmetische Beruhigung machst du dann am besten in Software.
Dann betreibst du jetzt die Korrektur eines Designfehlers. Du verwirfst durch die Fehlanpassung schon jede Menge. Der Ansatz ist für ein präzises Messgerät nicht gut. >> Wenn ich mich nicht allzusehr verrechnet hab, dann hast du schon das >> Minimum an Rauschen rausgeholt. Die Kosmetische Beruhigung machst du >> dann am besten in Software. So ist es.
Luk4s K. schrieb: > Wenn ich mich nicht allzusehr verrechnet hab, dann hast du schon das > Minimum an Rauschen rausgeholt. Die Kosmetische Beruhigung machst du > dann am besten in Software. Na jut, Jungs. Dann werde ich erstmal werkeln und mich dann wieder mit dem Resultat melden! Ich danke euch erstmal!
Ein kosmetischer Ansatz könnte folgender Pseudocode sein:
1 | if (measVal > AdcVal) { // Messwert aktuell > vorheriger Messwert ? |
2 | if (measVal - AdcVal > AdcWindow) { // Delta measVal, AdcVal > X mV ? |
3 | AdcVal = measVal; // => Anzeige sofort aktualisieren |
4 | } else { // Delta measVal, AdcVal < X mV ? |
5 | AdcVal += 1; // => Messwert annähern |
6 | }
|
7 | } else if (measVal < AdcVal) { // Messwert aktuell < vorheriger Messwert ? |
8 | if (AdcVal - measVal > AdcWindow) { // Delta measVal, AdcVal > X mV ? |
9 | AdcVal = measVal; // => Anzeige sofort aktualisieren |
10 | } else { // Delta measVal, AdcVal < X mV ? |
11 | AdcVal -= 1; // => Messwert annähern |
12 | }
|
13 | }
|
Hierbei wird eine aktualisierung der Anzeige bei großem Delta sofort erzwungen, bei kleinen Änderungen nähert man sich an. Die Anzeige wird hierdurch träge.
Guido schrieb: > OK, also ich habe eine Druckmessung von 0-10bar und möchte diese gerne > mit 0,1mbar auflösen. 1:100.000, das ist ja schon recht heftig. Bist Du sicher, daß der Sensor überhaupt so hoch auflösen kann? Peter
0,1 mbar Auflösung entspricht bei atmosphärischem Druck etwa einer Höhenänderung von 80cm. Je nach Größe und Form des Volumens, in dem die Messung erfolgt, wird man da schon erkennbare Änderungen des Drucks durch äußere Einflüsse erhalten (vorbeikommendes Fahrzeug/Flugzeug). Edit: Temperaturänderungen nicht zu vergessen.
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.