PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein ADC Schritt Ref/n oder Ref/(n-1)



Siro
05.02.2020, 18:28
Hallo zusammen,
es stellt sich mir (anscheinend auch Anderen) immer wieder die Frage
wie berechne ich einen ADU Schritt.

Bei einem 8 Bit ADC habe ich 256 Stufen.
Wenn ich 256 Stufen habe, wäre ein Schritt die Referenzspannung / 256
Nehmen wir an, ich habe eine Referenz von 5 Volt, dann wäre dies also
5 / 256 = 0,01953125 Volt

Der höchste Wert meines ADU bei 8 Bit ist aber nicht 256 sondern nur 255
somit entspricht der umgerechnete ADU Wert 255 nicht meiner Referenzspannung von 5 Volt
sondern nur 4,98046874 Volt. Da fehlt doch was ;)

führe ich die Berechnung mit n-1 durch:
5 Volt / (256-1) = entspricht eine Stufe 0,0196078431372549‬ Volt
Bei einer Vollaussteuerung ADU = 255 ergibt sich dann tatsächlich wieder die Referenzspannung

Klingt plausibel, aber:
Im Handbuch des Atmel Controllers steht zum Beispiel:


The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB

Das würde meiner Meinung nach der Berechnung Vref/n entsprechen.

Nehme ich jetzt mal Quantisierungsrauschen, Temperturfehler, Nichtlinearität, Referenzspannungs Fehler, Offset usw. dazu,
dann spielt das vermutlich alles eh keine Rolle mehr...;)

Mich würde einfach mal interessieren, wie Ihr das handhabt bzw. berechnet, oder wie wurde es euch gelehrt.

Siro

HaWe
05.02.2020, 20:48
ich verwende immer die Anzahl der max. möglichen ADC-Stufen, in deinem Falle also 255 (und bin auch nie auf die Idee gekommen, 256 einzusetzen ;) ).

es entspricht ja auch dem Dreisatz

n/ADC_max = x/Volt_max

Moppi
05.02.2020, 20:52
Der höchste Wert meines ADU bei 8 Bit ist aber nicht 256 sondern nur 255
somit entspricht der umgerechnete ADU Wert 255 nicht meiner Referenzspannung von 5 Volt
sondern nur 4,98046874 Volt. Da fehlt doch was ;)

Eigentlich müsstest Du den Max-Spannungswert, der am Eingang gemessen werden kann (und durch AREF bestimmt wird), durch 255 teilen. "0V" ist der 256ste Wert.


and the maximum value represents the voltage on the AREF pin minus 1 LSB

Wie das gemeint ist, keine Ahnung. Vielleicht sollte man messen, wieviel Spannung am ADC-Eingang einen Wert von 255 ergibt (wenn am AREF 5V anliegen).
Es könnte auch so gemeint sein, dass der Maximalwert (eben die 5V am AREF) ein Ergebnis von 254 liefert und wenn die Spannung über die Max-Spannung geht, der ADC dann 255 zurückgibt.


MfG

Searcher
06.02.2020, 03:29
Bei einem 8 Bit ADC habe ich 256 Stufen.
Wenn ich 256 Stufen habe, wäre ein Schritt die Referenzspannung / 256
Nehmen wir an, ich habe eine Referenz von 5 Volt, dann wäre dies also
5 / 256 = 0,01953125 Volt

Genau, eine Stufe mit 0,01953125 Volt von 256 Stufen. Jede Stufe hat eine Höhe von 0,01953125 Volt. Die erste Stufe reicht also von 0 bis 0,01953125 Volt. Die halbe Höhe der Stufe liegt bei 0,009765625 Volt und entspricht meiner Vorstellung nach genau dem Spannungswert bei dem der ADC ohne, ich sag mal Toleranz den Wert 0 liefert; Toleranz, die der Stufenhöhe entspricht. (oder eben Quantisierungsintervall heißt)


Der höchste Wert meines ADU bei 8 Bit ist aber nicht 256 sondern nur 255
somit entspricht der umgerechnete ADU Wert 255 nicht meiner Referenzspannung von 5 Volt
sondern nur 4,98046874 Volt. Da fehlt doch was ;)

Hier aber nicht von "Einheit" Stufe auf "Einheit" Wert wechseln ;) (bzw mit 256 rechnen, da Wert 0 bis Wert Wert 255 = 256 Werte sind) Wie oben festgestellt, entspricht der Wert 0 idealerweise einer Spannung von 0,009765625 Volt. Die Rechnung müßte also meiner Meinung nach so lauten:

5 Volt / 256 Stufen = 0,01953125 Volt/Stufe
Wert 0 entspricht idealerweise 0,009765625 Volt
Wert 255 etspricht idealerweise 255 * 0,01953125 Volt + 0,009765625 Volt = 4,990234375 Volt
Aber auch 5 Volt werden noch auf der letzten Stufe mit Wert 255 digitalisiert (4,990234375 Volt + 0,009765625 Volt = 5 Volt)



Mich würde einfach mal interessieren, wie Ihr das handhabt bzw. berechnet, oder wie wurde es euch gelehrt.
Ich nehme also die Anzahl der Stufen, hier also 256 zur Berechnung her.

Gruß
Searcher

Klebwax
06.02.2020, 09:06
Mich würde einfach mal interessieren, wie Ihr das handhabt bzw. berechnet,

Mal das Ende zuerst, ich berechne gar nicht, ich gleiche ab. Ich will das mal an ein paar Beispielen erläutern.

Wenn ich eine Spannung messen will, brauche ich typisch einen Spannungsteiler, da der Eingangsspannungsbereich des ADC nicht passt. Den kann ich mir nicht frei aussuchen, es gibt nicht jeden Widerstandswert und ich hab auch nicht jeden vorrätig. Außerdem sollten die Widerstände klein sein, der ADC möchte eine kleine Eingangsimpedanz und sie sollten groß sein, um die Messspannung nicht zu belasten. Ich schalte also den Spannungsteiler vor den ADC und nehme meine beste Spannungsreferenz oder mein bestes Voltmeter, nehme ein paar Messwerte auf und bestimme damit den Umrechnungsfaktor für meinen µC.

Meist interessiert mich die wirkliche Spannung gar nicht. Wenn ich den Ladezustand eines Akkus überwachen will, stelle ich die Entladeschlußspannung, die ich mir vorstelle, auf dem Labornetzteil ein und lese den ADC aus. Danach benutze ich den reinen ADC-Wert. Ist er kleiner, ist der Akku alle.

Wenn es mal um Strom geht, mach ich das ähnlich. Strom kann man mit dem ADC nicht messen, man kann nur die Spannung an einem Widerstand im Stromkreis messen. Diese Shunts sind häufig klein und damit auch die Spannung. Statt Spannungsteiler kommt hier ein Verstärker ins Spiel. Sowohl den Shunt als auch die Verstärkung kann ich nicht beliebig frei wählen. Also nehme ich mein bestes Amperemeter und gleiche das ganze ab.

Häufig hat man aber Sensoren, die ihren Widerstand ändern. Wenn ich Übertemperatur an einem Motor feststellen möchte, verschalte ich den Sensor, z.B. NTC, bringe ihn auf die Grenztemperatur und lese den ADC aus. Das ist dann mein Grenzwert.

MfG Klebwax

HaWe
06.02.2020, 09:49
Genau, eine Stufe mit 0,01953125 Volt von 256 Stufen. Jede Stufe hat eine Höhe von 0,01953125 Volt. Die erste Stufe reicht also von 0 bis 0,01953125 Volt. Die halbe Höhe der Stufe liegt bei 0,009765625 Volt und entspricht meiner Vorstellung nach genau dem Spannungswert bei dem der ADC ohne, ich sag mal Toleranz den Wert 0 liefert; Toleranz, die der Stufenhöhe entspricht. (oder eben Quantisierungsintervall heißt)


Hier aber nicht von "Einheit" Stufe auf "Einheit" Wert wechseln ;) (bzw mit 256 rechnen, da Wert 0 bis Wert Wert 255 = 256 Werte sind) Wie oben festgestellt, entspricht der Wert 0 idealerweise einer Spannung von 0,009765625 Volt. Die Rechnung müßte also meiner Meinung nach so lauten:

5 Volt / 256 Stufen = 0,01953125 Volt/Stufe
Wert 0 entspricht idealerweise 0,009765625 Volt
Wert 255 etspricht idealerweise 255 * 0,01953125 Volt + 0,009765625 Volt = 4,990234375 Volt
Aber auch 5 Volt werden noch auf der letzten Stufe mit Wert 255 digitalisiert (4,990234375 Volt + 0,009765625 Volt = 5 Volt)



Ich nehme also die Anzahl der Stufen, hier also 256 zur Berechnung her.

Gruß
Searcher

falsch, es sind zwar 256 mögliche Werte, aber von 0 bis 255 (ADC_max) nur 255 Stufen (Schritte, Segmente), in die die 5V (V_max) "segmentiert" werden..
Mein gezeigter Dreisatz zeigt, warum hier 255 stimmt.

Moppi
06.02.2020, 10:14
@siro

Egal, wo Du im Netz schaust, bei Digitalvoltmetern mit einem Arduino, wird immer durch die darstellbaren Werte geteilt. Bei 10 Bit eben 1024.

https://www.electroschematics.com/arduino-digital-voltmeter/
https://www.allaboutcircuits.com/projects/make-a-digital-voltmeter-using-the-arduino/
https://create.arduino.cc/projecthub/next-tech-lab/voltmeter-using-arduino-00e7d1
https://appuals.com/how-to-make-a-digital-dc-voltmeter-using-arduino/

Hier auch andere Beispiele, mit 1023, bei 10 Bit:

