So erhalten Sie die Eingangsspannung vom ADC-Wert

Ich verwende atmega328p für mein Projekt. Ich muss meine Batteriespannung auslesen und in meiner Cloud anzeigen. Dafür verwende ich ADC. Jetzt bekomme ich den ADC-Wert für die angelegte Eingangsspannung. Aber ich muss den ADC in Spannung umwandeln.

Wenn ich zum Datenblatt gehe, habe ich die folgende Gleichung beobachtetHier

Um also ADC zu konvertieren, Vin=(ADC/1024)*Vref.

Aber als ich das Google durchsuchte, fand ich eine andere Gleichung und es ist

Vin=(ADC/1023)*Vref

Jetzt bezweifle ich, welche Gleichung zu verwenden ist?

Wenn wir 1024 verwenden, ist der ADC-Wert 0001, wenn die Eingangsspannung gleich 1LSB-Spannung ist ( Vref/1024).

Wenn wir 1023 (zweite Gleichung) verwenden, ist der ADC-Wert 0000, wenn die Eingangsspannung gleich 1LSB-Spannung ist ( Vref/1024)

Antworten (3)

Lassen Sie mich zunächst das Bild zitieren, das bereits die Antwort enthält: "0x000 steht für analoge Masse und 0x3FF für die ausgewählte Referenzspannung minus einem LSB". Das würde bedeuten, dass zur Darstellung der Referenzspannung Vref ein LSB-Zählwert mehr benötigt würde, sodass das Ergebnis 0x400 oder 1024 wäre. Eine Spannung gleich Vref kann also einfach nicht als Ergebnis dargestellt werden, es ist ein Sonderfall. Für alle anderen Spannungen, die mindestens 0,5 Schritte unter Vref liegen (zwischen 1022,5 und 1023,5), ist das Ergebnis gültig.

Atmel hat einen ADC-Anwendungshinweis für AVRs, der erklärt, wie der sukzessive ADC funktioniert, und es ist nicht offensichtlich, hilft aber zu verstehen, welcher richtig ist. Es gibt auch viele Threads auf AVRFreaks, bei denen einer richtig ist. Und bewaffnet mit diesen Informationen ist 1024 korrekt und es gibt keinen Fehler im Datenblatt.

In Wirklichkeit sind ADCs nicht perfekt, da die Ergebnisse mehr als 1 Fehlerzahl aufweisen können, und es spielt wirklich keine Rolle, ob 1023 oder 1024 verwendet wird, da Sie im Extremfall Vin = Vref sowieso selten eine Genauigkeit von 1 Zählung von 1024 benötigen .

Wenn Sie also 1023 nehmen, erhalten Sie einen falschen Wert, oder?
Ja. 1023 ist falsch, weil 1024 richtig ist. Aber der Fehler liegt unter 0,098 %.
Was ist der ADC-Wert, wenn vref = 5 V und vin = 4,375 für 3-Bit-ADC? ob die SAR ADC 110 produzieren wird?

10-Bit-ADC bedeutet, dass Sie die Eingabe als Zahl von 0-1023 darstellen können, daher ist die richtige Antwort, 1023 zu verwenden, nicht 1024. Es scheint, als ob ein Fehler im Datenblatt vorliegt, da 0x3FF 1023 ist, nicht 1024.

Aber sie haben erwähnt, dass 0x3FF istVref-1LSB voltage

wenn wir einen n-Bit-ADC betrachten. Es liest die Referenzspannung als (2 ^ n - 1),

aber wenn wir über Schritte sprechen, ist es ((2^n - 1) + 1 (und auch Nullwert zählen))

Beispiel: Wenn Sie beginnen, etwas von "Null" zu zählen. Wenn Sie eine Gesamtzahl von sagen wir 81 haben ... aber es ist wirklich nicht 81, es wird 82 sein (einschließlich 0 als ein Wert)

In Ihrem Fall sprechen Sie also von 10-Bit-ADC, also ... die maximale Referenzspannung, die es lesen kann, ist (2 ^ 10 - 1) = 1023

aber es hat maximale Schritte von 1023 + 1 = 1024

also musst du 1024 nehmen..