Hallo,
Ich wollte vergleichen, wie genau ein 12-Bit AD-Wandler ist. Die
Umwandlungen des AD-Wandlers (MCP3204) sind wie folgt:
result_12 =result; für 12 Bit Umwandlung
result_10= result>>2; für 10 Bit Umwandlung, dabei 2 LSB-Bits gelöscht
result_8= result>>4; für 8 Bit Umwandlung, dabei 4 LSB-Bits gelöscht
die Ergebnisse ...:
8-Bit Istwert, 10-Bit Istwert, 12 Bit Istwert, ....
,126 ,505 ,2021,2,-2,0,1348;
,126 ,505 ,2020,2,-2,0,1192;
,126 ,505 ,2020,2,-2,0,1196;
,126 ,505 ,2021,2,-2,0,1196;
,126 ,505 ,2020,2,-2,0,1196;
,125 ,503 ,2013,1,-2,-1,1348;
,125 ,502 ,2010,1,-2,-1,1344;
,125 ,501 ,2005,0,0,0,1188;
,125 ,500 ,2002,0,0,0,1188;
,125 ,500 ,2001,0,0,0,1192;
,125 ,500 ,2001,0,0,0,1188;
,125 ,500 ,2000,0,0,0,1184;
,125 ,500 ,2000,0,0,0,1184;
...
...
Die Ergebnisse sind in einem Diagramm im Anhang dargestellt. Ich konnte
nicht feststellen, dass es unterschied gibt. macht viel sinn, einen
12-Bit AD- Wandler zu verwenden. bin verwirrt, ist mein Vergleich so
richtig ? am Ende werden 4 LSB-Bits gelöscht, die keinen signifikanten
Einfluss. Danke
Ich bekomme Ergebnisse von MCP3204, der mit einer Referenzspannung von
5.05 V. Ein 8-Bit und 10 Bit-Wandler habe ich nicht, werden per Software
durch löschen 2 bzw. 4 LSB-Bits berechnet.
Ali A. schrieb:> Ein 8-Bit und 10 Bit-Wandler habe ich nicht, werden per Software> durch löschen 2 bzw. 4 LSB-Bits berechnet.
Das ist aber etwas anderes, als wenn du einen auf 8 Bit spezifizierten
Wandler benutzt. Ein 12 Bit Wandler, auch wenn du das Ergebnis auf 8 Bit
reduzierst, ist i.A. einen Faktor 16 genauer als ein 8 Bit Wandler.
Das Problem - du kannst dich auf die untersten 2 Bits nicht verlassen.
Bei einem 8Bit Wandler hast du nur 6 "richtige" Bits.
Wenn du von einem 12 Bit Wandler 4 Bit weg wirfst, bleiben 8 "richtige"
Bits übrig.
Wolfgang schrieb:> Ali A. schrieb:>> Ein 8-Bit und 10 Bit-Wandler habe ich nicht, werden per Software>> durch löschen 2 bzw. 4 LSB-Bits berechnet.>> Das ist aber etwas anderes, als wenn du einen auf 8 Bit spezifizierten> Wandler benutzt. Ein 12 Bit Wandler, auch wenn du das Ergebnis auf 8 Bit> reduzierst, ist i.A. einen Faktor 16 genauer als ein 8 Bit Wandler.
?
Nein, warum sollte das so sein?
Noch einer (Gast) schrieb in Beitrag #4931588
> Das Problem - du kannst dich auf die untersten 2 Bits nicht verlassen.> Bei einem 8Bit Wandler hast du nur 6 "richtige" Bits.
?
Auch nein, warum sollte das so sein?
Ali A. schrieb:> Ich wollte vergleichen, wie genau ein 12-Bit AD-Wandler ist. Die> Umwandlungen des AD-Wandlers (MCP3204) sind wie folgt
Nur mal aus Interesse: dieser MCP3204 kostet 3 EUR und kann bei 12-bit
100 ksps. Dazu noch die Kosten für den uC z.B. AVR
Ein 8051 uC EFM8BB mit integriertem 12-bit 100 ksps ADC mit DMA kostet
nur 1 EUR und EFM8LB mit 14-bit 1 Msps ADC 1.50 EUR
Sven B. schrieb:> ?> Nein, warum sollte das so sein?
Bei einem ADC sind die Fehler der Wandlerkennlinie üblicherweise auf die
Anzahl der Bits abgestimt, d.h. die Fehler der Kennlinie sind
vergleichbar, wenn man sie in LSB misst. Insbesondere betrifft dies
die differentielle Nichtlinearität und integrale Nichtlinearität.
Bezogen auf den Wandlerbereich sind sie beim 12Bit-Wandler i.A. einen
Faktor 16 kleinen, als beim 8Bit-Wandler. Einzig der
Quantisierungsfehler wird durch die Bitschieberei eines
12Bit-Ergebnisses auf 8Bit rüber skaliert.
Ali A. schrieb:> Ich konnte> nicht feststellen, dass es unterschied gibt.
Wenn Du die Glättungsfunktion von Deiner Grafiksoftware mal abschaltest,
siehst Du ihn besser ...
Gruß
Jobst
Ali A. schrieb:> Ich konnte nicht feststellen, dass es unterschied gibt.
Ich schon. Im der Ausschnittsvergrößerung (unteres Diagramm) ist das
schon gleich beim ersten Wert (ganz links) deutlich zu erkennen. Die
blaue Kurve (8 Bit) liegt hier mindestens um 12 Einheiten unterhalb der
gelben (12 Bit). Wenn du den Ausschnitt weiter verghrößerst, kannst du
das noch besser erkennen.
> am Ende werden 4 LSB-Bits gelöscht, die keinen signifikanten Einfluss.
Der mit 16 multiplizierte 8-Bit-Wert kann vom 12-Bit-Wert um bis zu
15 abweichen.
Auch in dem von dir geposteten Ausschnitt aus der Datenreihe gibt es
z.T. starke Abweichungen:
Ali A. schrieb:> ...> ,125 ,503 ,2013,1,-2,-1,1348;> ...
Die 125 auf 12 Bit hochgerechnet ergeben 2000, was immerhin um 13
Einheiten unterhalb des "echten" 12-Bit-Werts (2013) liegt.
Jobst M. schrieb:> Wenn Du die Glättungsfunktion von Deiner Grafiksoftware mal abschaltest,> siehst Du ihn besser ...
Da ist nichts geglättet. Die Kurven sehen nur durch das Anti-Aliasing
und die JPEG-Komprimierung etwas verwaschen aus.
Lothar schrieb:> EFM8LB mit 14-bit 1 Msps
Vielen Dank für den Tip :-) - es sind lt. Datenblatt 900 ksps (wenn ich
richtig gelesen habe) aber das ist genau das, was ich suche - und dazu
noch richtig günstig.
Mal schauen, was man dafür an Entwicklungsumgebung so braucht.
Ali A. schrieb:> Ich konnte nicht feststellen, dass es unterschied gibt.
In einer Graphik der direkten Messdaten wirst du den Unterschied
zwischen 8 und 12 Bit kaum sehen können. Überleg dir mal, wieviele
(12Bit-LSB) deine Linienstärke beträgt. Du musst schon direkt die
Abweichungen plotten, damit du den Unterschied 8/10 und 12-Bit
vernünftig sehen kannst.
Dieter F. schrieb:> EFM8LB mit 14-bit 1 Msps
Das Eval-Board SLSTK2030A mit J-Link Debugger LCD und
Expansion-Connector kostet ca. 30 EUR. Die Einzel-Chips haben einen
UART-Bootloader hierfür braucht es ein USB-seriell Kabel mit 3.3V
Flashen mit Python-Skript
Wolfgang schrieb:> Sven B. schrieb:>> ?>> Nein, warum sollte das so sein?>> Bei einem ADC sind die Fehler der Wandlerkennlinie üblicherweise auf die> Anzahl der Bits abgestimt, d.h. die Fehler der Kennlinie sind> vergleichbar, wenn man sie in LSB misst. Insbesondere betrifft dies> die differentielle Nichtlinearität und integrale Nichtlinearität.> Bezogen auf den Wandlerbereich sind sie beim 12Bit-Wandler i.A. einen> Faktor 16 kleinen, als beim 8Bit-Wandler. Einzig der> Quantisierungsfehler wird durch die Bitschieberei eines> 12Bit-Ergebnisses auf 8Bit rüber skaliert.
Aber die Fehler sind doch so, dass sie z.B. 1 LSB oder 0.5 LSB oder so
sind. Dann hat der 8-Bit-Wandler 7.5 richtige Bits, und der
12-Bit-Wandler hat 11.5. Wenn du jetzt von dem 12-Bit 4 wegnimmst, hast
du noch 8 richtige Bits, bei dem 8-Bit hast du 7.5. Das ist kein Faktor
16, sondern ein Faktor 1.4 oder sowas in der Richtung.
Dazu kommt noch, dass bei einer gut gewählten Wandlerauflösung zumindest
das letzte Bit sowieso ähnlich ist wie das Rauschen auf dem Signal, und
dann ist die Überlegung eh hinfällig ...
Also die Aussage "ein 12-Bit Wandler ist um einen Faktor 16 genauer,
auch wenn ich nur die 8 MSB an schaue, als ein 8-Bit-Wandler" ist m.E.
jedenfalls komisch bis falsch, deshalb habe ich mich beklagt.
Lothar schrieb:> Das Eval-Board SLSTK2030A mit J-Link Debugger LCD und> Expansion-Connector kostet ca. 30 EUR. Die Einzel-Chips haben einen> UART-Bootloader hierfür braucht es ein USB-seriell Kabel mit 3.3V> Flashen mit Python-Skript
Ja, danke - habe das Teil bei rs-online gefunden :-)
Sven B. schrieb:> Also die Aussage "ein 12-Bit Wandler ist um einen Faktor 16 genauer,> auch wenn ich nur die 8 MSB an schaue, als ein 8-Bit-Wandler" ist m.E.> jedenfalls komisch bis falsch, deshalb habe ich mich beklagt.
Es geht um die (mögliche) Auflösung - hier ein Beispiel mit 12, 10 und 8
Bit für die ersten 100 Werte, wenn man die volle Auflösung der 12 Bit
entsprechend mit 10 oder 8 Bit Genauigkeit liest (rein rechnerisch - in
Excel). Alles eine Frage der Darstellung :-)
Sven B. schrieb:> Wenn du jetzt von dem 12-Bit 4 wegnimmst, hast> du noch 8 richtige Bits, bei dem 8-Bit hast du 7.5. Das ist kein Faktor> 16, sondern ein Faktor 1.4 oder sowas in der Richtung.
Nein, bei einem 12-Bit Wandler liegt beispielsweise der Umschaltpunkt
zwischen 0x7ff und 0x800 bei 1/2 LSB DNL mit einer Genauigkeit von
1/2*1/4096 vom Bereich fest. Geschoben auf 8 Bit entspricht das dem
Übergang von 0x7f auf 0x80. Bei einem 8-Bit Wandler mit ebenso 1/2 LSB
liegt die Genauigkeit des Umschaltpunkte bei 1/2*1/256. Das ist einen
Faktor 16 ungenauer.
Wolfgang schrieb:>> Nein, bei einem 12-Bit Wandler liegt beispielsweise der Umschaltpunkt> zwischen 0x7ff und 0x800 bei 1/2 LSB DNL mit einer Genauigkeit von> 1/2*1/4096 vom Bereich fest. Geschoben auf 8 Bit entspricht das dem> Übergang von 0x7f auf 0x80. Bei einem 8-Bit Wandler mit ebenso 1/2 LSB> liegt die Genauigkeit des Umschaltpunkte bei 1/2*1/256. Das ist einen> Faktor 16 ungenauer.
Was du meinst ist die Auflösung, nicht jedoch die Genauigkeit.
Wolfgang schrieb:> Sven B. schrieb:>> Wenn du jetzt von dem 12-Bit 4 wegnimmst, hast>> du noch 8 richtige Bits, bei dem 8-Bit hast du 7.5. Das ist kein Faktor>> 16, sondern ein Faktor 1.4 oder sowas in der Richtung.>> Nein, bei einem 12-Bit Wandler liegt beispielsweise der Umschaltpunkt> zwischen 0x7ff und 0x800 bei 1/2 LSB DNL mit einer Genauigkeit von> 1/2*1/4096 vom Bereich fest. Geschoben auf 8 Bit entspricht das dem> Übergang von 0x7f auf 0x80. Bei einem 8-Bit Wandler mit ebenso 1/2 LSB> liegt die Genauigkeit des Umschaltpunkte bei 1/2*1/256. Das ist einen> Faktor 16 ungenauer.
Bei diesem Code. Bei 0x800 nach 0x801 und den nächsten 15 gibt es dafür
überhaupt gar keinen Unterschied. Mir ist nicht ganz klar, was das
jemals bringen soll, bzw. in welchem Fall mit das in der Praxis einen
Faktor 16 Genauigkeit bringt.
Sven B. schrieb:> Mir ist nicht ganz klar, was das> jemals bringen soll, bzw. in welchem Fall mit das in der Praxis einen> Faktor 16 Genauigkeit bringt.
Hast Du Dir meine Grafik
Beitrag "Re: Vergleich 12 Bit-AD-Wandler mit 8-Bit"
mal angeschaut?
Bezogen auf eine Spannungsmessung z. B. zwischen 0 und 255 Volt kann bei
8 Bit mit 1 V Auflösung gemessen werden, bei 12 Bit mit 0,0625V
Auflösung. Scheint mir "etwas" genauer zu sein - oder?
Tester schrieb:> Was du meinst ist die Auflösung, nicht jedoch die Genauigkeit.
Ich meine die Genauigkeit. Die Auflösung beträgt 8 Bit wenn man Daten
von einem 8Bit bzw. um vier Bit verschobenen Daten eines 12Bit Wandlers
betrachtet.
Dieter F. schrieb:> Scheint mir "etwas" genauer zu sein - oder?
Du bringst Auflösung und Genauigkeit durcheinander. Die Auflösung von
8Bit Daten beträgt 8Bit. Daran wird sich nichts ändern lassen ;-)
Typische Angaben aus einem Datenblatt:
Linearity Error: 1LSB
Offset Error: 2LSB
Gain Error :1LSB
Dazu kommt dann noch der Sprung bei 1/2 LSB.
Können wir uns einigen: Die Genauigkeit ist meist besser als 2 LSB. Ganz
grob kann man sagen: Hat ein ADC ein Bit mehr, so sind meist auch die
anderen Abweichungen halb so gross.
Will man die wirkliche Genauigkeit wissen, so muss man die Datenblätter
von ADC und Refspannung genau anschauen. Der eine hat max 2 LSB
Linearity Error der andere nur 1 LSB.
Btw. Messen ist nicht so einfach. Du musst auch Temperatur- und
Langzeit-Drift messen.
Wolfgang schrieb:> Du bringst Auflösung und Genauigkeit durcheinander
Nö - bei höherer Auflösung kann man genauer messen. Ein Messstab mit 1
cm Auflösung elaubt nur Messungen auf 1 cm genau. Erhöh man die
Auflösung (Teilung) auf 1 mm, dann kann man auf 1 mm genau messen.
Natürlich beträgt die Auflösung von 8 Bit Daten 8 Bit, die von 24 Bit
Daten 24 Bit. Mit 24 Bit kann ich aber einen deutlich größeren
Zahlenraum (Messberech) auf 1 genau abdecken.
8Bit = 8Bit? Das ist meist so. Ist nicht selbstverständlich. Das
Datenblatt weist extra darauf hin.
"The A/D conversion result never decreases with an increase in the input
voltage and has no missing
codes."
Sven B. schrieb:> Mir ist nicht ganz klar, was das> jemals bringen soll, bzw. in welchem Fall mit das in der Praxis einen> Faktor 16 Genauigkeit bringt.
Einfaches Beispiel:
Du überlagerst deinem Signal ein Rauschen mit Mittelwert 0, dessen
Amplitude deutlich über ein LSB des Wandlers liegt. Dann misst du mit
dem ADC sehr häufig und filterst die digitalen Daten kräftig mit einem
digitalen Tiefpass. Die Mittelung über 256 Messpunkte liefert dann bspw.
4 zusätzliche Bits. Das machst du einmal für den 8Bit-Wandler und einmal
für die auf 8Bit runtergeschobenen Daten des 12Bit Wandlers. Beide
Mittelwerte haben dann die gleiche Auflösung, aber da die INL und DNL
des 12Bit Wandlers um den Faktor 16 kleiner sind, bekommst du beim 8Bit
Wandler größere Fehler rein. Wenn sich das Eingangssignal beispielsweise
langsam ändert und du die Daten beider Messungen gegenüber stellst,
siehst du den Unterschied. Sichbar werden dann z.B. die stärker
unterschiedlichen Stufenbreiten beim 8 Bit ADC.
Dieter F. schrieb:> Ein Messstab mit 1 cm Auflösung elaubt nur Messungen auf 1 cm genau.> Erhöh man die Auflösung (Teilung) auf 1 mm, dann kann man auf 1 mm genau> messen.
Nein, man kann nur dann auf 1mm genau messen, wenn die Skala auch so
genau geteilt ist, dass die Striche mit +/- 1/2 mm da sind, wo sie
bezogen auf eine ideale Teilung hin gehören. Sonst kannst du zwar mit
1mm Auflösung messen, aber trotzdem mit deiner abgelesenen Zahl 1/2 cm
daneben liegen.
>Nö - bei höherer Auflösung kann man genauer messen. Ein Messstab mit 1>cm Auflösung elaubt nur Messungen auf 1 cm genau. Erhöh man die>Auflösung (Teilung) auf 1 mm, dann kann man auf 1 mm genau messen.
Doppel Nö. Aber ein gutes Beispiel, die Genauigkeit gibt hier die Klasse
des Gliedermassstabes an (1, 2 und 3). Die Auflösung die Einteilung der
Striche zum Ablesen.
Gruß Jonas
Wolfgang schrieb:> Sven B. schrieb:>> Mir ist nicht ganz klar, was das>> jemals bringen soll, bzw. in welchem Fall mit das in der Praxis einen>> Faktor 16 Genauigkeit bringt.>> Einfaches Beispiel:> Du überlagerst deinem Signal ein Rauschen mit Mittelwert 0, dessen> Amplitude deutlich über ein LSB des Wandlers liegt. Dann misst du mit> dem ADC sehr häufig und filterst die digitalen Daten kräftig mit einem> digitalen Tiefpass. Die Mittelung über 256 Messpunkte liefert dann bspw.> 4 zusätzliche Bits. Das machst du einmal für den 8Bit-Wandler und einmal> für die auf 8Bit runtergeschobenen Daten des 12Bit Wandlers. Beide> Mittelwerte haben dann die gleiche Auflösung, aber da die INL und DNL> des 12Bit Wandlers um den Faktor 16 kleiner sind, bekommst du beim 8Bit> Wandler größere Fehler rein. Wenn sich das Eingangssignal beispielsweise> langsam ändert und du die Daten beider Messungen gegenüber stellst,> siehst du den Unterschied. Sichbar werden dann z.B. die stärker> unterschiedlichen Stufenbreiten beim 8 Bit ADC.
Ok, das stimmt, in diesem Fall bringt es etwas. Ich finde das Beispiel
aber ehrlich gesagt ziemlich konstruiert ... wenn mein Signal so geartet
ist, dann gibt es andere (statistische) Gründe, aus dem der
12-Bit-Wandler viel besser ist, die m.E. schwerwiegender sind. Aber du
hast recht -- wenn man über den systematischen Fehler nachdenkt, spielt
das eine Rolle.
Ich finde die Aussage aber trotzdem zu provokativ formuliert, für fast
jede übliche Anwendung kommt das ziemlich auf dasselbe raus, ob du von
12-Bit-Werten die letzten 4 Bit abschneidest oder gleich nur 8 Bit
aufnimmst.
>Ich finde die Aussage aber trotzdem zu provokativ formuliert, für fast>jede übliche Anwendung kommt das ziemlich auf dasselbe raus, ob du von>12-Bit-Werten die letzten 4 Bit abschneidest oder gleich nur 8 Bit>aufnimmst.
Ja gerade nicht. In den 4 abgeschnittenen Bits steckt doch das ganze
Rauschen + die Fehler. Du hast dann festgenagelte 8 Bit und nicht 8 Bit
+ Fehler und Rauschen ;)
Gruß J
jibi schrieb:>>Ich finde die Aussage aber trotzdem zu provokativ formuliert, für fast>>jede übliche Anwendung kommt das ziemlich auf dasselbe raus, ob du von>>12-Bit-Werten die letzten 4 Bit abschneidest oder gleich nur 8 Bit>>aufnimmst.>> Ja gerade nicht. In den 4 abgeschnittenen Bits steckt doch das ganze> Rauschen + die Fehler. Du hast dann festgenagelte 8 Bit und nicht 8 Bit> + Fehler und Rauschen ;)
Welches Rauschen denn? Die 0.5 LSB vom ADC? Und welcher Fehler? Die 0.2
LSB DNL vom ADC?
Normalerweise wählt man die Abtastung doch so, dass die Signalqualität
für das Ergebnis limitierend ist und nicht der ADC. Dann wären zum
Beispiel 2 LSB von dem 8-Bit-Wandler Rauschen des Signals. Das dann mit
12 Bit abzutasten und die letzten 4 abzuschneiden bringt genau gar
nichts.
Hier ist Abweichung. Wenn ich anderes umformen, habe ich eine Abweichung
von +-10 mV bei 5V also 0.2 % . Ich denke nicht dass +-10mV einen
Einfluss auf Regelung hat