https://mechatrofice.com/arduino/voltmeter-dc-dvm
https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/
https://www.freecodecamp.org/news/how-to-make-a-digital-voltmeter-using-arduino-b4dbf5b94d6f/


Wobei bei 10 Bit, zwischen 1023 und 1024, der Unterschied so gering ist, dass man den mit normalen Messgeräten für den Heimgebrauch nicht nachvollziehen kann.
Allerdings wird der Maximalwert von 1023 bei 10 Bit, nicht erst ab der Max-Spannung ausgegeben, sondern scheinbar bereits kurz darunter. Was vielleicht den Schluss zulässt, dass man durch 1024 (oder bei 8 Bit, durch 256) teilt. "Scheinbar" muss ich schreiben, weil ich das nicht genau genug bestimmen kann, weder hab ich eine Referenzspannungsquelle, noch geeichte Meßgeräte.

MfG

HaWe
06.02.2020, 10:22
@siro

Egal, wo Du im Netz schaust, bei Digitalvoltmetern mit einem Arduino, wird immer durch die darstellbaren Werte geteilt. Bei 10 Bit eben 1024.

https://www.electroschematics.com/arduino-digital-voltmeter/
https://www.allaboutcircuits.com/projects/make-a-digital-voltmeter-using-the-arduino/
https://create.arduino.cc/projecthub/next-tech-lab/voltmeter-using-arduino-00e7d1
https://appuals.com/how-to-make-a-digital-dc-voltmeter-using-arduino/

Hier auch andere Beispiele, mit 1023, bei 10 Bit:

https://mechatrofice.com/arduino/voltmeter-dc-dvm
https://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/

Wobei bei 10 Bit, zwischen 1023 und 1024, der Unterschied so gering ist, dass man den mit normalen Messgeräten für den Heimgebrauch nicht nachvollziehen kann.



MfG

es wird eben NICHT IMMER durch die Höhe der Auflösung (256 bzw. 1024 bei 2^8 bzw. 2^10) geteilt, sondern in anderen Quellen AUCH durch die Zahl des größtmöglichen Wertes (z.B. 1023), siehe hier:
voltage =volt* (5.0 / 1023.0);
https://mechatrofice.com/arduino/voltmeter-dc-dvm
und so ist es IMO auch korrekt, siehe Dreisatz, bei dem der größtmögliche ADC-WERT zur größtmöglichen Spannung ins Verhältnis gesetzt wird.

Searcher
06.02.2020, 10:23
falsch, es sind zwar 256 mögliche Werte, aber von 0 bis 255 (ADC_max) nur 255 Stufen (Schritte, Segmente), in die die 5V (V_max) "segmentiert" werden..
Mein gezeigter Dreisatz zeigt, warum hier 255 stimmt.

