Abhängig von VREF beginnt VOUT linear anzusteigen, während C1 geladen wird. Der lineare Anstieg von VOUT setzt sich fort, bis die Eingangs-Schwellenspannung Vth des Mikrocontrollers erreicht wird. Dadurch entsteht ein Software-Messwert für VMEAS, welcher der Zeit tmeas entspricht. Anschließend vergleicht die Software diesen Wert mit dem Software-Kalibrationswert, und als Ergebnis entsteht ein Digitalwert, der VMEAS entspricht.
Schaltungsgleichungen
Ausgehend von der Schaltungskonfiguration nutzt der Mikrocontroller eine Reihe von Gleichungen, um das Wandlungsergebnis zu berechnen. In Bild 4 ist der durch R1 fließende Strom gleich dem Strom durch C1. Sobald die Eingangsspannung VIN gleich VREF ist, entspricht die Beziehung zwischen den beiden Strömen der Gleichung (1).
(1)
Sobald VIN gleich VMEAS ist, entspricht die Beziehung zwischen den beiden Strömen der Gleichung (2).
(2)
Die Integration der Gleichungen (1) und (2) ergibt, aufgelöst für VOUT, die Gleichungen (3) und (4).
(3)
(4)
Da VREF und VMEAS Konstantwerte sind, lassen sich die Gleichungen (3) und (4) weiter zu den Gleichungen (5) und (6) vereinfachen.
(5)
(6)
Am Ende jeder Messung ist der Wert VOUT aus den Gleichungen (5) und (6) jeweils gleich Vth. Diese beiden lassen sich zur Gleichung (7) zusammenfassen.
(7)
Nun kann man R1 und C1 eliminieren und für die unbekannte Eingangsspannung VMEAS auflösen.
Gleichung (8) zeigt, dass die Messung unabhängig vom Wert der Schaltungselemente R1 und C1 ist.
(8)
Dies macht den Wandlungsvorgang unempfindlich gegenüber Fehlern dieser Bauteilwerte, die sich aus Toleranzen oder Temperaturvariationen ergeben könnten. Dies heißt aber nicht, dass die Werte von R1 und C1 für die Auslegung des A/D-Wandlers unwichtig sind. Deren Werte sollten auf der Basis der gewünschten Auflösung in Bits gewählt werden. Löst man die Gleichung (6) für R1 ∙ C1 auf, so ergibt sich Gleichung (9).
(9)
Dabei ist VMEAS die kleinste zu messende Spannung (mindestens 10 LSB), tmeas die Zeit, um die gewünschte Auflösung in Bits zu erreichen (2N/fosc x Takte/Messzyklus x Befehlszyklen pro Zählimpuls, wobei N die Messauflösung in Bits ist), und VOUT die Eingangs-Schwellenspannung Vth (geschätzt 3 V).
Der tatsächliche Wert für R1 ∙ C1 sollte etwas kleiner als der berechnete Wert sein; dies gewährleistet, dass der Mikrocontroller während der Messung nicht übermäßig lange zählt. Es ist darauf zu achten, dass es einen Unterschied zwischen dem Wert von R1 ∙C1 bei der Implementation in Assembler- und C-Code gibt, da die Anzahl der Befehlszyklen pro Zählschritt bei der Nutzung von C-Code größer ist als bei Assembler-Code. Sowohl der Assembler- als auch der C-Code sind in [1] zu finden.
Schaltungsleistung
In tatsächlichen Anwendungen kann es vorteilhaft sein, eine Bit-Anzahl für geringere Auflösung und eine höhere Taktfrequenz zu verwenden, wenn die Anforderungen an die Messgenauigkeit das zulassen. Der Mathematik-Code lässt sich weitgehend reduzieren, und die Messzeit lässt sich durch den einfacheren Code und den kürzeren Zählvorgang verringern.
Der Kalibrierungsvorgang entfernt alle Fehler der ersten Ordnung (Offset, Verstärkung, Toleranzen von Widerstand und Kondensator, Versorgungsspannung und Temperatur) außer der Referenzspannungs-Drift. Änderungen der Referenzspannung einschließlich Rauschen können zu Messfehlern führen. Andere Fehlerquellen könnten Leckströme der Analogschalter, Nichtlinearitäten von Widerstand und Kondensator, Unsicherheiten der Eingangs-Schwellenspannung und Ungenauigkeiten bei der Zeitmessung (± die Zeitspanne eines Befehlszyklus) sein. Eine Charakterisierung der Messleistung zeigt, dass der Wandler eine Genauigkeit von ±1% des Skalen-Endwerts aufweist.
Über die Autoren:
Mark Pallones ist Team Leader MCU8 und Mike Gomez ist Application Engineer, beide bei Microchip Technology.