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.
Informatiker am Bahnhof: 0, 1, 2, 3, 4 -> wo ist mein 5. Koffer![]()
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 ....)
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 - - -
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.
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
klarer Fall:Die Meßwerte reichen trotzdem aus um zu entscheiden, ob mit 3 (n-1) oder besser mit 4 (n) gerechnet werden sollte.
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
Geändert von HaWe (08.02.2020 um 09:30 Uhr) Grund: ADS1115
sinnfrei oder so
https://www.alte-messtechnik.de/technik/ad-wandlung.php -> Flash-Wandler
https://www.spektrum.de/lexikon/phys...al-wandler/492
Geändert von Holomino (08.02.2020 um 12:53 Uhr) Grund: kroookokokoko - prust
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.
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.
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)
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Lesezeichen