Für AVRs fand ich noch diese Application Note (http://ww1.microchip.com/downloads/en/appnotes/atmel-2559-characterization-and-calibration-of-the-adc-on-an-avr_applicationnote_avr120.pdf). Im Kapitel "1.1 General ADC Concepts" heißt es:
The output range must be divided into a number of
steps, one for each possible digital output value. This means that one output value does not correspond
to a unique input value, but a small range of input values.

Bei Ausgabewerten von 0 bis 255 gibt es also 256 Bereiche (ranges) für die Eingabewerte. 256 Stufen, Quantisierungsintervalle oder wie man es auch nennen möchte.

HaWe
06.02.2020, 10:29
Für AVRs fand ich noch diese Application Note (http://ww1.microchip.com/downloads/en/appnotes/atmel-2559-characterization-and-calibration-of-the-adc-on-an-avr_applicationnote_avr120.pdf). Im Kapitel "1.1 General ADC Concepts" heißt es:
The output range must be divided into a number of
steps, one for each possible digital output value. This means that one output value does not correspond
to a unique input value, but a small range of input values.

Bei Ausgabewerten von 0 bis 255 gibt es also 256 Bereiche (ranges) für die Eingabewerte. 256 Stufen, Quantisierungsintervalle oder wie man es auch nennen möchte.

nein, bei 0 bis 255 gibt es 255 Bereiche (Quantisierungsintervalle, steps), nicht 256 !!

wenn z.B. nur die ADC-Werte 0,1,2,3 möglich wären (2-bit ADC, 2²=4) , entspräche
0 -> 0 V
1 -> 1,67 V
2- > 3,33 V
3 -> 5 V

das sind 4 Werte, aber nur 3 Schritte, jeder Schritt 1/3 von 5V. Capisce?

Moppi
06.02.2020, 10:35
Um der Sache aus dem Weg zu gehen, einem Irrtum zu unterliegen, kann man auch mit dem Maximalwert des ADC rechnen. Der ist bei 8 Bit 0xFF. Wenn man durch 0xFF teilt und mit 0xFF, zur Probe, multipliziert geht die Rechnung auf. Datentyp muss nur Fließkomma sein. 0xFF entspricht einem Dezimalwert von 255, bei 256 darstellbaren Werten im Hexadezimalsystem (weil die "0" mitgezählt wird).


MfG

Nachtrag: hier gab es dieselbe Diskussion: https://forum.arduino.cc/index.php?topic=215673.0

Searcher
06.02.2020, 10:36
nein, bei 0 bis 255 gibt es 255 Bereiche (Quantisierungsintervalle), nicht 256 !!

wenn z.B. nur die Werte 0,1,2,3 möglich wären (2-bit ADC, 2²=4) , entspräche
0 -> 0 V
1 -> 1,67 V
2- > 3,33 V
3 -> 5 V

das sind 4 Werte, aber nur 3 Schritte, jeder Schritt 1/3 von 5V. Capisce?

Aha, da habe ich wieder was gelernt. Aber nicht über den ADC.

Moppi
06.02.2020, 15:41
Bei einem 8 Bit ADC habe ich 256 Stufen.
Wenn ich 256 Stufen habe, wäre ein Schritt die Referenzspannung / 256
Nehmen wir an, ich habe eine Referenz von 5 Volt, dann wäre dies also
5 / 256 = 0,01953125 Volt

Der höchste Wert meines ADU bei 8 Bit ist aber nicht 256 sondern nur 255
somit entspricht der umgerechnete ADU Wert 255 nicht meiner Referenzspannung von 5 Volt
sondern nur 4,98046874 Volt. Da fehlt doch was ;)




Da fällt mir noch etwa sein:

Die Frage ist, wie der ADC die Werte aufteilt.
So wie Searcher meint, liegen alle Bereiche innerhalb des zu messenden Spannungsbereichs.
Wenn dem so ist, erhältst Du natürlich bei 0xFF diese 4,98046874V.
Denn jedem Digitalwert ist ein Offset und ein Bereich zuzuordnen, der abgedeckt wird.
Während der abgedeckte Bereich eines Wertes immer gleich ist, ist der Offset jedesmal ein anderer.
Der Offset für den letzten Wert ist also 4,98046874V, der abgedeckte Bereich beträgt 0,01953125V.
Macht zusammen 4.99999V. Da hast Du (Rundungsfehler) die 5V Obergrenze.
Der letzte Wert 0xFF reicht also von 4,98046874V bis 5,0V.

Da der Fehler, bezogen auf einen absoluten Spannungswert, bei insgesamt 0,01953125V liegt,
musst Du eigentlich den errechneten Wert runden. Beispielsweise auf 1 Stelle nach dem Komma.
Dann kommst Du bei den errechneten 4,98046874V auf 5,0V.

Und noch etwas, was vielleicht irgendwie interessant ist:
Ein Wert vom ADC entspricht einem analogen Schwellenwert. Bei langsam fallender Spannung liegt die Schwellenspannung theoretisch höher,
bei langsam steigender Spannung liegt die Schwellenspannung niedriger. Weil ein Wert vom ADC einen Spannungsbereich abdeckt.



MfG

oberallgeier
06.02.2020, 16:20
.. Der Offset für den letzten Wert ist also 4,98046874V, der abgedeckte Bereich beträgt 0,01953125V ..Köstlich. Da teilen wir 5 V durch 256 - oder 255 Teile und erhalten ne Zahl auf ein paar Billionstel genau. Noch dazu, wo im Datenblatt (zumindest in Atmel-42735B-ATmega328/P_Datasheet_Complete-11/2016) steht: ±2 LSB Absolute Accuracy . . . Schön, gut - es geht hier um die Theorie. Aber ich finde so wunderbare Stellenvermehrung einfach - wunderbar - köstlich.

Ich will ja nicht päpstlicher sein als der Papst, aber die Strecke von Hamburg nach Südschwaben (wo ich wohne) auf Milliardstel aufzuteilen hieße die Entfernung auf etliche Zentimeter (wenige Dezimeter) genau anzugeben. Und wenn man das Ganze auf 256 Teile aufteilt . . . gut , sind immerhin gut 300 Zentimeter.


.. Bei einem 8 Bit ADC habe ich 256 Stufen ..Also in meinen 8Bittern (siehe z.B. Datenblatt oben) können die ADCs nicht nur 8 Bit sondern üblicherweise auch 10 Bit auflösen. Die Daten stehen dann halt in zwei Registern: ADCL und ADCH. Dies nur der Vollständigkeit halber. Die verringerte Auflösung von 8 Bit ist eher ein Sonderfall, der entprechend programmiert werden kann.

HaWe
06.02.2020, 17:11
Köstlich. Da teilen wir 5 V durch 256 - oder 255 Teile und erhalten ne Zahl auf ein paar Billionstel genau. Noch dazu, wo im Datenblatt (zumindest in Atmel-42735B-ATmega328/P_Datasheet_Complete-11/2016) steht: ±2 LSB Absolute Accuracy . . . Schön, gut - es geht hier um die Theorie. Aber ich finde so wunderbare Stellenvermehrung einfach - wunderbar - köstlich.


richtig, es geht um die Theorie.
Zäumen wir das Pferd von hinten auf, am Beispiel eines sehr "kleinen" 2-bit ADCs, weil das Prinzip deutlicher hervortritt:

wie schon angemerkt, hat ein 2bit ADC 2² mögliche ADC-Werte (0,1,2,3) mit 3 Messintervallen.
Daher wären die 5V Messspannung durch 3 zu teilen (entsprechend dem höchsten ADC-Wert), in Schritten zu 5/3=1,666

0 -> 0 V
1 -> 1,67 V
2 -> 3,33 V
3 -> 5 V

Würde man hingegen mit 4 Intervallen rechnen, ergäbe sich, in Schritten zu 5/4=1,25:
0 -> 0 V
1 -> 1,25 V
2- > 2,50 V
3 -> (...5 V)
Hier wird deutlich, dass dann der letzte Schritt (das letzte Intervall) zu groß wäre im Vergleich zum Messbereich und zu den anderen Intervallen.

Bei einem 8-bit ADC mit 256 Messwerten in 255 Stufen/Intervallen (entsprechend dem höchsten ADC-Wert) ist dieses Verhalten "analog":
5V durch 255 geteilt ergäbe gleich große Intervalle (steps), durch 256 geteilt entstünde der gleiche Fehler wie oben beim 2-bitter gezeigt.

Daher ist mein schon im 2. Post gezeigter Vorschlag mit 255er Teiler IMO der korrekte, und nicht der mit 256.

Searcher
06.02.2020, 17:15
wie schon angemerkt, hat ein 2bit ADC 2² mögliche ADC-Werte (0,1,2,3) mit 3 Messintervallen.
Daher wären die 5V Messspannung durch 3 zu teilen (entsprechend dem höchsten ADC-Wert), in Schritten zu 5/3=1,666

0 -> 0 V
1 -> 1,67 V
2 -> 3,33 V
3 -> 5 V

Würde man hingegen mit 4 Intervallen rechnen, ergäbe sich, in Schritten zu 5/4=1,25:
0 -> 0 V
1 -> 1,25 V
2- > 2,50 V
3 -> (...5 V)
Hier wird deutlich, dass dann der letzte Schritt (das letzte Intervall) zu groß wäre im Vergleich zum Messbereich und zu den anderen Intervallen.

Bei einem 8-bit ADC mit 256 Messwerten in 255 Stufen/Intervallen (entsprechend dem höchsten ADC-Wert) ist dieses Verhalten "analog":
5V durch 255 geteilt ergäbe gleich große Intervalle (steps), durch 256 geteilt entstünde der gleiche Fehler wie oben beim 2-bitter gezeigt.

Daher ist mein schon im 2. Post gezeigter Vorschlag mit 255er Teiler IMO der korrekte, und nicht der mit 256.

Falsch!

Extrem könnte man auch einen als Input konfigurierten I/O Pin als einen 1-Bit ADC betrachten mit zwei möglichen Ausgabewerten. Die zu digitalisierende Eingangsspannung am Pin liegt zwischen GND (0 Volt) und Vcc (zB 5V). Der Ausgabe Wert ist 0 oder 1.

Nun die Preisfrage: Es gibt zwei mögliche Ausgabewerte (entweder die 0 oder 1). Gibt es einen oder zwei Bereiche (Quantisierungsintervalle) der Eingangsspannung am Input Pin, die den Ausgabewerten zugeordnet sind? Wie sehen diese aus mit Angabe der von- bis-Werten und zugehörigen Ausgabewerte?

@oberallgeier: Hier nur die Theorie. Die Fehler eines realen ADC sind auch in der App.-Note erwähnt, die ich oben schon mal verlinkt hatte:
http://ww1.microchip.com/downloads/en/appnotes/atmel-2559-characterization-and-calibration-of-the-adc-on-an-avr_applicationnote_avr120.pdf
Dort wird findet man auch den Begriff "perfect ADC", der hier diskutiert wird.

HaWe
06.02.2020, 17:23
Falsch!

Extrem könnte man auch einen als Input konfigurierten I/O Pin als einen 1-Bit ADC betrachten mit zwei möglichen Ausgabewerten. Die zu digitalisierende Eingangsspannung am Pin liegt zwischen GND (0 Volt) und Vcc (zB 5V). Der Ausgabe Wert ist 0 oder 1.

Nun die Preisfrage: Es gibt zwei mögliche Ausgabewerte (entweder die 0 oder 1). Gibt es einen oder zwei Bereiche (Quantisierungsintervalle) der Eingangsspannung am Input Pin, die den Ausgabewerten zugeordnet sind? Wie sehen diese aus mit Angabe der von- bis-Werten und zugehörigen Ausgabewerte?

@oberallgeier: Hier nur die Theorie. Die Fehler eines realen ADC sind auch in der App.-Note erwähnt, die ich oben schon mal verlinkt hatte:
http://ww1.microchip.com/downloads/en/appnotes/atmel-2559-characterization-and-calibration-of-the-adc-on-an-avr_applicationnote_avr120.pdf
Dort wird findet man auch den Begriff "perfect ADC", der hier diskutiert wird.

Falsch!
es geht um die Abbildung von ADC-Messwerten auf zugehörige Spannungen im gesamten Messintervall!
Dabei wäre auch sowohl die niedrigste als auch die höchstmögliche Spannung abzubilden (zu repräsentieren).
ein 1-bit ADC aus deinem Beispiel hat 2 mögliche Messwerte bzw. Zustände (0,1) mit 1 Intervall dazwischen (5/1 = 5):
0 -> 0V
1 -> 5V
Es gibt keine Zwischenschritte oder "fließende Bereiche", da 0 und 1 Integerwerte (Natürliche Zahlen) sind, keine rationalen oder reellen Zahlen: sondern nur feste Schritte in nicht stetigen festen Stufen.
Da die Schrittgröße beim ADC 1 ist, ist die statistische Genauigkeit beim ADC immer ±1, das gleiche gilt für das zugeordnete Spannungswert-Intervall (das hatte oberallgeier bereits angedeutet).

Siro
06.02.2020, 18:11
Ersteinmal Danke an alle, für die Anteilnahme,
wie erwartet, gibt es hier unterschiedlichen Ansichten.

Was ist richtig, was ist falsch, ich weis es auch nicht,
hatte aber grade folgendes Gedankenspiel:

Warum gibt es Spannungsreferenzen zu kaufen die so krumm sind:
2,048V oder 4,096V
Weil sie genau 2^11 bzw. 2^12 entsprechen

Somit hat man bei der entsprechenden Bitbreite pro ADU Schritt exakt 1 mV.
Man erspart sich damit umständliche Berechnungen und ich
vermute mal das war der Sinn dieser krummen Referenzen.

Wenn dem so ist, dann ergibt ein maximaler Aducount beim 11 Bitter
Wertebereich 0..0x7FF (2047 dez) einen Spannungsbereich von 0..2047 Millivolt
Die volle Referenzspannung wird dann nie erreicht, es fehlt ein LSB
so wie zum Beispiel bei Atmel beschrieben.
Dies entspräche der Berechnung Vref/(2^n)
auf den 8 Bitter bezogen wäre es also einem Divisor von 256 = Vref/n

Die Diskussion kann man vermutlich ewig weiterführen,
ich finde aber die Standpunkte/Erläuterungen von euch auch recht interessant.

Wie ja schon Eingangs erwähnt geht es mir nicht darum ob meine Werte aufs letzte Bit stehen,
sondern um die Festlegung, sofern es eine gibt, wie die korrekte Berechnung aussehen müsste.

Es gibt hier z.B. einen Calculator:
https://www.electronicdeveloper.de/ADCWertConverter.aspx
Dieser basiert meiner Meinung nach auf (n-1)

Bei einem 2 Bit Wandler würde ich es wie folgt interpretieren.
Ref/n 5V/4 Schritte = 1,25V Schrittweite

ADC
0 -> 0,00 V 0..1,24
1 -> 1,25 V 1,25..2,49
2 -> 2,50 V 2,50..3,74
3 -> 3,75 V 3,75.....auch bis über Vref

----
@Klebwax:
Im Prinzip ist mir das auch egal wie die Berechnung erfolgt, da ich es auch völlig anders berechne.
Beim Kalibrieren lege ich eine möglichst konstante Spannung an den Messeingang und merke mir den
aktuellen Aducount. Dann weis ich, dass bei dieser Spannung mein Aducount xxx beträgt.
Den Rest kann ich dann berechnen und verlasse mich darauf, dass sich die Messkette linear verhält.
Zudem ist die Bitbreite des ADU damit völlig eagl, wobei "mein Code" hier auf maximal 16 Bit beschränkt ist.


U16 CalAtmV = 5000; // Kalibriert wird bei exakt 5,000 Volt
U16 CalCount; // gemessener Aduwert bei der Kalibrierspannung

/*----------------------------------------------------------------------------*/
// Die Umrechnung ADU Count in Millivolt findet dann hier statt:

U16 Calculate_mV(U16 adc_count)
{ S32 value; // we need < 32 Bit value for calculation

value = adc_count; // convert 16 bit value to 32 Bit
value *= CalAtmV; // multiply with Calibration Point Voltage
value /= CalCount; // divide with ADC Calibration count at Calibration Voltage

return (U16)value; // return with 16 Bit result in mV
}
/*----------------------------------------------------------------------------*/


Weiter Diskussionenn habe ich unter anderem auch hier gefunden:
https://www.mikrocontroller.net/topic/261692

Bei Maxim habe ich folgendes gefunden:
34798

Siro

Searcher
06.02.2020, 18:31
es geht um die Abbildung von ADC-Messwerten auf zugehörige Spannungen im gesamten Messintervall!
Nein. Es ging um die Frage die Siro gestellt hatte:


Frage
wie berechne ich einen ADU Schritt.

Ich bin der Meinung, daß es bei einem 8-Bit ADC VRef/256 sind, wie es aus der Application Note des Herstellers zu verstehen ist.
Das bestreitst du und behauptest daß es VRef/255 sind.

Lies dir also nochmal meine Frage durch und versuche von dem 1-Bit ADC auf einen 8-Bit ADC zurückzuschließen. Oder muß ich dazu multiple choice Antworten formulieren.

In jedem Fall verstehe ich nicht, was die Pfeile in
0 -> 0V
1 -> 5V
bedeuten sollen.

HaWe
06.02.2020, 18:34
@Siro:
ich würde die Volt-Bereiche beim 2-bitter völlig anders interpretieren, wobei diese natürlich willkürlich numerisch gesetzt sind und nicht statistisch oder stochastisch verifiziert (was der bessere Weg wäre, über statistische Messreihen mit einem berechenbaren Signifikanzniveau):

0 -> 0 V (0...0,83)
1 -> 1,67 V (0,84...2,50)
2 -> 3,33 V (2,51...4,16)
3 -> 5 V (4,17...5,0)

Diese basieren dann nach wie vor auf dem Intervall-Teiler 5/3, nicht 5/4, denn es sind nach wie vor 3 Intervalle und nicht 4 !
Analog gilt das dann bem 8-bitter für 5/255.

das Zeichen
->
kennzeichnet eine mathematische Abbildung ("Funktionswert") von einem Wert auf einen anderen.

Searcher
06.02.2020, 18:46
ich würde die Bereiche beim 2-bitter völlig anders interpretieren, wobei diese natürlich willkürlich numerisch gesetzt sind und nicht statistisch oder stochastisch verifiziert (was der bessere Weg wäre, über statistische Messreihen mit einem berechenbaren Signifikanzniveau):

anders interpretieren als was? Es geht doch immer noch um die Theorie bei einem perfekten ADC oder bist du schon wieder woanders?



0 -> 0 V (0...0,83)
1 -> 1,67 V (0,84...2,50)
2 -> 3,33 V (2,51...4,16)
3 -> 5 V (4,17...5,0)

Dese basieren dann auf dem Teiler 5/3, nicht 5/4, denn es sind nach wie vor 3 Intervalle und nicht 4 !
Analog gilt das dann bem 8-bitter für 5/255.


3 Intervalle statt 4? Ich zähle in der Tabelle vier Intervalle.

HaWe
06.02.2020, 18:50
3 Intervalle statt 4? Ich zähle in der Tabelle vier Intervalle.
ogottogottogott...

0
[1.Intervall]
1
[2.Intervall]
2
[3.Intervall]
3


Intervall = Zwischenraum.

Wenn du 4 Pfosten im 1m-Abstand hintereinander in den Boden rammst, wieviele Zwischenräume (Intervalle) gibt es? Und wie ist die Gesamtlänge vom 1. bis zum 4. Pfosten??

Das ist Mathe aus der 5. Klasse!!

(PS: Die Werte in den Klammern sind keine Intervalle, sondern die Werte von der vorhergehenden Intervallmitte zur nächsten Intervallmitte)

Searcher
06.02.2020, 19:01
ogottogottogott...

0
[1.Intervall]
1
[2.Intervall]
2
[3.Intervall]
3


Intervall = Zwischenraum.

Wenn du 4 Pfosten im 1m-Abstand hintereinander in den Boden rammst, wieviele Zwischenräume (Intervalle) gibt es? Und wie ist die Gesamtlänge vom 1. bis zum 4. Pfosten??

Das ist Mathe aus der 5. Klasse!!

Wie nennst du die Angabe (0...0,83) und folgende, die mit den Punkten in der Tabelle

0 -> 0 V (0...0,83)
1 -> 1,67 V (0,84...2,50)
2 -> 3,33 V (2,51...4,16)
3 -> 5 V (4,17...5,0)
Auf die bezog ich mich.

HaWe
06.02.2020, 19:06
Wie nennst du die Angabe (0...0,83) und folgende, die mit den Punkten in der Tabelle
Die Werte in den Klammern sind keine Intervalle zwischen ADC-Werten, sondern die Werte von der vorhergehenden Intervallmitte zur nächsten Intervallmitte, sie stellen quasi einen Volt-Wert mit je einer halben Intervallbreite nach oben/unten dar.

Searcher
06.02.2020, 19:18
Die Werte in den Klammern sind keine Intervalle, sondern die Werte von der vorhergehenden Intervallmitte zur nächsten Intervallmitte, sie stellen quasi einen Volt-Wert mit je einer halben Intervallbreite nach oben/unten dar.
Ich dachte schon damit wären die Quantisierungsintervalle gemeint.
Wie sehen denn die Quantisierungsintervalle in der Tabelle aus? Welcher Eingangsspannungsbereich entspricht welchem ADC-Ausgabewert?

Und vielleicht einfacher noch eine Tabelle für den 1-Bit ADC?

HaWe
06.02.2020, 19:28
Ich dachte schon damit wären die Quantisierungsintervalle gemeint.
Wie sehen denn die Quantisierungsintervalle in der Tabelle aus? Welcher Eingangsspannungsbereich entspricht welchem ADC-Ausgabewert?

Und vielleicht einfacher noch eine Tabelle für den 1-Bit ADC?

das ist nicht mein Thema, mir ging es nur um die Abbildung von ADC-Werten auf (virtuelle) Volt-Werte per Messintervall-Teilung (n-1).
Reale Volt-Werte lassen sich IMO nicht durch Division des Voltbereichs durch n-1 (oder gar n) lösen, sodern nur über statistisch abgesicherte Messreihen und Lookup-Tables.

(PS: dein "1-bit ADC" ist nichts real existierendes, denn es wäre ein digitaler Pin mit Schaltschwelle, kein analoger Pin.
Als Gedankenmodell kann aber mein 2-bit-ADC mit 4 Zuständen dienen)

Moppi
06.02.2020, 19:36
@searcher

Erst mal danke, für den Link der Application Note!

Wenn man in "Figure 1-2. Transfer Function of a 3-bit Perfect ADC" die Grafik an schaut, dann sind dort für Werte von 0 bis 7 (also 3 Bit), nur 7 Bereiche eingezeichnet. Von 0 auf 1, von 1 auf 2, von 2 auf 3, von 3 auf 4, von 4 auf 5, von 5 auf 6, von 6 auf 7. Bei einem 3 Bit ADC. Oder lese ich das Diagramm falsch ab?


MfG

Searcher
06.02.2020, 19:44
Ich dachte schon damit wären die Quantisierungsintervalle gemeint.
Wie sehen denn die Quantisierungsintervalle in der Tabelle aus? Welcher Eingangsspannungsbereich entspricht welchem ADC-Ausgabewert?

Und vielleicht einfacher noch eine Tabelle für den 1-Bit ADC?

das ist nicht mein Thema, mir ging es nur um die Abbildung von ADC-Werten auf (virtuelle) Volt-Werte per Messintervall-Teilung.
Reale Volt-Werte lassen sich nicht durch Division des Voltbereichs durch n-1 (oder gar n) lösen, sodern nur über statistisch abgesicherte Messreihen und Lookup-Tables.

Was machst du dann hier überhaupt und verbreitest falsche Informationen? Um Siros Frage zu beantworten ist die Frage nach Anzahl und Größe von Quantisierungsintervallen zentral. Rechne du ruhig weiter mit deinen 255.

PS deine ewige Editiererei geht nicht nur mir auf die Nerven. Erst denken, dann veröffentlichen.

HaWe
06.02.2020, 19:48
Was machst du dann hier überhaupt und verbreitest falsche Informationen? Um Siros Frage zu beantworten ist die Frage nach Anzahl und Größe von Quantisierungsintervallen zentral. Rechne du ruhig weiter mit deinen 255.

PS deine ewige Editiererei geht nicht nur mir auf die Nerven. Erst denken, dann veröffentlichen.

ich editiere sooft ich will, wenn es dir nicht passt, lies es einfach nicht.

- - - Aktualisiert - - -

PS,
im TOP hat Siro eindeutig nach den Teilern n-1 oder n gefragt.

Searcher
06.02.2020, 20:11
@searcher
Wenn man in "Figure 1-2. Transfer Function of a 3-bit Perfect ADC" die Grafik an schaut, dann sind dort für Werte von 0 bis 7 (also 3 Bit), nur 7 Bereiche eingezeichnet. Von 0 auf 1, von 1 auf 2, von 2 auf 3, von 3 auf 4, von 4 auf 5, von 5 auf 6, von 6 auf 7. Bei einem 3 Bit ADC. Oder lese ich das Diagramm falsch ab?

Hallo Moppi,
im Diagramm zähle ich auch nur 7 Stufen. Das stimmt nicht mit dem Satz darüber

For instance, an ADC with eight output steps has a resolution of eight levels or, in other words, three bits
überein. Die Grafik sollte berichtigt werden ;)

