Hi, habe diesen Beitrag hier im Portal gefunden. http://www.mikrocontroller.net/articles/Quantisierung Warum haben die bei 94,7.... auf 95 aufgerundet. das ist doch nicht korrekt, die stufe 95 ist nicht erreicht der A/D wandler würde also 94 Ausgeben. Welche logik steht dahinter?
> das ist doch nicht korrekt,
So ist es. Du hast recht. Richtig wäre 94.
Willkommen in der Welt der Wikis, dem Paradies für Halbwissen und
Laber-Sülze.
Da hast du recht. Woher soll ein AD-Wandler, oder die Logik dahinter wissen, ob der Analogwert näher bei 94 * 19,35 mV = 1.835,8 V, oder 95 * 19,35 mV = 1.855,4 V liegt. Die Ausgabe des AD-Wandlers ist hier 94 - und damit muss man den Quantisierungsfehler berechnen. Der WIKI-Autor erklärt richtig, dass der MITTLERE Fehler über viele verschiedene Werte etwa halb so groß, wie die Wandler-Auflösung (19,35 mV) ist. Aber die Aufrundung an dieser Stelle ist irreführend.
Jan R. schrieb: > Warum haben die bei 94,7.... auf 95 aufgerundet. das ist doch nicht > korrekt, die stufe 95 ist nicht erreicht der A/D wandler würde also 94 > Ausgeben. > > Welche logik steht dahinter? Man könnte auch folgendes vertreten (wir reden ja über einen idealen Quantisierer, ja?): Man möchte einen Quantisierer mit möglichst kleiner Abweichung (wie es technisch umgesetzt wird, ist eine spätere Frage :) ). Und das würde bedeuten, dass mir der Quantisieren immer den am nächsten gelegenen Wert angibt. Also soll er auch die 94,7 bitte als 95 ausgeben, ebenso die 95,3. Die Schaltschwellen wären also bei X,5. Dann gibt es aber zwei Probleme, nämlich einerseits der letzte Bereich müsste die Nummer "256" haben (was in der Idealen Theorie der Quantisierung(TM) kein Problem darstellt), und zum zweiten sind die beiden Halbbereiche -0,5 .. 0,0 und 256,0 ... 256,5 überflüssig. Beides kann man lösen, wenn man nun die Schaltschwellen auf die ganzen Werte setzt; leider würden dadurch die Fehler zwischen gemessenem und tatsächlichem Wert deutlich größer, wenn man weiterhin als angezeigten Wert die untere Grenze verwendet ( [0 , 1[ -> 0). Man könnte auch die obere Grenze nehmen ( [0 , 1[ -> 1), würde keinen Unterschied machen (Null-Menge). Dies kriegt man aber wieder behoben, wenn man als gemessenen Wert die Mitte des Intervalls annimmt. Dann würde man als das erste Intervall als "0,5" interpretieren. Für die gemessenen 94,7 würde der Quantisierer also das 95. Intervall [ 94 , 95 ] anzeigen. Dies dürfte man aber tatsächlich nicht auf die 95 aufrunden, aber auch nicht auf die 94 abrunden. Der als "gemessen" angezeigte Wert müsste also als "94,5" interpretiert werden -- und damit würde man wieder bei den +/- 0,5 LSB bleiben. Das Problem ist nur, dass der kleinste angezeigte Wert eigentlich "0,5" für das Intervall [0, 1], der größte angezeigte Wert jedoch "255,5" für das Intervall [255, 256] wäre.
Achim Hensel schrieb: > Jan R. schrieb: >> Warum haben die bei 94,7.... auf 95 aufgerundet. das ist doch nicht >> korrekt, die stufe 95 ist nicht erreicht der A/D wandler würde also 94 >> Ausgeben. >> >> Welche logik steht dahinter? > > Man könnte auch folgendes vertreten (wir reden ja über einen idealen > Quantisierer, ja?): > > Man möchte einen Quantisierer mit möglichst kleiner Abweichung (wie es > technisch umgesetzt wird, ist eine spätere Frage :) ). > Und das würde bedeuten, dass mir der Quantisieren immer den am nächsten > gelegenen Wert angibt. Also soll er auch die 94,7 bitte als 95 ausgeben, > ebenso die 95,3. Die Schaltschwellen wären also bei X,5. > > Dann gibt es aber zwei Probleme, nämlich einerseits der letzte Bereich > müsste die Nummer "256" haben (was in der Idealen Theorie der > Quantisierung(TM) kein Problem darstellt), und zum zweiten sind die > beiden Halbbereiche -0,5 .. 0,0 und 256,0 ... 256,5 überflüssig. > Halt das stimmt doch garnicht. Wenn du x,5 machst wäre der größte Wert 255 er würde zwar schon bei 254,5 umschalten aber der Bereich entspräche dann von 254,5 bis 256 was für mich ein Problem darstellt. Denn das wäre dann nicht PSV +/- 0,5 sondern über 1. Was macht man denn in Wirklichkeit setzt man die schaltschwellen auf X,5 oder auf x?
Was wird denn hier seitenweise "geklugscheißert"? Legt man eine unbekannte Spannung an einen AD-Wandler und verarbeitet das AD-Ergebnis, WEISS MAN NICHT, ob Ab- oder Aufrunden besser ist! Im besten Falle nimmt man an, dass die unbekannte Spannung genau in der Mitte zwischen den Spannungswerten liegt, die zum AD-Wert und dem nächst höheren AD-Wert liegt. Der Fehler ist dann ANNAHME +/- 0,5 x Auflösung. Besser gehts nicht. Wirklich nicht! Oder, man weiß es besser und genauer... Aber dann braucht man den AD-Wandler nicht. Wirklich nicht!
Ich meint aber was andres, man könnte einen flashumsetzer ja so bauen, dass er bei 0,5V 1,5V USW. Schaltet, statt 1 2 3 USW. Volt macht man das oder schaltet jeder ad wandler der Welt bei den Geraden zahlen. Also liegen die schaltschwellen eine A/D Wandlers bei X oder bei X+X/2 ? (Im Normalfall, vielleicht gibt es ausnahmen).
http://de.wikipedia.org/wiki/Quantisierung_(Signalverarbeitung) Unter Verarbeitung im Artikel steht l die Werte werden auf die nächste quantisierungsstufe auf oder abgefunden, wie macht man das, wenn man zwischen den Studien nichts sieht? Beispiel wider 2-Bit Wandler. Wider die 4 Volt Der Wandler hat jetzt seine Schaltschwelle bei 1V 2V..... Die eingangsspannung ist 0,7V woher soll der Computer jetzt wissen ob er auf oder abrunden soll? Das ginge nur, wenn ich meinen ad Wandler umbauen würde, sodass er bei 0,5 V 1,5V USW. Schaltschwellen hat. Mit. Deiner Annahme 00 -->'0,5 01 --> 1,5 Kommen wir nicht weiter, da beimdir die Schaltschwelle weiterhin bei 1V sitzt, natürlich ist die mittlere Spannung aber eine auf und Abrundung ist somit auch weiterhin nicht möglich. Eine Lösung wären ein addieren,,der immer 0,5 Volt aufaddiert aber der Aufwand wäre jetzt natürlich irre, Nochmal abgekürzt mein Problem Wikipedia Artikel sagt bei größer 0,5V wird auf 01 aufgerundent darunter auf 00 ------> wie soll das gehen! wenn der ADU nur 0;1;2;3 V erkennt, woher soll er wissen, ob das jetzt größer x,5 oder kleiner ist. Wie ist das bei Wikipedia gemeint? ------> wie löst man das Problem im Reallife. In den Verschiedenen Wandlern? Würden diese die schaltschwellen in der Reihenfolge 1;2;3;4 USW. Oder in der Reihenfolge 0,5;1,5 USW haben. ----> Vielen Dank.
Kein AD-Wandler macht sich die Mühe, das gesampelte Signal vielleicht auf- oder abzurunden! Er rundet IMMER (!!!) ab. Auch nicht, wenn es in Wikipedia mal eine unglückliche Formulierung gab. - Diese ICs machen das weiter so! Auch nicht, wenn du jetzt noch jahrelang auf diesem Wikipedia- Beitrag herumhüpfst! - Das stört diese ICs nicht!
Da hilft ein Blick ins Datenblatt. Beim Pic AD-Wandler wird theoretisch immer abgerundet, wie man in der Grafik sieht. Unter Electrical Charakteristics kommt dann aber ganz was anderes: +-1 LSB Integral Linearity Error +-1 LSB Differential Linearity Error +-2 LSB Offset Error +-1 LSB Gain Error Wenn im Worst Case der Wert um 5 Bit abweichen kann, kommt es auf die Rundung auch nicht mehr an. ... und dann kommt noch die Drift der unteren und oberen Referenzspannungen dazu.
Ob ab- oder aufgerundet wird, bestimmt zunächst das Wandlerverfahren. Dazu kommt auch noch, wie weit ein Rauschen an der Rundung beteiligt ist. Rauschen führt dazu, dass die Rundungsgrenze in Richtung Mitte des Intervalls verschoben wird. Wenn das Runden durch Verändern von Bits erreicht wird, kann außer dem Löschen niederwertiger Bits auch ein anderes Rundungsverfahren eingesetzt werden z.B. Mittelwertbildung aus mehreren samples mit anschließender Division durch N oder kaufmännisches Runden.
:
Bearbeitet durch User
Kein Name schrieb: > Beim Pic AD-Wandler wird theoretisch immer abgerundet, Welcher PIC? (das scheint ein Datenblatt eines relativ alten PICs zu sein). Neuere PICs oder z.B. der MCP3021 haben die Schaltschwellen meist bei .5 spezifiziert: http://ww1.microchip.com/downloads/en/DeviceDoc/41674B.pdf Seite 116 http://ww1.microchip.com/downloads/en/DeviceDoc/21805B.pdf Seite 13 Gruß Anja
Kein Name schrieb: > Da hilft ein Blick ins Datenblatt. > > Beim Pic AD-Wandler wird theoretisch immer abgerundet, wie man in der > Grafik sieht. > > > ... und dann kommt noch die Drift der unteren und oberen > Referenzspannungen dazu. Deiner tut doch auch auf der Mitte der Stufen umschalten also in der Mitte.
Anja schrieb: > Kein Name schrieb: >> Beim Pic AD-Wandler wird theoretisch immer abgerundet, > > Welcher PIC? (das scheint ein Datenblatt eines relativ alten PICs zu > sein). > > Neuere PICs oder z.B. der MCP3021 haben die Schaltschwellen meist bei .5 > spezifiziert: > > http://ww1.microchip.com/downloads/en/DeviceDoc/41674B.pdf > Seite 116 Dieser AD Wandler bildet tatsächlich den Mittelwert das heißt, unterhalb 0.5LSB Wird 0 ausgegeben darüber 1 > http://ww1.microchip.com/downloads/en/DeviceDoc/21805B.pdf > Seite 13 Dieser A/D Wandler hat seine schaltschwellen nicht bei x,5 LSB sondern bei X LSB hier wird immer nur der Mittelwert angenommen, wie Erwin schon gesagt hat. In Wirklichkeit ist aber alles bis 1LSB 0 und alles zwischen 1 und 2 LSB 1 es wird nur 1.5 Angenommen, um ein LSB +/- 0,5 vorzulügen. Gerundet wird hier aber nix. > > > Gruß Anja
Peter R. schrieb: > Ob ab- oder aufgerundet wird, bestimmt zunächst das Wandlerverfahren. Noch nicht mal. Ob auf- oder abgerundet wird, bestimmt die Logik hinter dem ADC, einschließlich des Anzeigeelements. Der ADC kann nur sagen, in welchem Bereich die Größe liegt, also 00, 01, 10, 11. Was oben von Peter R gesagt wurde bestimmt, wo die Schaltschwellen liegen, und wie scharf diese eingehalten werden. Die Logik dahinter (ggf. auch der Mensch dabei) interpretiert diese Punkte als Messgröße, macht also aus 00 ein "0 Volt", aus 01 dann "1 Volt", etc. -- Man muss also zwischen Eingangsspannung U_in und angezeigter Spannung U_disp unterscheiden. -- Wenn man nun den ADC so beschaltet, dass die Schaltschwellen für 01 bei den Eingangsspannungen unten U_in=1V bzw. oben U_in=2V liegen, liefert die obige Interpretation einen Wert, der tw. bis zu 1 LSB nach unten abweicht, aber kaum nach oben. Hier gibt es zwei Lösungen: (1) Die Auswertungslogik wird geändert. Also wird 00 als "0,5 Volt" interpretiert, und "11" als "3,5 Volt". Würde aber eine sehr unübliche Anzeige benötigen, um immer die 0,5 in der Darstellung zu haben (z.B. eine fest auf "5" eingestellte 7-Segmentanzeige). (2) Man ändert die Schaltschwellen, und verzichtet auf jeweils ein halbes LSB Eingangsbereich an den beiden Grenze. Also 00 bleibt "0 Volt", aber ab U_in=0,5V wird "1 Volt" angezeigt. Dafür lässt man zu, dass ab U_in=3,5V kein Messwert mehr angezeigt wird. Hiermit kann man schön und genau die vier(!) Spannungsbereiche "0 Volt", "1 Volt", "2 Volt" und "3 Volt" darstellen. Das kann man etwa erreichen, indem man vor dem eigentlichen Wandlungsvorgang zunächt 0,5V von der Eingangsspannung abzieht, oder der Wandler etwa durch kontrolliertes Rauschen bereits von sich aus die Schaltschwellen auf die 0,5LSB liegt. Hier geht es aber immer noch um den idealen ADC. Und dieser besitzt einen (minimalen) Quantisierungsfehle von 0,5LSB (plus ggf. weitere Abweichungen durch eine problematische Interpretation des Ausgabewertes :) ). Der technische Baustein ist aber noch eine andere Sache.
Achim Hensel schrieb: > Peter R. schrieb: > > (2) Man ändert die Schaltschwellen, und verzichtet auf jeweils ein > halbes LSB Eingangsbereich an den beiden Grenze. Also 00 bleibt "0 > Volt", aber ab U_in=0,5V wird "1 Volt" angezeigt. Dafür lässt man zu, > dass ab U_in=3,5V kein Messwert mehr angezeigt wird. Hiermit kann man > schön und genau die vier(!) Spannungsbereiche "0 Volt", "1 Volt", "2 > Volt" und "3 Volt" darstellen. Das kann man etwa erreichen, indem man > vor dem eigentlichen Wandlungsvorgang zunächt 0,5V von der > Eingangsspannung abzieht, oder der Wandler etwa durch kontrolliertes > Rauschen bereits von sich aus die Schaltschwellen auf die 0,5LSB liegt. Wenn du noch vom 2Bit ADU ausgehst, wäre die Obergrenze Gäbe es über 3V keinen Messwert mehr. Ich hätte also immer 0,5 LSB schritte bis auf die letzte Stufe die hätte 1,5 LSB Außerdem musst du 0,5V auf den Messwert aufaddieren. Denn wenn du 0,5 abziehst, würde der ADU erst bei 1,5V auf 01 umschalten. Und erst bei 3,5 auf 11 das willst du ja nicht, du willst ja, das bei 0,5 Volt umgeschaltet wird. > > Hier geht es aber immer noch um den idealen ADC. Und dieser besitzt > einen (minimalen) Quantisierungsfehle von 0,5LSB (plus ggf. weitere > Abweichungen durch eine problematische Interpretation des Ausgabewertes > :) ). Der technische Baustein ist aber noch eine andere Sache.
Nachtrag: Kein Name schrieb: > Beim Pic AD-Wandler wird theoretisch immer abgerundet, wie man in der > Grafik sieht. Und als Eingangsgröße wird nur der Bereich 0,5 LSB bis 1023,5 LSB angegeben... Eine andere Idee kam mir gerade: Vermutlich könnte man das mit dem Quantisierungsfehler besser erklären, wenn man einen symmetrischen Eingangsbereich verwendet (z.B. -3 .. 3). Dann kann man die Grenzen aus dem Koordinatenursprung heraushalten, und sie stören weniger bei der Berechnung. Zum zweiten kann man dann die Schwellenwerte ohne große Verwirrung auf die 0,5LSB setzen.
Achim Hensel schrieb: > Nachtrag: > > Kein Name schrieb: >> Beim Pic AD-Wandler wird theoretisch immer abgerundet, wie man in der >> Grafik sieht. > > Und als Eingangsgröße wird nur der Bereich 0,5 LSB bis 1023,5 LSB > angegeben... > > Eine andere Idee kam mir gerade: Vermutlich könnte man das mit dem > Quantisierungsfehler besser erklären, wenn man einen symmetrischen > Eingangsbereich verwendet (z.B. -3 .. 3). Dann kann man die Grenzen aus > dem Koordinatenursprung heraushalten, und sie stören weniger bei der > Berechnung. Zum zweiten kann man dann die Schwellenwerte ohne große > Verwirrung auf die 0,5LSB setzen. Was soll dafür übersichtlicher werden? Du hattest einen Denkfehler. Rechne 0,5 zum Messwert hinzu statt abzuziehen und die Welt ist ok. Dann hast du zwar an der Obergrenze 1,5LSB das ist halt so siehe http://ww1.microchip.com/downloads/en/DeviceDoc/41674B.pdf Seite 116
Hi Atmel sieht das genau so (S.8): http://www.atmel.com/Images/Atmel-8456-8-and-32-bit-AVR-Microcontrollers-AVR127-Understanding-ADC-Parameters_Application-Note.pdf MfG spess
Bei Digitalreglern ist der Quantisierungsfwhler ja auch so ne Sache. Der DA wandler der die Spannung auf die regelstrecke gibt, muss auflösender däsein, als der AD im Programm muss für den Sollwert eine Toleranz eingestellt werden, dass der Regler nicht schwingt. Hatte mal nen Drehzahlregler gebaut, wo der AD auflösender war als der DA nun hat der Motor geschwungen und gestottert, da der Sollwert aufgrund der höheren Auflösungdes DA Wandlers nicht erreichtwerden. Dann habe ich 3 Intervalle oder Tolleranz gegeben und das Problem war gegessen die Regelung lief. Hätte man das noch ohne Toleranz machen können?
Ach du meine Güte! Erst dieser Rundungsquatsch im Wiki-Beitrag, dann diese Grafiken von PIC und MCP. Also basteln (!) diese Firmen AD-Wandler, die nicht die Standard-R2R-Übertragungskurve haben: Digital | 11| --- | | 10| --- | | 01| --- | | 00|---+---+---+---+--Analog 0 1 2 3 4 Sondern eine mit Offset von -0,5 LSB: Digital | 11| ----- | | 10| --- | | 01| --- | | 00|---+---+---+---+--Analog 0 1 2 3 4 Und was ändert das am Quantisierungsfehler? Grundsätzlich überhaupt nichts! Wenn diese versetzte Kurve nicht nur Werbe-Schnick- schnack für Dummies ist, muss man beim Runden eben alles um 0,5 LSB verschieben. Das Runden MUSS aber weiterhin vom Programm(-ierer) gemacht werden, der AD-Wandler kümmert sich nicht die Bohne darum. IM BESTEN FALL ist bei diesen Varianten der AD-Wert auf 0...1 LSB, oder aber auf +/- 0,5 LSB genau. - Man hat also IMMER einen Unsicherheitsbereich von bestenfalls 1 LSB!
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.