Budu stručný. Nové čipy, řady AVRxxDB mají 10bit DAC převodník, který se při prvním pohledu do datasheetu tváří normálně. Obsahuje výstupní buffer a všechno vypadá růžově. První mráčky na obloze se objeví po pohledu do "Electrical charactersitics". Není tam totiž skoro nic a i to co tam je je hodně vágní. Hodně bijí do očí prázdné kolonky pro "output sink" a "output source". Na jednu stranu si člověk řekne "Jasně vždyť je to Preliminary Datasheet" a na druhou si odpoví "Už víc jak rok.". Při dalším zkoumání můžeme najít v datasheetu nepříjemnou formulaci "The output buffer can only source current, it has very limited sinking capability", po které člověk zbystří. Výstupní buffer který má "very limited sinking capability" ? Co je to very limited ?
Vzal jsem tedy AVR128DB28, připojil na napájení Vdd=5.082V, odpovídajícím způsobem zafiltroval a změřil jak vypadají zatěžovací charakteristiky DAC pro tři různé situace. V prvním testu jsem zvolil interní referenci 2.048V, do DAC jsem zapsal kód 512 (tedy polovinu rozsahu). Na výstup DAC jsem připojil reostat proti GND a měřil jsem závislost výstupního napětí na odebíraném proudu. A totéž jsem pak zopakoval s reostatem připojeným proti Vdd. Výsledek zatěžování proti GND je na grafu A) a je z něj patrné že buffer DAC je sice schopen dodávat relativně velké proudy, ale za cenu kompletní ztráty přesnosti. Zdá se jako by měl výstupní odpor přibližně 1.5 Ohmu. Pokud tedy chceme aby odchylka nepřekročila 1/2LSB, můžeme z výstupu odebírat proud nanejvýš 0.5*LSB[mV]/1.5 což v tomto případě činí přibližně 660uA. V grafu B) vidíme naprostou katastrofu. Stačí 20uA a buffer není schopen výstup udržet na požadovaném napětí. V grafu C) je pak zoom na oblast před tímto zlomem, tedy na oblast proudů, které je buffer ještě schopen odebírat.
V druhém kroku jsem si chtěl ověřit jestli se chování nějak změní v jiném bodě rozsahu. Takže jsem tentýž test provedl pro kód 128, kterému odpovídá napětí přibližně 0.256V. Chování je stejné jako v předchozí situaci
Ve třetím kroku jsem se zaměřil na další problematické místo - schopnost dodávat proud při výstupním napětím blízkém napájecímu. Tedy jako moc je buffer našeho DAC "rail to rail". Nastavil jsem tedy referenci VDD a DAC na hodnotu 1023. Očekávané napětí by mělo být 1LSB pod napájecím napětím. Tedy přibližně 5mV pod napájecím napětím. A bez odběru jsem naměřil 6.3mV, to asi je odpovídající hodnota v rámci nepřesnosti DAC (gain error atd.). Dál vypadal pokles výstupního napětí s odběrem jako na následujícím grafu. Na první pohled je patrné že i při odběru několika set uA vypadne výstup z intervalu 1LSB od ideální hodnoty. Orientačně by se dalo uvažovat že výstupní odpor je cca 27Ohm. Z čehož plyne že při napájecím napětí cca 5V se musí výstupní proud držet pod 100uA. Taky je patrné že toto chování trvá i více jak 0.3V od napájecího napětí. To částečně kontrastuje s datasheetem, který šermuje výstupem až do VDD-100mV, ale vzhledem k absenci klíčových parametrů to asi stejně nikdo nebere vážně.
Naštěstí je na čipů lék v podobě zabudovaného operačního zesilovače, ze kterého lze udělat sledovač pro výstup DAC, ale je to komplikace navíc. Jen pro zajímavost si dovolím dvě zajímavé situace kdy by omezená schopnost DAC bufferu mohla dělat problémy. Například pokud by DAC sloužil k nastavení komparačních hladin pro rychlé komparátory jako třeba MAX9600 či ADCMP553 a nebo ADCMP567. Klidové proudy vstupů jsou v jednotkách až desítkách uA. Podobně by nemilé překvapení čekalo toho kdo by na výstup zapojil třeba rozdílový zesilovač a nepohlídal by si pečlivěji velikosti odporů.
Se schopnostmi bufferu je úzce spjatá i rychlost přeběhu, takže jsem ji jen tak pro zajímavost prohlédl taky. Nechal jsem DAC dělat krok od 128 do 896, tedy od 10% do 90% rozsahu s vnitřní referencí 4.096V (abych se vyhnul problému z posledního grafu) a výsledek vypadá následovně. Můžete si všimnou že sestupná hrana je pomalejší, což nejspíš souvisí s omezenou schopností bufferu odvádět proud. Slézt o 3.1V jí trvá přes 6us a bylo by to mnohem horší pokud by na výstupu byla kapacita. Protože s 20uA by pro vybití i 50pF zabralo 7.7us. Je to tedy další věc na kterou je potřeba dávat pozor. Ze zákmitů na oscilogramu je také patrné že settling time bude výrazně delší než 6us.
Poslední věc, kterou jsem prohlédnul byl horní a dolní konec rozsahu. V obou případech jsem výstup zatížil rezistorem 20k proti GND. Pro dolní okraj jsem volil jako referenci interní 4.096V. Pro měření horního rozsahu pak byla reference VDD. U dolního rozsahu je patrná "chyba nuly", u horního rozsahu zase výstupní napěťový limit bufferu, který byl patrný už z dřívějších měření. Pro výpočet teoretických hodnot jsem používal klasicický vztah Vref*code/1024. Tedy maximum je 1023/1024 referenčního napětí.
Použité měřící přístroje AX-585B pro měření napětí a AX-100 pro měření proudu, ale to bude v tomto případě nejspíš irelevantní.
Home
| V1.00 1.2.2022 /
| By Michal Dudka (m.dudka@seznam.cz) /