Gruß
Searcher

- - - Aktualisiert - - -


- - - Aktualisiert - - -
PS,
im TOP hat Siro eindeutig nach den Teilern n-1 oder n gefragt.
Was du nicht richtig beantwortet hast und Versuche der Richtigstellung mit Argumenten, zB anhand von Quantisierungsintervallen abblockst und dazu auch Diffamierungen benutzt.

HaWe
06.02.2020, 20:18
@Searcher: wenn dus nicht glaubst, dass ich Recht habe, dann glaub ich es für dich mit. :p
Und lass einfach deine bekannten Anfeindungen, insb. wenn dir die Argumente ausgehen! :p

PS,
ab jetzt antworte ich nur noch auf Siros Fragen.

Searcher
06.02.2020, 20:28
Und lass einfach deine bekannten Anfeindungen, insb. wenn dir die Argumente ausgehen! :p

Anfeindungen sind eher von dir bekannt. Bis jetzt sind mir die Argumente nicht ausgegangen. Und Folgendes stammt nicht von mir:


ogottogottogott...
... Das ist Mathe aus der 5. Klasse!!




... Capisce?

Moppi
06.02.2020, 21:03
Der Parallelumsetzer, den man für den C64, nach der Zeitschrift, bauen konnte, der hatte 4 Komparatoren (LM324) und eine 2-Bit-Ausgabe. Also 4 Bereiche. Dazu ein paar LEDs zum Abgleich. Den Mittelwert musste man glaub ich einstellen, über ein Poti. Das Audiosignal wurde über einen Kondensator (weiß nicht mehr genau - 10nF ?) zugeführt. War nicht so dolle, aber es war zu erkennen, was man aufgenommen hatte und konnte das mit dem C64 auch wieder abspielen.


