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:
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)
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?
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.
Brettbiss
phip