Der Versuch, die Vorskalierungsspannung für ADC mit dem geringsten Fehler zu verstehen

Ich bringe mir EE bei, während ich einen 12-V-DC-Batteriemonitor entwerfe. Ich verwende ein Paar Hall-Effekt-Sensoren, um den Lade- und Laststrom zu verfolgen, und suche nach dem besten Weg, um die Spannung zu messen. [Ein ATmega32u4 nimmt aufeinanderfolgende Lesevorgänge mit dem ADC vor, berechnet einen 1-Sekunden-Durchschnitt und leitet diesen zur Protokollierung und Analyse über USB weiter.]

Das Problem des Fehlers mit ADC hat mich wirklich erschreckt. Es ist wichtig, dass ich aussagekräftige Daten produziere. Es gibt so viele Fehlerquellen – sowohl in meiner Schaltung als auch im ADC – dass es sich anfühlt, als würde man im Dunkeln verrückt spielen. Ich lese viel über die Kalibrierung der ADC-Referenz, aber der erste Schritt besteht darin, eine Methode zum Skalieren des Eingangs auszuwählen.

Mein Spannungsfenster beträgt 10-15 V, insbesondere ein Bereich von 10,5 V bis 14,4 V (3,9 V). Ich habe mir zwei Ansätze ausgedacht, die (hoffentlich) das tun, was ich will:

  1. Eine 10-V-Zenerdiode am invertierenden Eingang eines differenziellen Operationsverstärkers. Wenn ich 10 V ablehne, wird mein Bereich 0,5 V bis 4,4 V (3,9 V) und nutzt fast den gesamten Bereich meines ADC.
  2. Ein 20k : 10k Spannungsteiler. 3x verkleinert, wird mein Bereich 3,5 V bis 4,8 V (1,3 V)

Ich wollte mir selbst beweisen, welche Methode die beste Körnigkeit liefert. Da ich auch eine 12-Bit-Genauigkeit erzielen kann, indem ich vier Lesevorgänge addiere und das Ergebnis verschiebe, habe ich vier Möglichkeiten verglichen: (unter der Annahme, dass die ADC-Referenz 5,0 V beträgt)

  • Methode 1, 0,5–4,4 V bei 10 Bit sind 800 Schritte: 4,88 mV/Schritt [#3]
  • Methode 1, 0,5–4,4 V bei 12 Bit sind 3606 Schritte: 1,22 mV/Schritt [#1]
  • Methode 2, 3,5–4,8 V bei 10 Bit sind 266 Schritte: 14,65 mV/Schritt [#4]
  • Methode 2, 3,5–4,8 V bei 12 Bit sind 1065 Schritte: 3,66 mV/Schritt [#2]

Meine Frage ist, erzählen meine mV/Schritt-Zahlen die ganze Geschichte, oder gibt es eine Art Nachteil von Nr. 2, den ich nicht sehe?

Gut geschriebene Frage. Aber haben Sie beim Erstellen Ihrer Frage in der Spalte RELATED nachgesehen? Ich weiß, dass Ihre Frage ein Offset-Bedenken enthält, aber abgesehen davon gibt es 3 Duplikate, die sich im Wesentlichen mit demselben Thema befassen, alle mit nützlichen Antworten: siehe Question1 oder Question2 oder Question3
Während diese Fragen dasselbe Thema abdecken, bezog sich meine Frage speziell darauf, ob meine Berechnungen der Granularität korrekt waren und die ganze Geschichte erzählen. Ich habe aus Gründen der Übersichtlichkeit bearbeitet.

Antworten (1)

Der Offset mit dem Zener nützt wenig. Die besten Zener haben eine Toleranz von 1 %, was 100 mV für einen 10-V-Zener entspricht. Bei einem 10-Bit-ADC ist dies ein 20-Zählfehler, bei einem 12-Bit-ADC ein 82-Zählfehler. Sie könnten den Fehler beseitigen, wenn Sie die Spannung genau genug messen können, aber es gibt andere Faktoren. Der BZX84-A10 hat einen Temperaturkoeffizienten von 8 mV/°C, was einen Fehler von 2 Zählern pro °C Temperaturänderung für den 10-Bit-ADC und 7 Zähler für den 12-Bit ergibt. Sieht so aus, als wäre es besser als Thermometer als als Spannungsmesser geeignet. Wenn Sie einen 10-V-Zener verwenden, benötigen Sie auch eine Stromversorgung mit höherer Spannung.

Der Widerstandsteiler wird viel besser abschneiden. Widerstände haben auch eine Toleranz, aber mit 25 ¢ ist ein 0,1 % Widerstand noch erschwinglich. (Besser, dass 0,1 % schnell teuer werden: 0,05 % kosten fast 1 Dollar.) Bei 10-Bit-Auflösung erhalten Sie einen 1-Zählfehler, bei 12-Bit 4 Zählwerte. Der Temperaturkoeffizient ist weniger problematisch, wenn beide Widerstände aus derselben Serie stammen und nahe beieinander platziert sind: Da der Teiler ratiometrisch ist, heben sich Widerstandsänderungen gegenseitig auf.

Die Zahlen zeigen, dass eine höhere Auflösung als 10 Bit wenig nützt; Komponententoleranzen und -abweichungen führen dazu, dass zusätzliche Bits unzuverlässig sind. Ein paar zusätzliche Bits können jedoch helfen, die Rauschimmunität zu erhöhen, indem eine Reihe von Messungen gemittelt wird oder ein Sigma-Delta-ADC verwendet wird, der das Eingangssignal ohnehin mittelt.

Es gibt auch etwas Philosophischeres: Wir wollen immer besser werden, aber warum um alles in der Welt sollten Sie die Spannung einer 12-V-Batterie mit einer Genauigkeit von besser als 10 mV kennen? Sie werden es schwer haben, die erforderliche Auflösung zu erhalten, und Sie werden immer unsicher sein, was die letzte Ziffer betrifft.

Der ADS1000 ist ein kostengünstiger 12-Bit-ADC, der mit einer einzigen 5-V-Versorgung betrieben wird.

Gute Antwort! ADS1114 kann komplett auf einem PCB-Modul bei ebay geliefert werden, das für Anfänger möglicherweise besser zugänglich ist. Es hat auch eine eigene Spannungsreferenz und ist im Gegensatz zum ADS1000 nicht ratiometrisch zur Versorgung, was in diesem Fall von Vorteil sein kann.