MfG

Manf
07.02.2020, 10:40
Vielleicht ist es ein guter Ansatz die Funktionsweise des Wandlers nachzuvollziehen, um die Frage zu beantworten.
Wenn es nicht so leicht ist die zu ergründen, dann schon einmal die Funktionsweise in umgekehrter Richtung, beim D/A Wandler der ja dazu passend sein sollte.
Da arbeitet man mit PWM und es werden 2 hoch n Werte erreicht mit dem kleinsten Wert 0V und dem größten Wert 5V (oder entsprechend Vref).

HaWe
07.02.2020, 10:51
Vielleicht ist es ein guter Ansatz die Funktionsweise des Wandlers nachzuvollziehen, um die Frage zu beantworten.
Wenn es nicht so leicht ist die zu ergründen, dann schon einmal die Funktionsweise in umgekehrter Richtung, beim D/A Wandler der ja dazu passend sein sollte.
Da arbeitet man mit PWM und es werden 2 hoch n Werte erreicht mit dem kleinsten Wert 0V und dem größten Wert 5V (oder entsprechend Vref).
nein, es werden nicht (2 hoch n) Werte erreicht, sondern (2 hoch n) -1, wobei n die Bitzahl (ADC-Bit-Auflösung) ist.
Für einen 8-bitter also

(2 hoch 8 ) - 1 = 256-1 = 255

was genau der maximalen Größe der erreichbaren ADC-Werte entspricht.
Und wir brauchen hier auch nicht die Mathematik neu zu erfinden:
werden 2 Skalierungen linear in Relation gesetzt, gilt immer noch der Dreisatz

a/aMax=v/vMax, also hier (a= abgelesene ADC-Variabe, v=korrelierte Volt-Variable)
a/255=v/5
also
v=(a/255)*5

Moppi
07.02.2020, 11:01
Mit dem einen LSB war es mir bisher schleierhaft. Weil im Datenblatt der ATmega ist "LSB" nur als niederwertigstes Byte beschrieben (zumindest habe ich nichts anderes gefunden). Obwohl damit eigentlich nur das niederwertigste Bit gemeint sein kann. Ich finde aber auch die Formulierung etwas irreführend, wenn ich nach der Auflösung frage und beantworte die Frage damit, dass sich dass auf einen best. Wert bezieht, minus einem Bit der Auflösung (die eben unbekannt ist). Aber ist egal. Auf manchen Webseiten ist das bildlich dargestellt. Und wenn es eben in den Datenblättern heißt: "The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB", dann sollten sich alle Bereiche (nämlich 256, bei 8 Bit, bzw. 1024 bei 10 Bit) zwischen 0V und Max (z.b. 5V) befinden. Daher ist dann durch die Zahl der Bereiche zu teilen.

MfG

HaWe
07.02.2020, 11:08
nein, die "Bereiche" sind die Anzahl der "Schritte" zwischen dem niedrigsten (0) und dem höchstmöglichen ablesbaren Wert (z.B. 255 oder 1023).
Die ganzen Formulierungen in Datenblättern sind aber immer nur der mehr oder weniger taugliche Versuch, den simplen Dreisatz in Worte zu fassen, oft eben sehr missverständlich.

Der höchste erreichbare (ablesbare) ADC-Wert ist 255 (oder ggf. 1023), die höchstmögliche Referenzspannung 5V, und daher

a/aMax=v/vMax, also hier (a= abgelesene ADC-Variabe, v=korrelierte Volt-Variable)
a/255=v/5
also
v=(a/255)*5

Holomino
07.02.2020, 11:41
nein, bei 0 bis 255 gibt es 255 Bereiche (Quantisierungsintervalle, steps), nicht 256 !!

wenn z.B. nur die ADC-Werte 0,1,2,3 möglich wären (2-bit ADC, 2²=4) , entspräche
0 -> 0 V
1 -> 1,67 V
2- > 3,33 V
3 -> 5 V

das sind 4 Werte, aber nur 3 Schritte, jeder Schritt 1/3 von 5V. Capisce?
Kannst Du das mal bitte für einen 1Bit-Wandler auf 5V vorrechnen?

HaWe
07.02.2020, 11:55
Kannst Du das mal bitte für einen 1Bit-Wandler auf 5V vorrechnen?

habe ich oben schon getan, und wo ist das Problem? Es rechnet sich ganz genau so: probier's selber aus!

Holomino
07.02.2020, 12:42
Weil Deine Werte nicht stimmen.
Das Ergebnis einer AD-Wandlung gibt das Intervall zurück. Die Intervalle sitzen nicht zwischen den quantisierten Messwerten, sondern um die Messwerte herum. Insofern ist der Vergleich mit dem Zaunlattenprinzip hanebüchender Unsinn.

Bei der 2Bit-Wandlung ergibt sich:
0 U<1,25V
1 1,25V<=U<2,5V
2 2,5V<=U<3,75V
3 3,75V<=U

Genau das gibt der von Siro zitierte Satz aus dem DB wieder.
… and the maximum value represents the voltage on the AREF pin minus 1 LSB.

Sprich: 0x3FF sind beim AVR de facto nicht 5V. Nicht in der Theorie und auch nicht in der Praxis.

Eigentlich hatte ich gehofft, Dich durch die Rückführung auf das einfachst mögliche Beispiel noch einmal mit der Nase drauf zu stoßen.

Aber nein, HaWe weiß es besser!

HaWe
07.02.2020, 12:57
nein, es geht um die Abbildung des 0...1 ADC-Intervalls (edit: oder des entspr. höher auflösenden ADC-Bereichs) auf das Volt-Intervall 0...5V, und diese Funktion ist weder bijektiv noch umkehrbar noch stetig.
Es wird also der kleinste ADC-Wert auf den kleinsten Volt-Wert und der größte ADC-Wert auf den größten Volt-Wert abgebildet,
und gibt es ADC-Werte dazwischen, dann nach Dreisatz wie gezeigt
a/aMax=v/vMax

Es geht also insb. auch nicht um die Umkehrfunktion Volt -> ADC.

1bit => 2 hoch 1 mögliche Werte = 2,
max ADC Wert (2 hoch 1) -1 = 1
a/aMax=v/vMax
<=> v=(a/aMax)*vMax
a=0 => v=0*5=0
a=1 => v=1*5=5

0 -> 0V
1 -> 5V

es werden keine Intervalle zurückgegeben, sondern mathematisch linear korrelierte Werte.
Aber nein, Holomino weiß es besser!

Manf
07.02.2020, 12:59
Vielleicht hilft es in der Klärung wenn man am Beispiel D/A Wandler mit PWM benennt, welcher der 2 hoch n Werte nicht erreicht wird.

Im Beispiel n = 8 sind grundsätzlich die Werte 0, 1, 2, ... 254, 255 erreichbar, das wären schon 256 Werte.

HaWe
07.02.2020, 13:13
der höchste erreichbare Wert bei 8-bittern ist 255, und nur der geht in den Dreisatz mit ein, und der entspricht der Anzahl der Einzel-Mess-Schritte.
Es ist auch nicht eindeutig klar, was du jetzt eigentlich aussagen willst, wenn du dich auf "256 Werte" beziehst, das ist sehr unklar formuliert.
Ich denke nicht, dass du damit meinen könntest, man soll durch 256 teilen, denn das wäre mathematischer Unsinn, und auch bei pwm ist ja 255 der höchstmögliche Wert, wenn man diese Analogie bemühen möchte

Moppi
07.02.2020, 13:59
Ich habe im Datenblatt vom 328P gelesen und tatsächlich noch etwas gefunden:



28.7. ADC Conversion Result


After the conversion is complete (ADCSRA.ADIF is set), the conversion result can be found in the ADC
Result Registers (ADCL, ADCH).


For single ended conversion, the result is
ADC = Vin x 1024 / Vref


where VIN is the voltage on the selected input pin, and VREF the selected voltage reference (see also
descriptions of ADMUX.REFSn and ADMUX.MUX). 0x000 represents analog ground, and 0x3FF
represents the selected reference voltage minus one LSB.



Und ich habe für mich nachgerechnet


Schritt 1:
----------
geg: Vin = Vref = 5V


5V / 1024 = 0,0048828125V
5V - 0,0048828125 = 4,9951171875V


Schritt 2:
----------
geg: Vin = 4,9951171875V
Vref = 5V

ADC = 4,9951171875V x 1024 / 5V
ADC = 1023

