Was ist der höchste wert bei einem 12bit AnalogDigitalWandler
Danke und noch was was bedeutet die z.B. den Wert 800 anzeigt wird bei einem 10bit AnalogDigitalWandler kenn mich nicht richtig aus und brauche es für den Unterricht.
Georgios Tselegkidis schrieb: > Danke und noch was was bedeutet die z.B. den Wert 800 anzeigt wird bei > einem > 10bit AnalogDigitalWandler kenn mich nicht richtig aus und brauche > es für den Unterricht. Das hängt von der Referenzspannung ab. Wie hoch ist die bei deinem AD-Wandler?
800 von 1023 Schritten, also 78,2% der Referenzspannung liegen am ADC Eingang an.
Georgios Tselegkidis schrieb: > Och ja hab ich ganz vergessen die Referenzspannung beträgt 5V 800 -> 3,91V
Georgios Tselegkidis schrieb: > Danke und noch was was bedeutet die z.B. den Wert 800 anzeigt wird bei > einem > 10bit AnalogDigitalWandler Das bedeutet: der A/D-Wandler liefert 0x320 (Hex) oder 11 0010 0000 (Bin).
Georgios Tselegkidis schrieb: > Och ja hab ich ganz vergessen die Referenzspannung beträgt 5V Dann 5V / 1023 x 800 = 3,91V
Route_66 H. schrieb: > Das bedeutet: der A/D-Wandler liefert 0x320 (Hex) oder 11 0010 0000 > (Bin). Du hast 1440 (Oct) und 568 (duodez) vergessen...
Es sind bei 10 bit 1024 Schritte, folglich: 5.000 V * 800/1024 = 3.90625 V
S. Landolt schrieb: > Es sind bei 10 bit 1024 Schritte, folglich: > 5.000 V * 800/1024 = 3.90625 V Darfst für die Berechnung nur 1023 verwenden!
S. Landolt schrieb: > Es sind bei 10 bit 1024 Schritte, folglich: > 5.000 V * 800/1024 = 3.90625 V Schreib dir die Zahl mal binär auf, für 1024 brauchst du ein 11. Bit (10000000000)......
H. B. schrieb: > Darfst für die Berechnung nur 1023 verwenden! Kevin M. schrieb: > Schreib dir die Zahl mal binär auf, für 1024 brauchst du ein 11. Bit > (10000000000)...... Es wir bei 10 Bit aber von Null bis 1023 gezählt, also 1024 verschiedene Werte!
PS: Damit war jetzt eben natürlich nicht route_66 gemeint, siehe Uhrzeit. Für die beiden anderen: gleich die erste Formel, unter 'single ended conversion', umstellen.
Beitrag #6445543 wurde vom Autor gelöscht.
Ein 10-Bit Wandler hat aber nur als max. Ausgangswert 0x3FF also 1023. (0-1023 = 1024) Man erreicht also nur die Referenzspannung -1LSB. Steht auch so in dem Atmel Datasheet. Um das auszugleichen rechnet man daher "absichtlich falsch" indem man das eine LSB wieder dazuzählt. Rein praktisch gesehen ist das aber erst ab ca. 20 Bit Auflösung wieder relativ genau. Das ganze ist mehr oder weniger eine Glaubensfrage :)
Ändert aber nichts daran, dass für die Berechnungen 2^10 = 1024 verwendet werden muss. Hat mit "Glaube" oder "absichtlich falsch rechnen" nichts zu tun.
S. Landolt schrieb: > Damit war jetzt eben natürlich nicht route_66 gemeint, Das habe ich schon verstanden. Ich muss mich allerdings korrigieren: Im Bild ist ein Lineal, das von Null bis 10 geteilt ist; also 10 gleiche Abstände, aber 11 unterschiedliche Werte. Die Position 10 entspricht 10cm. Für die Position 3 rechnet man 10cm / 10 * 3 = 3cm. In meiner Analogie sind 10 == 1023 11 == 1024 10cm == Vref 5V (Referenzspannung AD-Wandler) Position 3 == 800 (vom dritten Post oben) 10cm / 10 * 3 == 5V / 1023 * 800 => 3,9100V
an H.B.: Oder soll Georgios Tselegkidis morgen seinem Lehrer sagen: "Ich habe hier absichtlich falsch gerechnet"?
an route_66: Zur Verwirrung führte wohl der, leider auch von mir verwendete, Begriff "Schritte" - Ihr "Werte" ist korrekt.
In der Praxis rechnet man meist mit 1024, denn das geht recht einfach - auch bereits in Assembler. Die dabei entstehende Ungenauigkeit ist oft tolerierbar, weil die verwendete Referenzquelle ohnehin nicht so genau ist.
S. Landolt schrieb: > an H.B.: > Oder soll Georgios Tselegkidis morgen seinem Lehrer sagen: "Ich habe > hier absichtlich falsch gerechnet"? Das soll uns sein Lehrer mal genau vorrechnen.
Ist das ein unipolarer oder bipolarer Eingang? Also geht die Eingangsspanne von -Vref bis +Vref oder nur von 0V bis Vref?
Wenn 1024 richtig wäre, dann könnte man tatsächlich nie U(Ref) erreichen: 5V * 1023/1024 = 4.9951171875 Große Preisfrage: Wird ein AD-Wert beim Erreichen der entsprechenden Schwellspannung gültig, oder im Bereich zwischen 2 Werten? Bei z.B. 10 Bit beträgt die Differenz zwischen b00000000 und b00000001 bei 5V 0.0048875855V. Findet die Umschaltung bei Erreichen der Spannung 0.0048875855V statt, oder im Bereich >0V ..... <=0.0048875855V?
Weil ihr unbedingt mit beschissenen Zahlen rechnen müsst. Man kann ja mal abstrahieren und die Referenzspannung auf 1024Volt festlegen. Dann entspricht ein Bit einem Volt. 00 0000 0110 sind also 6 Volt. Oder 11 1111 1111 = 1023Volt. Die 6V eingesetzt in die o.g. Formel:(Vref x Meßwert/1024 oder 1023) 1024 x 6 / 1024 = ? 1024 x 6 / 1023 = ? Na, was liefert wohl das richtige Ergebnis?
**KUNZ** schrieb: > Man kann ja mal abstrahieren und die Referenzspannung auf 1024Volt > festlegen. Nein. Bei einem 10-Bit-Wandler wird die Referenzspannung auf z.B. 1,023V eingestellt. Dann entspricht jede Stufe genau einem Millivolt (von Nullpunktfehler und Linearitätsfehler des AD abgesehen). Crazy H. schrieb: > Große Preisfrage: Wird ein AD-Wert beim Erreichen der entsprechenden > Schwellspannung gültig, oder im Bereich zwischen 2 Werten? Bei gängigen AD-Wandlern geben die Hersteller gern plus/minus ein halbes LSB an. Also nach Deiner Formulierung > ...oder im Bereich zwischen 2 Werten
Route_66 H. schrieb: > **KUNZ** schrieb: >> Man kann ja mal abstrahieren und die Referenzspannung auf 1024Volt >> festlegen. > > Nein. Bei einem 10-Bit-Wandler wird die Referenzspannung auf z.B. 1,023V > eingestellt. Dann entspricht jede Stufe genau einem Millivolt (von > Nullpunktfehler und Linearitätsfehler des AD abgesehen). > > Crazy H. schrieb: >> Große Preisfrage: Wird ein AD-Wert beim Erreichen der entsprechenden >> Schwellspannung gültig, oder im Bereich zwischen 2 Werten? > > Bei gängigen AD-Wandlern geben die Hersteller gern plus/minus ein halbes > LSB an. Also nach Deiner Formulierung >> ...oder im Bereich zwischen 2 Werten Genau so !
Crazy H. schrieb: > Bei z.B. 10 Bit beträgt die Differenz zwischen b00000000 und b00000001 > bei 5V 0.0048875855V. Nein wo soll diese Schrittweite bei einem 10 Bit R2R Netzwerk überhaupt herkommen. Das geht physikalisch gar nicht. Die Schrittweite ist selbstverständlich 5V/1024 = 0.0048828125 V. Crazy H. schrieb: > Findet die Umschaltung bei Erreichen der Spannung > 0.0048875855V statt, oder im Bereich >0V ..... <=0.0048875855V? Das hängt von der Transferkennlinie des A/D Wandlers ab. Es gibt A/D-Wandler die nominal bei 0.5 Bit das erste mal schalten. Also künstlich um 0.5 Bit Offset verzogen sind damit eine Rundung stattfindet. Andere schalten erst bei 1.0 Bit. Aber meist sind die Wandlungsfehler sowieso größer. Gruß Anja
Route_66 H. schrieb: > **KUNZ** schrieb: >> Man kann ja mal abstrahieren und die Referenzspannung auf 1024Volt >> festlegen. > > Nein. Bei einem 10-Bit-Wandler wird die Referenzspannung auf z.B. 1,023V > eingestellt. Man kann selbstverständlich jeden Wert wählen. Ich habe 1024 genutzt um zu anschaulichen Zahlen und einer Schrittweite von einem Volt zu kommen. Genau so wären natürlich auch 1023 möglich gewesen. Nur entspricht der Meßwert 11 1111 1111 dann nicht mehr 1023 Volt sondern gut 1022 Volt. Eben einer Teileinheit unter Referenzspannung. Sagt jedenfalls der Hersteller des ADC. Wenn dazu alternative Fakten bekannt sind - immer her damit... :-) > Bei einem 10-Bit-Wandler wird die Referenzspannung auf z.B. 1,023V > eingestellt. > Dann entspricht jede Stufe genau einem Millivolt Nö, eben nicht! Eine Stufe mit einem Millivolt gibts mit 1,024V Referenz. Der größte darstellbare Meßwert ist dann 11 1111 1111 = 1,023 Volt.
H. B. schrieb: > Auch die Arduino Fraktion rechnen mit 1023. Dann stimmt die Steigung halt nicht. Wem das egal ist, der kann das schon so machen. H. B. schrieb: > Auch ein Onlinetool zur ADC Berechnung nimmt den Wert 1023. Dann hat halt der Programmierer der Onlinetools es auch nicht kapiert. Kann man nichts machen. H. B. schrieb: > Ich finde hier wird das ganz gut erklärt. Der Ansatz auf Seite 13 ist soweit plausibel: "With a 5V reference voltage, the resolution is 5 (volts) /210 = 5 (volts)/1024 = 4.88 mV." Dass dann aber ein paar Seiten später (und weiterhin) auf einmal mit 1023 gerechnet wird, scheint mir doch verwegen: "For example: with a 5V supply (analog reference) and 1V signal, the converted result is (1/5)*1023 = 204d = CCh" Und damit also 4,88mV * 204 = 995mV! Hoppla! Das Dokument widerspricht sich durch die Verwendung des Faktors 1023 also selbst. Da hat offenbar der Praktikant mit herumgefrickelt, der die Sache mit den Pfosten und den Zaunfeldern nicht so richtig begriffen hatte. Ein wichtiger Grund (den manche aber vermutlich nicht so richtig verstehen werden ;-) ist, dass Mathematik im Grunde zur Einfachheit neigt. Und wenn ich zur Berechnung den Faktor 1024 nehme, dann ist die Rechnung auf dem Controller voll einfach: ein Verschieben um 10 Bits. Simpler geht es kaum.
Mir leuchtet das nicht ein. Mal praktisch betrachtet: Was erwartet man von einem 2-Bit-Wandler mit 4V Referenz? Frage ist: Rechnet man Vref/4 = 1V oder Vref/3 = 1,333V ? Der AD-Wandler kann die Werte 0, 1, 2 und 3 ausgeben. Ich würde erwarten: 0 = 0V genauer <0,5V 1 = 1V gen. 0,5V bis 1,5V 2 = 2V gen. 1,5V bis 2,5V 3 = 3V gen. >=2,5V oder ich verschiebe den Bereich und mache 0= 0 bis 1V 1= 1 bis 2V 2= 2 bis 3V 3= >=3V Aber es bleibt immer 1V also Vref/4 und nicht 1,333V (Vref/3) Die 1,333V krieg ich nicht sinnvoll untergebracht? Kann mir wer helfen ? MfG Willi
willi schrieb: > Was erwartet man von einem 2-Bit-Wandler mit 4V Referenz? > Der AD-Wandler kann die Werte 0, 1, 2 und 3 ausgeben. > Ich würde erwarten: > 0 = 0V genauer <0,5V > 1 = 1V gen. 0,5V bis 1,5V > 2 = 2V gen. 1,5V bis 2,5V > 3 = 3V gen. >=2,5V Korrekt sieht es konkret so aus: 0 = 0,00 .. 0,99V 1 = 1,00 .. 1,99V 2 = 2,00 .. 2,99V 3 = 3,00 .. 3,99V Denn ein Multimeter mit einem 2V Messbereich zeigt z.B. auch höchstens 1,999V aber eben nie 2,000V an.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Korrekt sieht es konkret so aus: > 0 = 0..0,999V > 1 = 1..1,999V > 2 = 2..2,999V > 3 = 3..3,999V Das ist ein Wunschtraum aus der Theorie! In der Praxis sieht es so aus: willi schrieb: > Ich würde erwarten: > 0 = 0V genauer <0,5V > 1 = 1V gen. 0,5V bis 1,5V > 2 = 2V gen. 1,5V bis 2,5V > 3 = 3V gen. >=2,5V Lothar M. schrieb: > Denn ein Multimeter mit einem 2V Messbereich Du vergleichst Äpfel mit Birnen!
:
Bearbeitet durch User
Ja Danke Lothar, schaltungstechnisch kann man das so oder so machen. Mein Beispiel entspricht dem Atmel Datenblatt. Aber das ist ein anderes Thema. Was ist mit den 1,333V aus Vref/3 ? MfG Willi
Hier wird das ganze auch nochmal ganz gut erklärt. The Netduino contains several ports (A0 - A5) that are capable of reading an analog signal and changing it into a digital representation of that signal. These ports can be used for digital I/O as well, but can individually be configured to use an internal ADC (Analog to Digital Converter). The analog signal at the ADC port can come from different sources. It can come from a sensor, e.g. for measuring light or temperature, or it is simply taken from a variable resistor, that is changed by a user to select some value (e.g. the desired intensity of a dimmed light). The analog signal is a voltage between 0V and 3.3V. The ADC converts this voltage to a number between 0 and 1023, since the Netduino has 10-bits ADC’s. The number 0 represents 0V and 1023 represents Aref. The voltage level at any ADC port can be determined as follows: 1 float analogValue = (float)digitalValue * (3.3f/ 1023f) In theory, you should divide by 1024, because there are that many steps. The maximum digital value of 1023 in that case represents a voltage between 3.2967 and 3.3V, but the formula would result in the lower value. In practice it is easier to divide by 1023, so a digital value of 1023 represents the full scale of 3,3V. And with ADC precision-errors and a Vref that's probably not exactly 3.3V, the result is pretty accurate. Wenn man es ganz genau nimmt, darf man auch den Quantisierungsfehler von ca. 0,5LSB nicht vergessen. Wenn man den noch mit einrechnet sind weder die 1023 noch die 1024 richtig.
willi schrieb: > Was ist mit den 1,333V aus Vref/3 ? Da brauchst du halt einen 3-stufigen Wandler, dann darfst du das so machen. Oder andersrum: durch das multiplizieren des AD-Werts 0..3 mit 1,33 erhältst du 0 - 1,33 - 2,66 - 3,99V und liegst damit näher am "erwarteten" Wert. Und du hast dir die Anzeige durch eine stärkere Steigung der Übertragungsfunktion "schöngesoffen", denn 3,99V wird jetzt ja schon weit vor dem Erreichen der 3,99V angezeigt. Route_66 H. schrieb: > Das ist ein Wunschtraum aus der Theorie! Ja, aber zuerst einmal sollte man es theoretisch korrekt machen und dann schauen, welche Fehler praktisch auftreten können und wie sie sich auswirken. Wenn man aber schon theoretisch daneben liegt, kann es praktisch nur noch schlimmer werden. H. B. schrieb: > Hier wird das ganze auch nochmal ganz gut erklärt. Auch das das "Schönreden" eines Fehlers macht den nicht richtiger. Ich hoffe, ich habe nicht allzuviel mit Geräten zu tun, wo einer bewusst solche triviale Fehler einbaut. Denn dann macht er sicher woanders auch solche trivialen Fehler. > Wenn man es ganz genau nimmt, darf man auch den Quantisierungsfehler von > ca. 0,5LSB nicht vergessen. Und auch keine Offset- oder Linearitäsfehler. Aber das ist ein völlig anderes Thema mitsamt einer völlig anderen Theorie.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > H. B. schrieb: >> Auch die Arduino Fraktion rechnen mit 1023. > Dann stimmt die Steigung halt nicht. Wem das egal ist, der kann das > schon so machen. > > H. B. schrieb: >> Auch ein Onlinetool zur ADC Berechnung nimmt den Wert 1023. > Dann hat halt der Programmierer der Onlinetools es auch nicht kapiert. > Kann man nichts machen. > > H. B. schrieb: >> Ich finde hier wird das ganz gut erklärt. > Da hat offenbar der Praktikant mit herumgefrickelt, der die > Sache mit den Pfosten und den Zaunfeldern nicht so richtig begriffen > hatte. > > Ein wichtiger Grund (den manche aber vermutlich nicht so richtig > verstehen werden ;-) ist, dass Mathematik im Grunde zur Einfachheit > neigt. Und wenn ich zur Berechnung den Faktor 1024 nehme, dann ist die > Rechnung auf dem Controller voll einfach: ein Verschieben um 10 Bits. > Simpler geht es kaum. Ja klar, alle anderen sind dumm, nur du weisst alles. Dass mit den 1024 leichter zu rechnen ist, das stimmt alledings.
H. B. schrieb: > Ja klar, alle anderen sind dumm, nur du weisst alles. Nein, sie sind nicht dumm. Sie machen es halt einfach falsch. Die Einen, weil es ihrer Meinung nach "schönere" und "ziemlich genaue Ergebnisse" gibt (genau das steht da in diesem Text, den du zum Netduino gepostet hast). Und die Anderen machen es falsch, weil es die Einen so vormachen. > Dass mit den 1024 leichter zu rechnen ist, das stimmt alledings. Du bist auf dem richtigen Weg.
:
Bearbeitet durch Moderator
>>> Was ist mit den 1,333V aus Vref/3 ? >>Da brauchst du halt einen 3-stufigen Wandler, dann darfst du das so >>machen. Lieber Lothar, das verschiebt das Problem doch nur. Dann muss man doch -angeblich- vref/2 rechnen und kommt auf 2V, was bei einem 3stufigen Wandler genauso wenig Sinn macht. --------------------------------------- Also nochmal an alle Vref/n-1 Verfechter: Bitte erklärt mir warum man bei einem vierstufigen 2-Bit-Wandler mit Vref/3 rechnen muss statt Vref/4 ? Gerade weil es so viele Datenblättern o.ä. gibt, wo es so beschrieben ist. Womöglich ist Vref/n-1 richtig und ich kapier's nur nicht. Ich bitte um eine Erklärung. Wenn's geht an meinem 2-Bit Wandler Beispiel. Gruß Willi
Route_66 H. schrieb: > Lothar M. schrieb: >> Denn ein Multimeter mit einem 2V Messbereich > Du vergleichst Äpfel mit Birnen! Immerhin ist beides Obst und wächst auf Bäumen. Sooo arg liege ich mit dem Vergleich also gar nicht daneben... ;-) H. B. schrieb: > Hier mal ein Beispiel Könntest du bitte bei deinen Beispielen (egal ob Bild oder Textauszug) die Quelle auch nennen? > mit einem 4-Bit AD-Wandler. Ja, aber ein 4 Bit Wandler hat eben 16 "Intervalle", die mit 0..15 durchnummeriert sind. Denn was am Bild "4-Bit_AD.PNG" für die Umsetzung in die Realität fehlt, ist die Zuordnung zu einem Spannungswert. Da drin wird nur mit 16 virtuellen "Zaunpfosten" und 15 "Zaunfeldern" eine volksnahe Theorie aufgestellt und vermittelt. Wie gesagt: wenn das (so wie der beim Netduino) einer wissentlich so macht, um beim "höchsten" AD-Wert auch die "Endspannung" mit 5,00V anzeigen zu können, dann ist das das eine. Aber wenn er sich mit vereinfachten Modellen eine eigene "2^n-1"-Theorie herzerrt, um sie als Wahrheit zu verkünden, dann irrt er ganz einfach.
:
Bearbeitet durch Moderator
Hab in den letzten Tages Emails von Microchip und Texas Instruments bekommen. Folgende Literatur stehen zum Gratisdownload zur Verfuegung: "Analog Engineer's Pocket Reference von TI" => sehr schoen gemacht und passend zum Thread.... "Analog Engineer's Circuit Cookbook: Amplifiers" - auch von TI und empfehlenswert "Analog Design eBook" (pdf) von Microchip - eben erst downgeloaded.Kann deshalb nichts darueber sagen Bei TI muss man eingeloggt sein - sich einen account einzurichten ist wohl kein grosses Problem und hat auch den Vorteil,dass man Spice etc downloaden kann... Das "Analog Design eBook" von Microchip darf offensichtlich jeder downloaden Und wenn ich schon mal dabei bin: Camenzind's (Entwickler des Timer 555)"Designing Analog Chips"-pdf Datei sollte eigentlich auch jeder haben.Interessant ist auch seine Story wie es zum 555 kam. Hier die Links: http://www.designinganalogchips.com/_count/designinganalogchips.pdf https://www.ti.com/lit/slyy137 https://www.ti.com/lit/slyy138 https://info.microchip.com/p0D00U0tyE040QjDUC0Ucp3
Heute Morgen gleich mal das "Analog Design eBook" von Microchip angeschaut und schon in der ersten Application Note "AN1154" wird bei der AD-Wert Berechnung 2n-1 eingesetzt.
H. B. schrieb: > schon in der ersten Application Note "AN1154" wird bei der AD-Wert > Berechnung 2n-1 eingesetzt. Achtung: Punkt vor Strich-Rechnung! Das dort wiederholt verwendete 2^(n-1) ist etwas grundlegend anderes als das hier diskutierte (2^n)-1 Das 2^(n-1) bedeutet, dass das Datenwort ein Bit weniger breit ist und dadurch der Wertebereich halbiert wird (z.B. weil das Vorzeichen extra gehandhabt wird). Ein (2^n)-1 bedeutet, dass man den Wertebereich lediglich um 1 Inkrement einschränkt.
:
Bearbeitet durch Moderator
Jeder Messwert des ADCs entspricht ja nicht einem genauen Spannungswert am Eingang, sondern einem Spannungsbereich. Bei einem 10 Bit ADC:
1 | 0 = 0/1024 .. 1/1024 der Referenzspannung |
2 | 1 = 1/1024 .. 2/1024 |
3 | ... |
4 | 3FE = 1022/1024 .. 1023/1024 |
5 | 3FF = 1023/1024 .. 1024/1024 |
Da man bei der Darstellung des Spannungswertes nicht einen Bereich angeben will, sondern einen einzelnen Wert, nimmt man wohl am besten den Mittelwert des Bereiches, was dann für 0x3FF: 1023.5/1024 wäre. Also wäre der beste Teiler nicht 1023 oder 1024, sondern 1023.5 !
Andi schrieb: > Da man bei der Darstellung des Spannungswertes nicht einen Bereich > angeben will, sondern einen einzelnen Wert, nimmt man wohl am besten den > Mittelwert des Bereiches, was dann für 0x3FF: 1023.5/1024 wäre. Also > wäre der beste Teiler nicht 1023 oder 1024, sondern 1023.5 ! Das kannst du so machen (bei den meisten ADCs ist es zwar nur akademisch interessant, aber damit minimierst du tatsächlich in der theoretischen Betrachtung den Betrag des Quantisierungfehlers). Aber wenn du das so machst, dann ist der Teiler immer noch 1024 . Die 0,5 werden in der Rechnung dem ADC-Wert zugeschlagen, nicht dem Teiler. Der ADC-Wert läuft dann nicht mehr von 0...1023 sondern von 0,5...1023,5
... wenn man mit 1023 rechnet, ist schlicht die Steigung falsch ! Am Beispiel eines 2 Bit ADC mit einer Referenz von 4 Volt würde das bei einem Teilerfaktor von (2^n)-1 ( hier dann 3 ) bedeuten, dass die Änderung eines Digits 1,33V betragen würde. Gibt der ADC hier dann den Zahlenwert 1 aus, bedeutet das, dass der gemessene Spannungswert im Bereich von 1,33V bis 2,66V liegen würde. Eine angelegte Spannung von 1,1V (oder auch 1,2V) würde der ADC immer noch mit einer 0 ausgeben. 00 .... 0 - 1,33V 01 .... 1,34 - 2,66V 10 .... 2,67 - 3,99V 11 .... > 4V Hier würde eine angelegte Spannung von 2,5V immer noch 1V anzeigen. Bei Teilerverhältnis 2^n wären die Bereiche: 00 .... 0 - 0,99V 01 .... 1 - 1,99V 10 .... 2 - 2,99V 11 .... 3 - 3,99V Mit zunehmender Anzahl der Digits fällt der Fehler bei (2^n)-1 immer weniger ins Gewicht, was jedoch nichts an der Tatsache ändert, dass die Schrittweiter zwischen den Digits (Auflösung ?) schlicht falsch ist. Bei einem 2-Bit ADC (und einer Referenz von 4V) ist die Schrittweite 1V. Aus meiner Sicht der Dinge beißt hier die Maus keinen Faden ab.
Lothar M. schrieb: > Route_66 H. schrieb: >> Lothar M. schrieb: >>> Denn ein Multimeter mit einem 2V Messbereich >> Du vergleichst Äpfel mit Birnen! > Immerhin ist beides Obst und wächst auf Bäumen. > Sooo arg liege ich mit dem Vergleich also gar nicht daneben... ;-) Wenn Du etwas Ahnung davon hättest, wie ein AD-Wandler im Multimeter funktioniert, würdest Du lieber still sein - oder mit Dieter Nuhr...
Ralph S. schrieb: > Bei einem 2-Bit ADC (und einer Referenz von 4V) ist die Schrittweite 1V. > Aus meiner Sicht der Dinge beißt hier die Maus keinen Faden ab. Schönes Beispiel, man muss sich eben nur vor Augen führen, dass ein ADC nur BIS ZUR Referenz messen kann, genau die selbst Referenzspannung ist gerade aus dem Bereich raus und nicht mehr messbar. Route_66 H. schrieb: > Wenn Du etwas Ahnung davon hättest, wie ein AD-Wandler im Multimeter > funktioniert, Ich denke Lothar meinte das sinnbildlich, das ein ADC im Multimeter mit Dual-Slope misst spielt bei dieser Betrachtung keine Rolle.
Da kann man durchaus durcheinander kommen.. deswegen hier noch mal ein Beispiel mit 4Bits (es gehen 16 Werte!)
1 | 0 1 2 3 4 5 6 7 |
2 | 8 9 A B C D E F |
Dann steht auf Max also F. "mach mal die Lautstärke leiser!" (halbe Lautstärke) Wäre gegangen: 7,5 Geht aber nur: 8 oder 7 -> muss man ausprobieren, was besser passt -> Lächeln der Digitaltechnik -> Warum das doof ist, wenn bei der Auflösung zuviel gespart wird. 800 = 50 x 16 ;)
Ralph S. schrieb: > ... wenn man mit 1023 rechnet, ist schlicht die Steigung falsch ! > [...] > Bei einem 2-Bit ADC (und einer Referenz von 4V) ist die Schrittweite 1V. Das stimmt - und auch wieder nicht ;-) Wenn der 2-Bit-ADC in Deinem Beispiel "11" (also dezimal 3) als Ergebnis ausgibt, was soll denn dann dem Benutzer angezeigt werden? 3V? Oder vielleicht doch 4V? Davon hängt doch ab, ob Du durch 2^n oder (2^n)-1 teilst. Es kommt also darauf an, wie man das Ergebnis des ADCs interpretieren will. Siehe übrigens auch hier: https://www.mikrocontroller.net/articles/Aufl%C3%B6sung_und_Genauigkeit
Lothar M. schrieb: > Denn ein Multimeter mit einem 2V Messbereich zeigt z.B. auch höchstens > 1,999V aber eben nie 2,000V an. Damit ich auch noch meinen Senf dazu gegeben hab: Das liegt eher daran, daß ein 3 1/2 stelliges MM an erster Stelle nur eine "1" im Display anzeigen kann ;-)
Dirk W. schrieb: > Wenn der 2-Bit-ADC in Deinem Beispiel "11" (also dezimal 3) als Ergebnis > ausgibt, was soll denn dann dem Benutzer angezeigt werden? 3V? Die Wahrheit: "Der Analog-Wert liegt zwischen 3V und 4V". Was der ADC als Digitalwert ausgibt ist per Konvention der untere Wert des Analogen Spannungsbereichs. d.H. Wenn du was mit minimalen Rundungsfehlern ausgeben willst: Rechne mit ADC+0.5 & 2ⁿ Stufen. Gäbe hier also 3.5V. Dann kriegt der Nutzer auch nie "0.0000 Volt" angezeigt, das wäre ja auch gelogen.
Εrnst B. schrieb: > Die Wahrheit: "Der Analog-Wert liegt zwischen 3V und 4V". Ja, das wäre sicherlich das Optimum. Üblicherweise ist aber eine numerische Darstellung des Ergebnisses erwünscht. Durch die begrenzte Auflösung des ADCs muss man sich nun entscheiden, wie man das Ergebnis für sich am besten darstellt. Bei der ursprünglichen Frage "muss ich denn nun durch 1023 oder 1024 teilen (bzw. bei dem 2-Bit-ADC durch 3 oder 4)" gibt es kein Richtig und kein Falsch, denn bei einer Eingangsspannung von 3,5V ist ja eigentlich beides falsch, sowohl 3 als auch 4 :-)
Dirk W. schrieb: > Das stimmt - und auch wieder nicht ;-) > > Wenn der 2-Bit-ADC in Deinem Beispiel "11" (also dezimal 3) als Ergebnis > ausgibt, was soll denn dann dem Benutzer angezeigt werden? 3V? Oder > vielleicht doch 4V? Ob man in dem Fall 3V ausgibt oder 4V oder 3,5V irgendeinen anderen Wert Wert aus dem Intervall ist tatsächlich eine willkürliche Festlegung. Es ist nur sicher, dass der Wert irgendwo im Bereich von 3V-4V liegt. Dirk W. schrieb: > Davon hängt doch ab, ob Du durch 2^n oder (2^n)-1 > teilst. Nein, hier liegst du falsch. Wenn man durch 2^n teilt legt man fest, dann ein (Quantisierungs)-intervall des ADC 1V groß ist. Das ist der korrekte Wert. Der Binärwert "11" des ADC sagt, dass die tatsächlich Spannung zwischen 3V und 4V liegt. Der Binärwert "11" kann also als irgendeine Zahl im Bereich 3-4 interpretiert werden, und diese Zahl wird mit dem Quantisierungsintervall 1V multipliziert. Wenn man aber Vref durch (2^n)-1 teilt legt man fest, dass ein Quantisierungsintervall des ADC 1,333V groß ist. Das würde bedeuten, dass der Binärwert "11" für irgendeine Spannung aus dem Intervall 2,666V-4V steht. Und das ist halt einfach falsch. Die Willkür liegt also nicht beim Zählen der Quantisierungintervalle: davon gibt es eindeutig 2^n. Die Willkür liegt darin, wie man das quantisierte Ergebnis "11" des ADCs interpretieren will: als Untergrenze des Intervall (also als 3), als Mittelwert des Intervalls (also als 3,5) oder als Obergrenze des Intervalls (als "fast" 4). Bei theoretischen Betrachtungen findet man tatsächlich gar nicht so selten den Wert 3,5, bei den praktischen Implementierungen wählt man in den allermeisten Fällen 3.
Dirk W. schrieb: > gibt es kein Richtig und kein Falsch doch. 1023 ist einfach falsch. Kann man aber machen, wenn man sich dessen bewusst ist, (und es evtl. als Kommentar drüberschreibt) "weil es dem User schönere Zahlen anzeigt". Problem: Durch viel Influencer-Copy-Pasta ist dieser falsche Wert kritiklos in etlichen Beispielen, Wikis, Youtube-Tutorials, Arduino-TikToks usw gelandet. Jemand der sich nur daraus informiert hat den falschen Rechenweg so oft eingetrichtert bekommen dass er ihn für die einzige seligmachende Wahrheit hält, und selber Nachdenken&Herleiten ist ja heutzutage nicht mehr "in".
Dirk W. schrieb: > gibt es kein Richtig und kein Falsch, denn bei einer > Eingangsspannung von 3,5V ist ja eigentlich beides falsch, sowohl 3 als > auch 4 :-) So gesehen ist fast keine Messung richtig und in Wahrheit ist es ja auch so. Am nächsten wären man dran, wenn man anzeigt: Anzeige 00 .... 0 - <1V 0,5V 01 .... 1 - <2V 1,5V 10 .... 2 - <3V 2,5V 11 .... 3 - <4V 3,5V, also den halben Wert eines LSB dazu addiert. Dann würden dein 3,5V sogar perfekt getroffen 😀
HildeK schrieb: > Dirk W. schrieb: >> gibt es kein Richtig und kein Falsch, denn bei einer >> Eingangsspannung von 3,5V ist ja eigentlich beides falsch, sowohl 3 als >> auch 4 :-) > > So gesehen ist fast keine Messung richtig und in Wahrheit ist es ja auch > so. > Am nächsten wären man dran, wenn man anzeigt: > also den halben Wert eines LSB dazu addiert. > > Dann würden dein 3,5V sogar perfekt getroffen 😀 Das hab ich gestern schon geschrieben, aber es gibt halt immer noch Leute die das nicht glauben können.
H. B. schrieb: > Das hab ich gestern schon geschrieben, Gestern hast du aber durch 2^n-1 geteilt. Meine Aussage bezog sich auf Vref*ADC_CNT / 2^n + 0.5, ich teile durch 2^n - da sind wir also uns nicht einig.
HildeK schrieb: > H. B. schrieb: >> Das hab ich gestern schon geschrieben, > > Gestern hast du aber durch 2^n-1 geteilt. > Meine Aussage bezog sich auf Vref*ADC_CNT / 2^n + 0.5, ich teile durch > 2^n - da sind wir also uns nicht einig. Ich habe gestern folgendes geschrieben: Ein 10-Bit Wandler hat aber nur als max. Ausgangswert 0x3FF also 1023. (0-1023 = 1024) Man erreicht also nur die Referenzspannung -1LSB. Steht auch so in dem Atmel Datasheet. Um das auszugleichen rechnet man daher "absichtlich falsch" indem man das eine LSB wieder dazuzählt. Rein praktisch gesehen ist das aber erst ab ca. 20 Bit Auflösung wieder relativ genau. Das ganze ist mehr oder weniger eine Glaubensfrage :) Wenn man es ganz genau nimmt, darf man auch den Quantisierungsfehler von ca. 0,5LSB nicht vergessen. Wenn man den noch mit einrechnet sind weder die 1023 noch die 1024 richtig. Im Endeffekt ist eben weder 1023 noch 1024 korrekt. Beim Teile durch 1023 wird zwar die Referenzspannung erreicht, aber es besteht ein Linearisierungsfehler. Beim Teile durch 1024 sind sie Werte zwar Linear, aber die Referenzspannung kann nie erreicht werden. Mit der Addition von 0,5LSB kommt man dem ganzen schon näher, aber den genauen Wert weiss man eben nie.
Was die Berechnung in der AN1154 angeht lag ich wirklich falsch. Hier bedeutet (2^n)-1 dass man den Wertebereich lediglich um 1 Inkrement einschränkt.
Hallo nochmal, man muss tatsächlich mit Vref/(n-1) rechnen. Ihr habt Recht, ich lag falsch. Sorry. Die Ausgabewerte (Codes) des AD-Wandlers stehen nicht für einen diskreten Eingangspannungswert, sondern für ein Spannungsintervall. Der Code 2 bedeutet z.B. nicht genau 2V sondern z.B. 1,8V bis 2,2V. Ein Intervall also. Wie viele solcher Intervalle gibt es? Es gibt n davon, denn jeder Code steht für ein Intervall. Ein 2-Bit-Wandler verteilt seine 4 möglichen Codes auf vier Intervalle. Aber wie groß sind die? Vref/(n-1). Aber nicht das erste und das letzte, die sind nur halb so groß damit der Wandler bei der Hälfte einer Stufe auf den nächsten Code schaltet. Die Verteilung bei meinem Beispiel von gestern Abend mit dem 2-Bit Wandler mit 4V Referenz sieht dann so aus: Intervallgrösse (1LSB) = 4V/3 also 1,33V Code | Spg.Intervall | Größe 0 = 0V bis 0,67V = 1/2 LSB 1 = 0,67V bis 2V = 1 LSB 2 = 2V bis 3,33V = 1 LSB 3 = 3,33V bis 4V = 1/2 LSB macht 3 LSB verteilt auf vier Intervalle Mit 3V Referenz sieht es schöner aus: 0 = 0V bis 0,5V 1 = 0,5V bis 1,5V 2 = 1,5V bis 2,5V 3 = >2,5V bis 3V So ist Abweichung der Codes vom Spannungsverlauf minimal und die Summe der Fehler über den gesamten Bereich ist Null. Sehr schön zu sehen bei folgendem 8-Bit Flash Wandler: Der erste und der letze Widerstand in der Kette sind nur 1/2R. Und Vref ist 7 LSB, nicht 8. http://root.crs-web.de/modules/digitalwandler/wa_pa_s.gif Mfg Willi
Willi schrieb: > Sehr schön zu sehen bei folgendem 8-Bit Flash Wandler: Lothar hat das vorgestern schon mal angesprochen: in Internet findet man verschiedene Darstellungen, sowohl richtige als auch falsche. Als Gegenbeispiel für die Darstellung in deiner Quelle im Anhang eine entsprechende Darstellung von Analog Devices. (Eine Firma, die nicht nur Prinzipschaltbilder veröffentlicht sondern tatsächlich auch davon lebt, ADCs zu bauen. Und diese auch im Detail zu erklären.) https://www.analog.com/media/en/training-seminars/design-handbooks/Data-Conversion-Handbook/Chapter3.pdf Dort sind die Widerstände an den Enden der Teilerkette ebenfalls ungleichmäßig. Aber nicht um die Quantisierungsintervalle an den Messbereichsenden "nur halb so groß" zu machen. Sondern um zu bewirken, dass das Umschalten des ADC-Ausgangs jeweils genau in der Mitte des Quantisierungsintervalls stattfindet. Alle Quantisierungsintervalle sind gleich groß angelegt, V_ref ist 2^n * LSB. Solche Spielereien, wie sie in deiner Quelle gezeigt sind (Quantisierungsintervalle am Messbereichsende, die bewusst kleiner ausgelegt sind) wären übringes auch nur mit dem als Beispiel genutzten Flash-ADC möglich. Für die typischen 10- oder 12-Bit ADCs (SAR) ist eine solche Sonderbehandlung der "Randintervalle" praktisch kaum implementierbar.
Der Wandler in meinem Beispiel teilt den gesamten Bereich 0 bis Vref in 7 gleich große Intervalle der Größe Vref/7. Umschaltung jeweils in der Mitte der Intervalle. Dein Beispiel teilt den Bereich 0 bis Vref auch in 7 Intervalle. Die ersten sechs sind gleich groß Vref/8, aber das siebte ist doppelt so groß Vref/4, und wird als Ganzes dem einen Code 111 zugeordnet. Umschaltung bei den ersten 6 Intervallen in der Mitte und beim letzten, größeren, bei 1/4 des Intervalls. Vorteil ist die Größe Vref/8 für die ersten 6 Intervalle. Glatte Zahl halt. Die Widerstände von 1/2R in meinem Beispiel sind weder Spielerei (ungeeignete Wortwahl bei einer sachlichen Diskussion) noch Sonderfälle, sondern sie sind notwendig, damit die Umschaltung in der Mitte der Intervalle liegt. Und das ist nicht nur bei Flash-Wandlern möglich. Auch bei anderen AD-Wandlerverfahren möchte man die Umschaltung in der Mitte der Quantisierungsintervalle haben, und benutzt dafür je nach Technologie geeignete Mittel. Man kann einen Kuchen nicht sauber in 7 Teile von 1/8 Größe schneiden. Da kommt man nicht dran vorbei. Womit wir wieder am Anfang des Threads angekommen sind. ;-) MfG Willi
Püh, ist das selbst in diesem Forum soooo ein Problem? Vorgabe 1: Uref Vorgabe 2: Auflösung in Bit = N Uin = ADC_Ausgabewert * Uref / 2^N Da muss man nichts MEINEN, DENKEN, oder GLAUBEN, sondern es nur EIN mal kurz KAPIERT haben und sich anschließend dran halten. Kleine Abweichungen sind Bauteiltoleranzen. (siehe Datenblatt) Große Abweichungen sind Betrieb außerhalb der (siehe Datenblatt) Spezifikationen, oder ein defekter ADC. Das kann doch nicht soooooo schwer sein!
Jacko schrieb: > Püh, ist das selbst in diesem Forum soooo ein Problem? > > Vorgabe 1: Uref > Vorgabe 2: Auflösung in Bit = N > > Uin = ADC_Ausgabewert * Uref / 2^N > > Da muss man nichts MEINEN, DENKEN, oder GLAUBEN, sondern es nur > EIN mal kurz KAPIERT haben und sich anschließend dran halten. > > Kleine Abweichungen sind Bauteiltoleranzen. (siehe Datenblatt) > Große Abweichungen sind Betrieb außerhalb der (siehe Datenblatt) > Spezifikationen, oder ein defekter ADC. > > Das kann doch nicht soooooo schwer sein! LOL - Wenn es so einfach wäre, dann wäre die Welt ein Ponyhof :) Das sind die naiven Gedankengänge von Kleinkindern die noch drann glauben dass 1+1 immer 2 ergibt.
H. B. schrieb: > LOL - Wenn es so einfach wäre, dann wäre die Welt ein Ponyhof :) So viele Kinder wie da herumlaufen und herumspielen, da könnte man das schon meinen. > Das sind die naiven Gedankengänge von Kleinkindern die noch drann > glauben dass 1+1 immer 2 ergibt. Das ist keine Glaubensfrage (auch wenn du anderes behauptest). In welchen Fällen gibt denn 1+1 etwas anderes als 2? Aber wenn du unbedingt sagen willst 1+1 = 3, dann tu es. Und wenn du unbedingt 2^n-1 als Skalierung nehmen willst, dann tu es. Ich hoffe aber, dass ich nie auf ein Gerät angewiesen bin, das den Skalierungsfaktor 1023 oder 2047 oder 4095 enthält. Denn wie gesagt: da sind dann mit allerhöchster Wahrscheinlichkeit auch noch andere Fehler in der Software. Jacko schrieb: > Püh, ist das selbst in diesem Forum soooo ein Problem? Das Thema taucht alle halbe Jahre in der selben Form wieder auf, weil die irreführenden Informationen und die falschen Erklärvideos ja alle noch im Netz zu finden sind. Und weil die so schön einfach und leicht verständlich sind, werden sie lieber herangenommen als dieser wissenschaftliche "starke Tobak": https://www.sciencedirect.com/science/article/pii/S2589208820300077 http://www.atx7006.com/articles/static_analysis/adc_parameters Und weil auch die Hersteller solche irreführenden Bilder in ihren Datenblättern haben, gibts dazu Diskussionen: https://www.microchip.com/forums/m922845.aspx Die ganzen Betrachtungen hier gelten nämlich in dieser einfachen und offensichtlich anschaulichen Weise nur für Flash-Wandler, wo man diese Widerstandskette und die 2^n-1 Komparatoren direkt sieht. Die Betrachtungen lösen sich schlagartig in Luft auf, wenn man mal die Funktionsweise und die Schrittweite und die Umschaltpunkte eines SA-Wandlers genauer ansieht. Willi schrieb: > Die Widerstände von 1/2R in meinem Beispiel sind weder Spielerei > noch Sonderfälle, sondern sie sind notwendig, damit die Umschaltung > in der Mitte der Intervalle liegt. Ja, aber wenn man sich die Kennlinien von real existierenden ADC ansieht, dann erfolgt diese Umschaltung eben idealerweise/normalerweise nicht bei in der Mitte der Intervalle, sondern bei Uref/2^n. https://www.embedded.com/understanding-analog-to-digital-converter-specifications/ https://www.analog.com/media/en/training-seminars/design-handbooks/Data-Conversion-Handbook/Chapter2.pdf https://www.ti.com/lit/an/slaa013/slaa013.pdf
:
Bearbeitet durch Moderator
Lothar M. schrieb: > H. B. schrieb: >> LOL - Wenn es so einfach wäre, dann wäre die Welt ein Ponyhof :) > So viele Kinder wie da herumlaufen und herumspielen, da könnte man das > schon meinen. > >> Das sind die naiven Gedankengänge von Kleinkindern die noch drann >> glauben dass 1+1 immer 2 ergibt. > Das ist keine Glaubensfrage (auch wenn du anderes behauptest). > In welchen Fällen gibt denn 1+1 etwas anderes als 2? Dann begib dich mal in das Reich der Quantenphysik. Restklassen- oder Uhrenarithmetik, Rechnen mit Kongruenzen, zirkuläre oder modulare Arithmetik, binäres Zahlensystem, usw.
H. B. schrieb: > Dann begib dich mal in das Reich der Quantenphysik. Und was hat das jetzt mit dem hier diskutierten Thema zu tun? > Restklassen- oder Uhrenarithmetik, Rechnen mit Kongruenzen, zirkuläre > oder modulare Arithmetik, binäres Zahlensystem, usw. Oder diese Buzzword-Bingo-Liste hier?
Lothar M. schrieb: > H. B. schrieb: >> Dann begib dich mal in das Reich der Quantenphysik. > Und was hat das jetzt mit dem hier diskutierten Thema zu tun? nichts - du wolltest nur wissen in welchen Fällen 1+1 etwas anderes als 2 ergibt.
Gruss in die Runde Interesant, Ah da kommt gleich "faszinierend" und dann mach ich mich aus dem Staub. König und Turm gegen König gegen Turm (Schach) : Angebot des Remis ist da normal oder man hat mal die Chip gelesen(?). Ich bleib bei den Konventionen zur 1, auch wenn Sie mal systematisch genullt wird. und 2*3/4(Kreis) geometrisch Eins ergeben können. (Zitat: Pille er ist tot.) Dirk St
Lothar M. schrieb: > Die ganzen Betrachtungen hier gelten nämlich in dieser einfachen und > offensichtlich anschaulichen Weise nur für Flash-Wandler, wo man diese > Widerstandskette und die 2^n-1 Komparatoren direkt sieht. Ich lehne mich noch weiter aus dem Fenster: alle A/D sind niemals völlig frei von Abweichungen, deshalb kann man sich auf das LSB sowieso niemals verlassen, selbst bei Tricks mit Mehrfachmessungen und Rauschen, am Ende ist die zur Anzeige gebrachte Auflösung immer besser als die tatsächlich erreichbare Genauigkeit. SCHWELG Was das waren das noch für Zeiten, als man digitale Messgeräte noch mit +/-0,5% und +/-1digit spezifiziert hat. Heute muss es ja modernerweise +/-0,005% heissen, das klingt besser, aber halt +/-215digit. Naja, net uffrege, abkleben der letzten Dezimalstellen hilft :-)
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.