Was ist ein SAR-Wandler?
(Search and Rescue? Nein, hier hat SAR eine andere Bedeutung.)
Die allgemeine Frage lautet: Wie kann man einen analogen Wert digitalisieren?
Es gibt verschiedene Ansätze für dieses Problem. Jeder davon hat Vor- und Nachteile.
Prinzipiell kann man den Analogwert mit einem bekannten
Signal (von einem Digital-Analog-Wandler, DAC)
mit Hilfe eines Analog-
Man könnte auch 255 Komparatoren nehmen (die jeweils an einer um
ein Bit höheren Referenzspannung hängen) und sehen, wieviele davon 0
bleiben,
auch das gibt es, es nennt sich
dann Flash-ADC
wohl weil er blitzschnell (und entsprechend aufwändig und
teuer) ist aber den wollen wir hier nicht behandeln.
Ein SAR-Wandler optimiert diesen Vorgang: im ersten Schritt vergleicht
er das Messsignal mit der halben Referenzspannung. Ist es größer,
addiert er ein Viertel, ist es kleiner, subtrahiert er ein Viertel.
Im zweiten Schritt addiert oder subtrahiert er ein Achtel, dann
ein Sechzehntel usw. Dazu benötigt er nur einen Komparator und
eben das Successive-
Im Bild sehen Sie beispielhaft (in einem Diagramm) die Annäherung an die Werte 43, 125 und 233.
So schafft es ein SAR-Wandler mit n Vergleichen 2n Stufen abzudecken. Um ein Messsignal mit 8 Bit Genauigkeit zu digitalisieren benötigt er also 8 Schritte (das entspricht bereits 0,4% Genauigkeit oder etwa dem Minimum das man auf einem analogen Präzisionsinstrument mit Spiegelskala ablesen kann), für 12 Bit 12 Schritte (0,02%) usw.
Die Genauigkeit ist hier natürlich idealisiert. In der Praxis ist die Genauigkeit des DACs begrenzt und erhöht die Fehlergrenze. Die Offsetspannung des Komparators setzt ein Limit was die Genauigkeit des Vergleichs betrifft. Dazu kommt Rauschen und Übersprechen von anderen Signalen, welches das Kippen des Komparators je nach Layout und Qualität der Versorgung erheblich beeinflussen kann.
In unserem Fall, mit einem simplen RC-Filter an einem Portpin, ist der DAC wohl das schwächste Glied. In der Theorie gehen wir hier von einem idealen Schalter aus, der den Pin verzögerungsfrei mit 0 Ω an VCC (die natürlich absolut stabil ist) oder GND legt. Tatsächlich sind es jedoch FETs die den Pin schalten und die einen endlich kleinen und zudem asymmetrischen Widerstand haben. Aber auch der Komparator (in unserem Fall der integrierte Komparator des ATmega128) stellt mit stolzen 40 mV Offset eine erhebliche Fehlerquelle dar. 40 mV bei 5 V FSR entsprächen gerade mal 7 Bit! Ich habe den ADC bisher tatsächlich nicht nachgemessen aber ich gehe davon aus, dass mehr als 8 Bit Auflösung mit dieser Schaltung nicht sinnvoll sind. Selbst 8 Bit können wir nicht garantieren, auch wenn es die Schaltung im Normalfall vielleicht hergibt. Für unsere Anwendung reicht es jedoch.