Probe:
1023 x 5V / 1024 = 4,9951171875V


Ergo
-----
ADC x 5V / 1024 = Vin

bzw.


Vin = ADC x Vref / 1024




Nachtrag:

Datenblatt unter: ADC Conversion Result (Abschnitt 28.7 - ATmega328P, 26.7 - ATmega640-1280-1281-2560-2561).
Beim ATmega640 ... gibt es noch eine Tabelle "Correlation Between Input Voltage and Output Codes".

Holomino
07.02.2020, 13:59
der höchste erreichbare Wert bei 8-bittern ist 255, und nur der geht in den Dreisatz mit ein, und der entspricht der Anzahl der Einzel-Mess-Schritte.
Es ist auch nicht eindeutig klar, was du jetzt eigentlich aussagen willst, wenn du dich auf "256 Werte" beziehst, das ist sehr unklar formuliert.
Ich denke nicht, dass du damit meinen könntest, man soll durch 256 teilen, denn das wäre mathematischer Unsinn, und auch bei pwm ist ja 255 der höchstmögliche Wert, wenn man diese Analogie bemühen möchte

Doch, genau das tut man. Man teilt VREF durch die Größe des Wertebereiches, also 256. VRef gibt's in der Ergebnismenge nicht. Der Wert springt bei 255*VRef/256 auf 0xFF.

Bei VRef = 5V bleibt also als einzige korrekte Interpretation des Wertes 0xFF in der Anzeige:

U>4,980V

HaWe
07.02.2020, 15:23
Doch, genau das tut man. Man teilt VREF durch die Größe des Wertebereiches, also 256. VRef gibt's in der Ergebnismenge nicht. Der Wert springt bei 255*VRef/256 auf 0xFF.

Bei VRef = 5V bleibt also als einzige korrekte Interpretation des Wertes 0xFF in der Anzeige:

U>4,980V

wer das so tut und partout falsch rechnen will, soll es meinetwegen tun.
Wer genug Verstand besitzt, sollte hingegen inzwischen wissen, wie und warum man es richtig machen kann und soll, indem man durch (n-1) dividiert.
Es wurde aber inzwischen von mir alles gesagt und gezeigt, was nötig war, und ich muss auch niemanden überzeugen, der sich logischen Argumenten verschließt - daher bin ich jetzt hier raus.

Robotniks
07.02.2020, 16:17
Informatiker am Bahnhof: 0, 1, 2, 3, 4 -> wo ist mein 5. Koffer :-k

Holomino
07.02.2020, 16:46
wer das so tut und partout falsch rechnen will, soll es meinetwegen tun.
Wer genug Verstand besitzt, sollte hingegen inzwischen wissen, wie und warum man es richtig machen kann und soll, indem man durch (n-1) dividiert.
Es wurde aber inzwischen von mir alles gesagt und gezeigt, was nötig war, und ich muss auch niemanden überzeugen, der sich logischen Argumenten verschließt - daher bin ich jetzt hier raus.
Das hat keine höhere Logik. Das folgt dem einfachen Prinzip von Spannungsteilern und Komparatoren. Ein 1Bit-AD-Wandler hat seine Schaltschwelle zweckmäßigerweise bei VREF/2.
Wer dort mehr hineininterpretiert und falsch rechnet (oder sogar sagt, der Wert "1" ist gleichbedeutend mit "5V"), handelt sich erhöhte Messfehler ein.

HaWe
07.02.2020, 17:09
Das hat keine höhere Logik. Das folgt dem einfachen Prinzip von Spannungsteilern und Komparatoren. Ein 1Bit-AD-Wandler hat seine Schaltschwelle zweckmäßigerweise bei VREF/2.
Wer dort mehr hineininterpretiert und falsch rechnet (oder sogar sagt, der Wert "1" ist gleichbedeutend mit "5V"), handelt sich erhöhte Messfehler ein.

es geht nicht um Schaltschwellen, sondern um die Skalierung von Werten.
Der Dreisatz benutzt immer die niedrigsten möglichen und die höchsten möglichen Grenzwerte als Bezugswerte.
Eine Funktion hat auch immer nur 1 Funktionswert, niemals mehrere oder einen Bereich, sonst ist es keine Funktion sondern eine Relation.
In diesem Fall der ADC-zu-Volt-Umrechnung ist es ein definierter Funktionswert ohne größer oder kleiner irgendwas.
Wer hier die Mathematik neu erfinden will, soll dies für sich tun, aber ohne Anspruch auf Korrektheit: ich kann auch niemanden daran hindern, 5 Koffer von 0 bis 5 zu zählen.
Die Berechnung von Bereichen oder "Schaltschwellen" um den skalierten Wert herum oder darüber oder darunter gehört keinesfalls zur Aufgabe einer Skalierungs- oder Regressionsfunktion: wer hier statistische oder sonstwelche "Bereiche" um die skalierten Werte herum braucht wie Fehlerbreite, Schaltschwellen, Standardabweichungen oder Konfidenzintervalle, soll sie gesondert berechnen (z.B. ± 1/2 Messschrittbreite etc).

- - - Aktualisiert - - -

(sorry, eigentlich wollte ich ja raus sein, aber bestimmte Dummheiten kann ich einfach nicht unwidersprochen stehen lassen -

aber ab jetzt ....)

Searcher
07.02.2020, 18:26
(sorry, eigentlich wollte ich ja raus sein, aber bestimmte Dummheiten kann ich einfach nicht unwidersprochen stehen lassen -

aber ab jetzt ....)
Schon wieder so eine Diffamierung ... Aber braucht ja keiner mehr eine zu "fürchten". Ich habe ein Experiment durchgeführt, das auch jeder einfach selbst nachbauen kann:

Ich habe an den 10-Bit ADC eines ATtiny44 ADC ein 10k Poti angeschlossen und AD-Wandlungen durchgeführt. Aref auf Vcc. Dann mit 8-fach rechts shiften einen 2-Bit ADC simuliert. Die 2-Bit ADC-Ausgabe, also die Werte 0, 1, 2, 3 per RS232 auf den PC Bildschirm und parallel mit einem Multimeter am ADC-Eingang die Spannung gemessen.

Reale Meßwerte: bei Vcc = 5,04V

DMM 0,00V bis 1,26V , ADC-Ausgabe = 0
DMM >1,26V bis 2,52V , ADC-Ausgabe = 1
DMM >2,52V bis 3,78V , ADC-Ausgabe = 2
DMM >3,78V bis 5,03V , ADC-Ausgabe = 3

Das Meßgerät ist kein Präzisionsmeßgerät und der Tiny sitzt nur auf dem Steckbrett. Um Meßwertzittern zu vermeiden habe ich vor dem shiften eine 2-Bit SW-Hysterese verwendet. Die Ungenauigkeit dadurch ist 5v*3/256=0,0585V oder 5V*3/255=0,0588V

Die Meßwerte reichen trotzdem aus um zu entscheiden, ob mit 3 (n-1) oder besser mit 4 (n) gerechnet werden sollte.

Für die Zuordnung einer Spannung zu einer ADC Ausgabe rechne ich Vref/(4*2)+Vref*ADC/4. Ich rechne also mit n, also der Anzahl der möglichen Ausgabewerte beim ADC. Bei 8-Bit ADC also mit 256 und nicht mit den schlechteren 255.

- - - Aktualisiert - - -


Um Meßwertzittern zu vermeiden habe ich vor dem shiften eine 2-Bit SW-Hysterese verwendet. Die Ungenauigkeit dadurch ist 5v*3/256=0,0585V oder 5V*3/255=0,0588V

Fehler ist noch kleiner, da es die letzten beiden Bits des 10-Bit Ergebnisses sind:
5v*3/1024=0,01464V bzw 5v*3/1023=0,01466V für die (n-1) Leute.

HaWe
07.02.2020, 18:39
Die Meßwerte reichen trotzdem aus um zu entscheiden, ob mit 3 (n-1) oder besser mit 4 (n) gerechnet werden sollte.
klarer Fall:
da eine Funktion immer nur 1 Funktionswert pro Argument haben darf und sowohl die unterste Grenze (0) als auch die oberste (5) abgebildet werden müssen, um insb. "oben" nichts abzuschneiden:
mit n-1. Beim 2-bitter also exemplarisch dann Schritte zu je 5V/3:

0 -> 0 V
1 -> 1,67 V
2- > 3,33 V
3 -> 5 V


Wer Grenzen um die Zielwerte braucht, kann diese um die per (n-1)-Divisor berechneten skalierten Werte herum frei definieren, nur sind sie dann eben nicht ganz symmetrisch zur nächstniedrigeren und der nächsthöheren "Schaltschwelle" (idealerweise sollten sie etwa in der Mitte dazwischen liegen, außer beim niedrigsten und beim höchstmöglichen Wert). Die Asymmetrie sinkt aber mit der Höhe der bit-Auflösung.
Immerhin bleibt dann auch die Möglichkeit zu 5,0V bei ADC=3, anstelle von 3,78V, entsprechend zu pwm.

PS,
Auch können sich andere ADC-Chips in ihren "Schwellen" u.U. anders verhalten (bei SAMD, ESP, ADS1115, PCF8591, MCP3008...) - dies würde dennoch die bisherige Skalierung per Dreisatz in keinster Weise betreffen oder beeinträchtigen
a/aMax=v/vMax,
aMax = (2i)-1,
vMax=vRef (5V),
i=ADC-bit-Auflösung
a=umzuwandelnder ADC-Wert
v=korrespond. skalierter Volt-Wert

Holomino
08.02.2020, 13:28
sinnfrei oder so
https://www.alte-messtechnik.de/technik/ad-wandlung.php -> Flash-Wandler
https://www.spektrum.de/lexikon/physik/analog-digital-wandler/492

