Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
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
Strom fließt auch durch krumme Drähte !
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
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... Der Offset für den letzten Wert ist also 4,98046874V, der abgedeckte Bereich beträgt 0,01953125V ..
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.
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... Bei einem 8 Bit ADC habe ich 256 Stufen ..
Ciao sagt der JoeamBerg
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.
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/e...ote_avr120.pdf
Dort wird findet man auch den Begriff "perfect ADC", der hier diskutiert wird.
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
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).
Geändert von HaWe (06.02.2020 um 16:57 Uhr) Grund: typo
Lesezeichen