Salu zusammen
Habe hier mal ne Frage:
Wenn ich einen Sensor, sagen wir z.B. Beschleunigungssensor nehme, sagen
wir mit 14 Bit breite, dann sind ja die untersten paar Bit immer
verrauscht. Kann mir jemand einen Tipp geben wie man dem entgegenwirken
könnte? Klar ist, das das Layout auch seinen Teil dazu beiträgt, da ich
aber als Layouter arbeite, traue ich mir das noch zu. Irgendwann ist
dann aber Schluss mit Layout optimieren. Wie hole ich "mehr Bits" aus
dem Sensor raus die ich gebrauchen kann.
Gruss
PS: Gibt es eine Aussage darüber wieviel ich bei einer Herstellerangabe
von 14 Bit wirklich gebrauchen kann? Will hier keine eindeutige Zahl,
ist ja Sensorabhängig, aber was sagt die Praxis. Bei 14 Bit z.B. immer 2
wegschmeissen? :o)
Wenn das Schaltungsdesign anständig ist, dann sollte höchstens das
unterste Bit "wackeln". Wobei aufgrund externer Störeinflüsse oft die zu
messende Größe bereits verfälscht ist, nach dem Motto "Wer misst, misst
Mist".
Abhilfe schafft hier eine diese externen Störeinflüsse berücksichtigende
Messweise. Bei Gleichspannungssignalen ließe sich über einen ausreichend
langen Zeitraum integrieren oder aber ein Mittelwert über eine
definierte Anzahl von Messungen über einen definierten Messzeitraum
berechnen.
Da das "meiste" Störsignal der Netzbrumm mit 50 Hz ist, empfiehlt es
sich, den Messzeitraum darauf abzugleichen, also über eine ganzzahlige
Anzahl von 20 msec-Intervallen zu messen. Wenn dann die durchgeführten
Messungen gleichmäßig in diesem Messzeitraum untergebracht werden
(beispiel: 32 Messungen in einem 40 msec-Intervall, also alle 1.25
msec), dann fällt bei einer Mittelwertbildung der Netzbrumm recht
effektiv 'raus.
Wird der Mittelwert mittels Integer-Arithmetik gebildet, so sind alle
Messwerte zu summieren und zur Rundungskompensation die halbe
Sampleanzahl hinzuzufügen. Bei 32 Messungen also der Wert 16.
So gebildete Werte sind sehr viel "ruhiger" als die anfallenden
Einzelmesswerte, die bereits bei einem 12-Bit-ADC oft mit mehr als den
unteren 3 Bit "wackeln".
Zu beachten ist noch, daß der ADC genau synchron zum
Prozessor-/Controller-takt angesteuert werden sollte, auch dessen
interner Takt sollte sich auf den Referenztakt beziehen.
Andernfalls können sich das Messergebnis beeinflussende Schwebungen
bilden.
Soll sehr viel schneller gemessen werden, müssen andere
Kompensationsmaßnahmen ergriffen werden. Der Netzbrumm als Hauptstörer
ist aber so gut wie immer vorhanden ...
Soso, Thermometer mit 14 Bit... Welchen Temperaturbereich hast du denn?
Ich gehe mal von 0°C bis 100°C aus. Dann digitalisierst du mit eineer
Auflösung von ungefähr 0,0061°C. Gibt dein Sensor das überhaupt her? An
Eichung, Liearität, Rauuscharmut? Brauchst du das?
virtuPIC
/ggadgets for tools & toys
Vielleicht ist es irgendwo* zu warm, so daß sich irgendwo das Wort
"thermo" quasi automatisch einschmuggelt.
*) oder woanders, jedenfalls dort und nicht hier.
lol also das mit dem Beschleunigungssensor war nur ein Beispiel. Habe
zwar gerade das Prob, aber ob Beschleunigungssensor, Termofühler ect.
ist doch egal. Es geht lediglich darum wenn bereits ein verrauschtes
Signal vorhanden ist, was man dann noch machen kann. Klar sollte man es
immer versuchen zu vermeiden, aber man ist halt nicht alleine auf dieser
Welt (leider :o)
Vielen Dank auf alle Fälle an Rufus! Hast mir nen guten Tipp gegeben!
Merci und en schönes Weekend
@ Thomas Bremer (Firma Druckerei Beste) (virtupic)
>Soso, Thermometer mit 14 Bit... Welchen Temperaturbereich hast du denn?>Ich gehe mal von 0°C bis 100°C aus. Dann digitalisierst du mit eineer>Auflösung von ungefähr 0,0061°C. Gibt dein Sensor das überhaupt her? An>Eichung, Liearität, Rauuscharmut? Brauchst du das?
Ich verklopp Temperaturcontroller, die haben 16bit. Macht fast ein
milliKelvin Aufloesung. Der Witz daran ist nicht die absolute
Genauigkeit, sondern die relative Stabilitaet. Wenn man damit einen
Oszillator stabilisiert, so ist der je nach Charakteristik auf
ein ppm oder so stabil.
digital filtern.
FilterAusgang_long+=(long)FilterEingang-(long)FilterAusgang;
FilterAusgang=FilterAusgang_long/32;
Die "32" geben praktisch die Zeitkonstante des Filters an.
Zahl sollte 1,2,4,8,16,32 ... sein.
1: keine Filterung
2: schnelle Filterung, jedoch noch wenig Filterwirkung
...
256: langsames Filter, gute Filterwirkung.