SAR Converter page in English
SAR Con­vert­er page in Eng­lish

Was ist ein SAR-Wandler?

(Search and Rescue? Nein, hier hat SAR ei­ne an­de­re Be­deu­tung.)

Die all­ge­mei­ne Frage lau­tet: Wie kann man ei­nen ana­lo­gen Wert di­gi­ta­li­sie­ren?

Es gibt ver­schie­de­ne An­sät­ze für die­ses Pro­blem. Jeder da­von hat Vor- und Nach­tei­le.

Prin­zi­pi­ell kann man den Ana­log­wert mit ei­nem be­kann­ten Si­gnal (von ei­nem Di­gi­tal-Analog-Wand­ler, DAC) mit Hil­fe ei­nes Analog-Kom­pa­ra­tors ver­glei­chen und se­hen ob er klei­ner oder grö­ßer als die­ser ist. Für ei­nen 8 Bit-Wand­ler müss­te man al­le Stu­fen von 0 bis 255 durch­pro­bie­ren um zu se­hen, wann der Kom­pa­ra­tor kippt. Das wür­de re­la­tiv viel Zeit in An­spruch neh­men.

Man könn­te auch 255 Kom­pa­ra­to­ren neh­men (die je­weils an ei­ner um ein Bit hö­he­ren Re­fe­renz­span­nung hän­gen) und se­hen, wie­vie­le da­von 0 blei­ben, auch das gibt es, es nennt sich dann Flash-ADC wohl weil er blitz­schnell (und ent­spre­chend auf­wän­dig und teu­er) ist aber den wol­len wir hier nicht be­han­deln.

Ein SAR-Wand­ler op­ti­miert die­sen Vor­gang: im ers­ten Schritt ver­gleicht er das Mess­si­gnal mit der hal­ben Re­fe­renz­span­nung. Ist es grö­ßer, ad­diert er ein Vier­tel, ist es klei­ner, sub­tra­hiert er ein Vier­tel. Im zwei­ten Schritt ad­diert oder sub­tra­hiert er ein Achtel, dann ein Sech­zehn­tel usw. Dazu be­nö­tigt er nur ei­nen Kom­pa­ra­tor und eben das Successive-Approximation-Register, da­her der Na­me.
Im Bild se­hen Sie bei­spiel­haft (in ei­nem Dia­gramm) die An­nä­he­rung an die Wer­te 43, 125 und 233.

So schafft es ein SAR-Wand­ler mit n Ver­glei­chen 2n Stu­fen ab­zu­de­cken. Um ein Mess­si­gnal mit 8 Bit Ge­nau­ig­keit zu di­gi­ta­li­sie­ren be­nö­tigt er al­so 8 Schrit­te (das ent­spricht be­reits 0,4% Ge­nau­ig­keit oder et­wa dem Mi­ni­mum das man auf ei­nem ana­lo­gen Prä­zi­sions­in­stru­ment mit Spie­gel­ska­la ab­le­sen kann), für 12 Bit 12 Schrit­te (0,02%) usw.

Die Ge­nau­ig­keit ist hier na­tür­lich ide­a­li­siert. In der Pra­xis ist die Ge­nau­ig­keit des DACs be­grenzt und er­höht die Feh­ler­gren­ze. Die Off­set­span­nung des Kom­pa­ra­tors setzt ein Li­mit was die Ge­nau­ig­keit des Ver­gleichs be­trifft. Dazu kommt Rau­schen und Über­spre­chen von an­de­ren Si­gna­len, wel­ches das Kippen des Kom­pa­ra­tors je nach Lay­out und Qua­li­tät der Ver­sor­gung er­heb­lich be­ein­flus­sen kann.

In un­se­rem Fall, mit ei­nem simp­len RC-Fil­ter an ei­nem Port­pin, ist der DAC wohl das schwächs­te Glied. In der The­o­rie ge­hen wir hier von ei­nem ide­a­len Schal­ter aus, der den Pin ver­zö­ge­rungs­frei mit 0 Ω an VCC (die na­tür­lich ab­so­lut sta­bil ist) oder GND legt. Tat­säch­lich sind es je­doch FETs die den Pin schal­ten und die ei­nen end­lich klei­nen und zu­dem a­sym­me­tri­schen Wi­der­stand ha­ben. Aber auch der Kom­pa­ra­tor (in un­se­rem Fall der in­te­grier­te Kom­pa­ra­tor des ATmega128) stellt mit stol­zen 40 mV Off­set ei­ne er­heb­li­che Feh­ler­quel­le dar. 40 mV bei 5 V FSR ent­sprä­chen ge­ra­de mal 7 Bit! Ich ha­be den ADC bis­her tat­säch­­lich nicht nach­ge­mes­sen aber ich ge­he da­von aus, dass mehr als 8 Bit Auf­lö­sung mit die­ser Schal­tung nicht sinn­voll sind. Selbst 8 Bit kön­nen wir nicht ga­ran­tie­ren, auch wenn es die Schal­tung im Nor­mal­fall viel­leicht her­gibt. Für un­se­re An­wen­dung reicht es je­doch.