oberallgeier
08.02.2020, 13:46
0 -> 0 V
1 -> 1,67 V
2- > 3,33 V
3 -> 5 VDiese Einteilung hatte gestern nichts mit der Realität zu tun, heute nicht und morgen wird sie es auch nicht haben.

Unter https://www.spektrum.de/lexikon/phys...al-wandler/492 (https://www.spektrum.de/lexikon/physik/analog-digital-wandler/492) ist der Aufbau eines AD-Wandlers zu finden, dessen Teilerverhältnisse klar zeigen:
Es gibt dieses "krumme" 1:3 Teilungsverhältnis nicht.

Insofern ist Deine Skalierung komplett an der Realität vorbei - unnötige Kosmetik, die krampfhaft zu verschleiern versucht, dass man VREF mit einem AD-Wandler nicht mehr messen kann. Versteh ich nicht.

Searcher
08.02.2020, 15:36
Die Meßwerte reichen trotzdem aus um zu entscheiden, ob mit 3 (n-1) oder besser mit 4 (n) gerechnet werden sollte.

Beim AVR wird die Größe eines Quantisierungsintervalls mit Vref/n errechnet. n ist die Anzahl möglicher Ausgabewerte des ADC. Bei einem 2-Bit ADC ist n=4 und ein Quantisierungsintervall bei Vref=5V somit 5V/4=1,25V.



a/aMax=v/vMax,
aMax = (2i)-1,
vMax=vRef (5V),
i=ADC-bit-Auflösung
a=umzuwandelnder ADC-Wert
v=korrespond. skalierter Volt-Wert

Im ersten Quantisierungsintervall eines 2-Bit ADC wird jede Spannung von 0V bis 1,25V zu einer a=0 digitalisiert. Bei Skalierung mit a/aMax=v/vMax (aMax=n-1), v=a/aMax*vMax is v=0. Bei einer Eingangsspannung von bis zu 1,25V wird also zu 0V skaliert. Das sind bis zu 100% Fehler bezogen auf das Quantisierungsintervall. Der Fehler sinkt in den folgenden Quantisierungsintervallen des Meßbereichs, steigt aber ab Mitte Meßbereich (1/2 Vref) wieder auf 100% im letzten Qantisierungsintervall. Ein Skalierungsfehler, der abhängig von der Eingangsspannung ist.

Der 100% max. Fehler im ersten und letzten Quantisierungsintervall ist auch bei anderen ADC-Auflösungen zu berücksichtigen.



... rechne ich Vref/(4*2)+Vref*ADC/4. Ich rechne also mit n,
Bei Verwendung von V=Vref/(n*2)+Vref*ADC/n ist der Fehler über alle Quantisierungsintervalle maximal 50% bezogen auf das Quantisierungsintervall und in jedem Fall, auch bei anderen ADC-Auflösungen kleiner als der maximale Fehler bei a/aMax=v/vMax.


(Bin bewußt nicht auf Feinheiten an den Quantisierungsintervallgrenzen eingegangen, da sie für mich nur unwesentlichen Einfluß auf meine Betrachtung hätten und hoffe natürlich, daß sich keine Rechenfehler und vor allem keine logischen Fehler eingschlichen haben - nachrechnen erwünscht)

HaWe
08.02.2020, 16:19
rechne ich Vref/(4*2)+Vref*ADC/4. Ich rechne also mit n
diese Formel ergibt
für ADC=0: 5/8+0/4=5/8=0,65V, kann also keine 0V abbilden;
für ADC=3: 5/8+15/4=35/8=4,375V, kann also auch keine 5V abbilden -
zugunsten gleich großer Fehlerbereiche.

Ziel aber muss es sein, den gesamten Volt-Bereich abzubilden, ähnlich wie es eine pwm-Funktion tut: auch hier erwarte ich bei einem 2bit-pwm-Generator pwm(0)=0V und bei pwm(3)=5V (bzw. bei einem 8-bit-pwm-Generator pwm(255)=5V).
Auch ein digitalWrite(1), analog zu einem "theoretischen" 1-bit-Wandler per analogWrite(1), ergibt ja die vollen 5V.
Das "Aufspreizen" des Zielwertebereichs auf den vollen Voltbereich (wie bei pwm) erfordert die Inkaufnahme eines größeren möglichen Fehlerintervalls v.a. beim niedrigsten als auch beim höchsten ADC-Wert, aber der Fehler bei ADC-Werten beträgt ja statistisch sowieso ±1 ADC, also geht der "Aufspreizfehler" im statistischen Fehler unter und ist spätestens bei 8-bittern bei 1/255 Schritten auch messtechnisch unerheblich.


Eine simple Division von 5V/256 Schritte wie im TOP als Möglichkeit ( gegenüber 5V/255 ) angefragt, hätte allerdings überhaupt keine Berechtigung.

Holomino
08.02.2020, 19:08
1) ein Wert repräsentiert 1/Res vom Messbereich (Res = Resolution)
2) Lt. DB ist der höchste vom Wandler ausgebbare AD-Wert "Res-1" äquivalent zu URef-URef/Res (...and the maximum value represents the voltage on the AREF pin minus 1 LSB)

3) In den Dreisatz eingesetzt
(URef-URef/Res)/(Res-1) = U/ADWert

4) Für ADWert= Res eingesetzt:
(URef-URef/Res)/(Res-1) = U/Res

umgestellt:
Res*(URef-URef/Res)/(Res-1) = U

Res im Zähler herausgekürzt:
(Res*URef-URef)/(Res-1) = U

Und aus dem Zähler das URef herausgezogen:
Uref(Res-1)/(Res.1) = U

Gekürzt:
URef= U (für ADWert = Res)

Das zeigt zwei Dinge:
a) URef wird in der Skalierung nie erreicht, da das eingesetzte Res vom AD-Wandler nicht ausgegeben werden kann (es fehlt eine Bitstelle)
b) Wenn der hypothetische AD-Wert Res gleichbedeutend zu URef ist, kann ich den Dreisatz auch vereinfacht bilden:

URef/Res = U/ADWert

HaWe
08.02.2020, 19:52
Wenn eine angelegte 5V (bzw. 3.3V bei SAMD) Messspannung per ADC-Wert 255 (oder 1023 oder 2047,...) abgebildet werden kann, dann muss es auch möglich sein, diese Werte auf 5V (bzw. 3.3V) zurückzurechnen.
Genau dazu dient die mathematische Dreisatz-Formel
a/aMax=v/vMax
und hier sind die Fehler nicht größer als die immanenten, genuinen und statistischen ADC-Auflösungen und -Fehler.

kA ob das ein AVR kann, aber meine SAMDs, mein PCF8591 und mein ADS1115 können das.

Gnom67
08.02.2020, 20:16
Oh mann... das ist ja ne Diskussion... da dreht sich einem alles...
Das geballte Fachwissen eines ganzen Forums in voller Pracht!

](*,)

oberallgeier
08.02.2020, 23:29
Oh mann ..Genau, da rührt sich mal was. Irgendwie doch ein hübsches Beispiel (mit) der numerischen Mathematik. Sozusagen alles gequantelt - und hier fast "zum anfassen"?

Ich lass da gern die mathematische Ethik oder Puristik sein (kann man das so nennen?) - also besser: lasse die brave Mathe sein wie sie ist, kümmere mich manchmal herzlich wenig um abgeschlossene, halboffene, beschränkte oder wie auch immer Intervalle, nicht um deren Längen und Grenzen. Solange im Testlauf was vernüftiges rauskommt . . .

Searcher
09.02.2020, 08:03
Wenn eine angelegte 5V (bzw. 3.3V bei SAMD) Messspannung per ADC-Wert 255 (oder 1023 oder 2047,...) abgebildet werden kann, dann muss es auch möglich sein, diese Werte auf 5V (bzw. 3.3V) zurückzurechnen.
Genau dazu dient die mathematische Dreisatz-Formel
a/aMax=v/vMax
und hier sind die Fehler nicht größer als die immanenten, genuinen und statistischen ADC-Auflösungen und -Fehler.

kA ob das ein AVR kann, aber meine SAMDs, mein PCF8591 und mein ADS1115 können das.

kA was da beim AVR nicht bekannt ist. Falls für die Rückrechnung ein DA-Wandler gemeint ist: Der AVR hat keinen und zumindest der PCF8591 kann in https://www.nxp.com/docs/en/data-sheet/PCF8591.pdf nach Fig 6 auf Seite 7 die Vref nicht erreichen.

Für mich wäre eine Rückrechnung und die Bedingungen dazu eine Anforderung an die Anwendung und nicht an die Gewinnung eines Wertes aus der AD Wandlung oder einer DA-Hardware. Eigentlich möchte man Fehler nicht weitergeben.

Zur Abschätzung eines Fehlers eines Systems nimmt man doch immer den größten zu Erwartenden an. Der ist bei der Formel a/aMax=v/vMax größer als bei der Rechnung mit n=(Anzahl. d. ADC Rückgabewerte).

"immanenten, genuinen und statistischen ADC-Auflösungen und -Fehler": Das bedarf wohl einer Erläuterung. Ich kann nicht wirklich was damit anfangen.

HaWe
09.02.2020, 09:47
kA was da beim AVR nicht bekannt ist. Falls für die Rückrechnung ein DA-Wandler gemeint ist: Der AVR hat keinen und zumindest der PCF8591 kann in https://www.nxp.com/docs/en/data-sheet/PCF8591.pdf nach Fig 6 auf Seite 7 die Vref nicht erreichen.

Für mich wäre eine Rückrechnung und die Bedingungen dazu eine Anforderung an die Anwendung und nicht an die Gewinnung eines Wertes aus der AD Wandlung oder einer DA-Hardware. Eigentlich möchte man Fehler nicht weitergeben.

Zur Abschätzung eines Fehlers eines Systems nimmt man doch immer den größten zu Erwartenden an. Der ist bei der Formel a/aMax=v/vMax größer als bei der Rechnung mit n=(Anzahl. d. ADC Rückgabewerte).

"immanenten, genuinen und statistischen ADC-Auflösungen und -Fehler": Das bedarf wohl einer Erläuterung. Ich kann nicht wirklich was damit anfangen.

schon wieder so ein Quark
beim PCF8591 werden bei einer angelegten 5V Messspannung (identisch mit Vref) 255 angezeigt.
Lese ich also 255 ab, kann ich per Dreisatz trivial zurückrechnen auf die anliegende Volt-Zahl.

a/aMax=v/vMax
v=(255/255)*5V=5V

Und was soll der Quatsch, dass der PCF... die 5V "nicht erreicht"??
Klar "erreicht er" 5V, sie liegen schließlich in diesem Falle an - und dann misst er 255!
Und völlig klar: wenn man Intervalle quantelt, dass bereits ein minimal kleinerer Wert kurz vor 5V ebenfalls schon 255 ergibt, das ist bei Stufenintervallen nun mal so.

Nicht dass ich hier missverstanden werde - ich will nicht Searcher (oder Klebwax) überzeugen, das ist offensichtlich sinnlos: ich will nur vermeiden, dass irgendwer sich von dem Unsinn verwirren lässt oder ihm gar Glauben schenkt.

Wie ein Dreisatz in der Mathematik berechnet wird, brauchen wir hier wirklich nicht neu erfinden.

Gnom67
09.02.2020, 09:50
Sagt mal, habt ihr alle zu viel Karneval gefeiert und euch die Hirnchen weggesoffen?

0 V ~ digital 0 = 0
Vref ~ digital max = (2^n)-1

Das Intervall ist Vref/(2^n)-1

Mit dem simplen Beispiel eines 3-Bit-ADC und einer Referenzspannung von 7 Volt kann dich das jeder Viertklässler ableiten:

(2^3)-1 = 7

0 = 0 V
1 = 1 V
2 = 2 V
3 = 3 V
4 = 4 V
5 = 5 V
6 = 6 V
7 = 7 V

Tut das Not, dass ihr hier über 60 Beiträge lang versucht, euch mit irgendwelchen dämlichen Argumenten als neunmalkluge Superbesserwisser zu präsentieren und dabei jede Menge völligen Blödsinn verbreitet? Da bekommt man arge Zweifel an den Motiven, die einige Leute hier ins Forum treiben.

HaWe
09.02.2020, 10:22
Sagt mal, habt ihr alle zu viel Karneval gefeiert und euch die Hirnchen weggesoffen?

0 V ~ digital 0 = 0
Vref ~ digital max = (2^n)-1

Das Intervall ist Vref/(2^n)-1

Mit dem simplen Beispiel eines 3-Bit-ADC und einer Referenzspannung von 7 Volt kann dich das jeder Viertklässler ableiten:

(2^3)-1 = 7

0 = 0 V
1 = 1 V
2 = 2 V
3 = 3 V
4 = 4 V
5 = 5 V
6 = 6 V
7 = 7 V

Tut das Not, dass ihr hier über 60 Beiträge lang versucht, euch mit irgendwelchen dämlichen Argumenten als neunmalkluge Superbesserwisser zu präsentieren und dabei jede Menge völligen Blödsinn verbreitet? Da bekommt man arge Zweifel an den Motiven, die einige Leute hier ins Forum treiben.

danke!
blättern wir also doch noch mal 60 Beiträge zurück...: https://www.roboternetz.de/community/threads/74564-Ein-ADC-Schritt-Ref-n-oder-Ref-%28n-1%29?p=658448&viewfull=1#post658448

Gnom67
09.02.2020, 10:29
danke!
blättern wir also doch noch mal 60 Beiträge zurück...: https://www.roboternetz.de/community/threads/74564-Ein-ADC-Schritt-Ref-n-oder-Ref-%28n-1%29?p=658448&viewfull=1#post658448

Eben. Da rollen sich einem die Fußnägel hoch, wenn man hier seitenlang Blödsinn lesen muss. Sicher kann man da theoretisch noch manches Detail diskutieren - aber dazu müsste man erst mal wissen, welchen ADC der Fragende überhaupt einsetzt. Für die praktische Anwendung wird das aber in den meisten Fällen nicht ausschlaggebend sein.

Es spricht sehr für den Fragesteller, dass er sich beizeiten (mutmaßlich augenrollend) aus diesem Thread ausgeklinkt hat. Was hier abgeht, ist mehr als peinlich.

oberallgeier
09.02.2020, 10:43
.. Sicher kann man da theoretisch noch manches Detail diskutieren .. Was hier abgeht, ist mehr als peinlich.Wie sooo oft: es wurde zwar schon alles gesagt, aber es hat noch nicht jeder alles gesagt (kombiniert mit: doppelt hält besser). Und wer´s nicht gleich glaubt, der kriegt hinterher noch . . . bis er es glaubt oder nachgibt/aufgibt oder Manf den Thread schließt.

Searcher
09.02.2020, 11:17
. . . Manf den Thread schließt.

Gerne, wenn festgestellt wird, daß ein AVR n-Bit ADC auch 2 hoch n Quantisierungsintervalle hat und nicht nur 2 hoch n - 1 wie hier trotz Beleg rundweg abgelehnt wird.
https://www.roboternetz.de/community/threads/74564-Ein-ADC-Schritt-Ref-n-oder-Ref-%28n-1%29?p=658460&viewfull=1#post658460

Im gleichen Beitrag wird eine Umrechnungstabelle präsentiert, die als einzig richtige vertreten wird. Gegen die Tabelle bzw die Berechnung, die zu der Tabelle führt habe ich grundsätzlich nichts. Ich finde nur, daß meine Handhabung/Verständnis, die mit n statt mit (n-1) arbeitet auch berechtigt ist und sogar geringere Fehler aufweist.

Der TO hatte ja ausdrücklich nach unseren Verfahren gefragt:

Mich würde einfach mal interessieren, wie Ihr das handhabt bzw. berechnet, oder wie wurde es euch gelehrt.

Welche Methode in der Praxis angewendet wird, bleibt ja wohl jedem selbst überlassen.

HaWe
09.02.2020, 11:31
Sagt mal, habt ihr alle zu viel Karneval gefeiert und euch die Hirnchen weggesoffen?

0 V ~ digital 0 = 0
Vref ~ digital max = (2^n)-1

Das Intervall ist Vref/(2^n)-1

Mit dem simplen Beispiel eines 3-Bit-ADC und einer Referenzspannung von 7 Volt kann dich das jeder Viertklässler ableiten:

(2^3)-1 = 7

0 = 0 V
1 = 1 V
2 = 2 V
3 = 3 V
4 = 4 V
5 = 5 V
6 = 6 V
7 = 7 V

Tut das Not, dass ihr hier über 60 Beiträge lang versucht, euch mit irgendwelchen dämlichen Argumenten als neunmalkluge Superbesserwisser zu präsentieren und dabei jede Menge völligen Blödsinn verbreitet? Da bekommt man arge Zweifel an den Motiven, die einige Leute hier ins Forum treiben.


Gerne, wenn festgestellt wird, daß ein AVR n-Bit ADC auch 2 hoch n Quantisierungsintervalle hat und nicht nur 2 hoch n - 1 wie hier trotz Beleg rundweg abgelehnt wird.
https://www.roboternetz.de/community/threads/74564-Ein-ADC-Schritt-Ref-n-oder-Ref-%28n-1%29?p=658460&viewfull=1#post658460

Im gleichen Beitrag wird eine Umrechnungstabelle präsentiert, die als einzig richtige vertreten wird. Gegen die Tabelle bzw die Berechnung, die zu der Tabelle führt habe ich grundsätzlich nichts. Ich finde nur, daß meine Handhabung/Verständnis, die mit n statt mit (n-1) arbeitet auch berechtigt ist und sogar geringere Fehler aufweist.

Der TO hatte ja ausdrücklich nach unseren Verfahren gefragt:


Welche Methode in der Praxis angewendet wird, bleibt ja wohl jedem selbst überlassen.

bei so viel (Sturheit? Besserwisserei? ) verschlägt es einem wirklich die Sprache.
Bei der Rückrechnung von ADC auf Volt gibt es nur ((2^i)-1) (also z.B. 255) Schritte/Bereiche, egal wieviele es bei der Umkehrfunktion gibt oder gab!
Für die Rückrechnung ist also in diesem Beispiel alleinig der Bereich 0 bis 255 zum 5V-Bereich interessant, genau wie beim Beispiel des 3-Bitters mit 7 Schritten zum 7V-Bereich.

Soll man so einen Unsinn aber tatsächlich unwidersprochen lassen?

Manf
09.02.2020, 13:18
Positive Beiträge sind die, die zur Lösung beitragen, auch wenn sie nicht immer selbst schon die perfekte Lösung bringen.
Oft lernt man mit eigener Beteiligung mehr als durch das konsumieren des Ergebnisses.
In der Schule wird ja viel über das Lernen zum Wissenserwerb gesprochen, zumal es ja oft auch unterschiedliche Wege zum Ergenis gibt.
Ein Gegenpol dazu bildet die Herabsetzung von Gesprächspartnern die nicht schon gleich alles wissen, das kommt aber hier ja zum Glück nicht vor.
Das Thema selbst haben wir dann ja durch.