Avtor: dr. Simon Vavpotič
2018_266_48
Napredek pri razvoju A/D pretvornikov tipa sigma-delta je omogočil vzorčenje počasnih signalov pri zelo visokih ločljivostih, ki dosegajo celo 32-bitov. To omogoča ne le izjemno kakovostno snemanje nizkofrekvenčnih signalov, ki zaznamujejo naravne pojave, notranje delovanje elektronskih naprav in delovanje v človeškega telesa, temveč tudi njihovo natančno analizo. Natančni A/D pretvornik lahko z nekaj truda izdelamo tudi doma.
Danes je v svetu elektronike veliko različnih vrst A/D pretvornikov, od katerih je večina integrirana v mikrokontrolerje, saj tako ne zavzemajo dodatnega prostorna na tiskaninah. Vendar njihova ločljivost, med 8 in 12 biti, ne zadošča za natančne meritve, za katere še vedno potrebujemo zunanje A/D pretvornike. Največji natančnost in točnost danes omogočajo A/D pretvorniki, ki delujejo po principu sigma-delta. Nekateri imajo že vgrajena tudi vezja, ki zagotavljajo stabilne referenčne napetosti pa tudi vezja za preverjanje pravilnosti, natančnosti in točnosti njihovega delovanja ter kalibracijo.
Ta vsebina je samo za naročnike
V preteklosti so bile ločljivosti od vključno 24 bitov naprej dosegljive le z dragimi in kompleksnimi diskretnimi A/D pretvorniki z več električnimi rampami. Denimo, za industrijski Hewlett-Packardov A/D pretvornik HP 3458A, ki je omogočal meritve do natančnosti 28 bitov (8 in pol decimalnih mest), je bilo potrebno odšteti kar 1300 USD. Zato je malo verjetno, da bomo doma našli merilnik, ki bo lahko pokazal vrednosti napetosti natančneje kot 24-bitni ali 32-bitni A/D pretvornik v enem čipu, ki ga lahko danes naročimo v spletnih trgovinah z elektronskimi komponentami po vsem svetu. Zagotavljanje natančnosti in točnosti delovanja tovrstnih A/D pretvornikov je dokaj zapleteno. K sreči k natančnejšim meritvam pripomorejo tudi vgrajeni merilniki temperature v čipu A/D pretvornika, ki omogočajo celo upoštevanje temperaturnih kompenzacij pri zelo natančnih meritvah, pri katerih zaznamo razlike napetosti reda nekaj nV. Pogosto so vgrajeni tudi D/A pretvorniki, s katerimi lahko preverimo pravilno merjenje vnaprej znanih napetostnih nivojev.
V članku bomo nekoliko podrobneje spoznali zmogljive A/D pretvornike proizvajalcev Texas Instruments in Analog Devices, ki sta med glavnimi proizvajalci tovrstnih čipov na svetu. Novejši in zmogljivejši A/D pretvorniki so vgrajeni v majhne čipe v ohišjih TSSOP, ki ji s težavo ročno spajkamo. Zato bomo najprej spoznali zgradbi 32-bitnih A/D pretvornikov, Texas Instrumenstovega ADS1263 in Analog Devicesovega AD7177-2, nato pa bomo na osnovi z veliko preprostejšega ADS1252 naredili A/D pretvornik na doma narejeni tiskanini, ki bo nekoliko hitrejši, vendar tudi manj natančen. Seveda, bomo preizkusili tudi ADS1263.
Zmogljivosti
Analog Deviceov AD7177-2 zmore točno izmeriti napetost z natančnostjo 24,6 bitov pri vzorčenju s hitrostjo do 5 vzorcev na sekundo (sps) ter z natančnostjo 20,2-bita do 2,5 k sps. Pri najvišji hitrosti vzorčenja, 10 k sps, je brez šuma izmerjenih le 19,1 bitov. Čeprav ADS1262 in ADS1263 zmoreta tudi višje frekvence pošiljanja podatkov, je pri hitrosti 2,5 sps brez šuma 26 bitov, medtem ko je pri 7,2 k sps brez šuma 21,1 bit, medtem ko je točnost pri najvišji frekvenci pošiljanja podatkov, 38,4 k sps, je le 15,6 bitov. Po drugi strani, ima ADS1263 v primerjavi s ADS1262 še pomožni 24-bitni A/D pretvornik za odzadnje meritve, ki jih lahko izvajamo pri nižjem ojačenju in na njihovi osnovi izvajamo kompenzacije meritev, kar poveča točnost in natančnost.
Posebnost tovrstnih A/D pretvornikov je diferencialni merilni vhod, na katerem izmeri razliko napetosti med pozitivnim in negativnim priključkom in jo pretvori v digitalno vrednost. Na diferencialni vhod pripeljemo signal iz vhodnega ojačevalnika, ki prilagodi vhodno napetost na ustrezno merilno območje. Vhodni ojačevalnik je v A/D pretvornike ADS1262, ADS1263 in AD7177-2 k sreči že vgrajen, za ADS1252 pa ga moramo izdelati sami.
Kako je sestavljen?
ADS1262, ADS1263 in AD7177-2 so precej več kot samo A/D pretvorniki. Vsebujejo vse sklope, ki jih potrebujemo za zajem analognih signalov, 32-bitno A/D pretvorbo, digitalno filtriranje podatkov pa tudi preverjanje natančnosti in točnosti delovanja in zagotavljanje kakovosti zajetih podatkov. ADS1263 ima vgrajen še pomožni 24-bitni A/D pretvornik in zmogljivejši multiplekser, s katerim lahko hkrati poveže po en vhod z vsakim A/D pretvornikom. Drugi, enostavnejši multiplekser omogoča zajemanje zunanje referenčne napetosti. Sicer imata ADS1262 in ADS1263 na voljo analogne vhode AIN0-AIN9 ter AINCOM, ki jih lahko programiramo kot merilne vhode, referenčne vhode, splošne digitalne priključke ali testne vhode. Nanje lahko povežemo tudi vgrajeni tokovni vir za napajanje zunanjih tipal zmogljivosti do 3 mA (denimo za napajanje mostovnega tipala za natančno merjenje temperature).
A/D pretvornik ima zaradi zagotavljanja večje natančnosti vgrajeno tudi lastno temperaturno tipalo in D/A pretvornik, ki zagotavlja napetosti za preizkušanje delovanja. Oba lahko pri ADS1263 preko vgrajenega multiplekserja povežemo tudi s pomožnim 24-bitnim A/D pretvornikom. Iz vhodnega multiplekserja potuje vhodni signal na enoto za uravnavanje napajanja tipal, od tu pa v ojačevalnik s programljivim ojačenjem, nato pa preko diferenčnih izhodov v 32-bitni A/D pretvornik. Vzporedno s slednjim je vezana tudi funkcijska enota za alarmiranje, ki zazna prekoračitev dovoljenega obsega vhodnega signala. Druga enota za alarmiranje pa zaznava prisotnost, oziroma odsotnost zunanjih referenčnih napetosti, kar omogoča celo samodejno izbiro vira referenčne napetosti. Za A/D pretvornikom je še digitalni filter, ki izloča neželene harmonske frekvence, denimo frekvence električnega omrežja (50 Hz in njenih višjih harmonskih komponent). Podobno, le nekoliko poenostavljeno zgradbo ima tudi pomožni 24-bitni A/D pretvornik, ki je vgrajen le v ADS1263; cenejši ADS1262, ga nima.
Zgradba AD7177-2 je podobna zgradbi ADS1262, zato je ne bomo posebej omenjali, lahko pa si jo ogledate na sliki.
Komunikacijski protokol
Komunikacija z nadzornim mikrokontrolerjem ali računalnikom poteka preko zaporednega vmesnika, ki deluje po prilagojenem protokolu SPI. Signala za izhodne podatke in pripravljene podatke sta povezana na en sam priključek: DOUT/~DRDY. Zato mora mikrokontroler z branjem logične vrednosti iz tega priključka najprej ugotoviti, ali lahko bere podatke. Podatki so na voljo šele, ko je DOUT/~DRDY v nizkem stanju. Medtem mora biti tudi signal SCLK v nizkem stanju. Ko so podatki pripravljeni, izvede njihovo branje po protokolu SPI.
A/D pretvornika ADS1262 in ADS1263 imata poleg omenjenega skupnega signala, DOUT/~DRDY, tudi ločen signal ~DRDY, ki omogoča lažjo povezavo z mikrokontrolerjem ali računalnikom. 32-bitna ali 24-bitna digitalizirana vrednost napetosti na priključku DOUT/~DRDY je na voljo šele po izvedeni A/D pretvorbi, ko je na priključkih ~DRDY in DOUT/~DRDY logična vrednost 0. Prednosti dodatne indikacije na priključku ~DRDY je časovna neodvisnost, saj na priključku DOUT/~DRDY med fazo branja podatkov po protokolu SPI ta podatek ni na voljo.
A/D pretvornika imata vgrajen tudi generator taktnih impulzov s frekvenco 7,3728 MHz, ki ga potrebujeta za izvajanje A/D pretvorb, kakor tudi pri zaporedni komunikaciji. Namesto notranjega generatorja lahko priklopimo tudi zunanji kristalni resonator, ali pa pripeljemo taktne impulze kar iz zunanjega oscilatorja. Skupaj imamo tako tri možnosti generiranja taktnih impulzov, preklop med njimi pa je samodejen. Pri tem mora biti frekvenca zunanjega vira taktnih impulzov med 1 MHz in 8 MHz.
Natančen opis funkcionalnosti je na voljo v podatkovni poli, ki jo lahko prenesemo s spleta, če v spletni brskalnik vpišemo geslo »ADS1263 datasheet«.
Podobno zgradbo ima tudi Analog Devices A/D pretvornik AD7177-2, ki pa je manj zmogljiv, saj zmore vzorčiti do 10.000 vzorcev na sekundo, ima enostavnejši multiplekser, ki podpira zgolj analogne vhode. Obenem ima le dva splošno-namenska digitalna vhoda-izhoda. Po drugi strani, uporablja skoraj enako prilagojen protokol SPI za prenos podatkov pa tudi podoben digitalni filter. Vgrajeno ima tudi temperaturno tipalo, ki nam pomaga pri izvajanju kalibracije. Vendar pogrešamo pomožni A/D pretvornik, ki ga ima ADS1263. Zato lahko AD7177-2 postavimo ob bok ADS1262, ADS1263 pa je stopničko višje.
Preprosti čip z 8 priključki
Čip ADS1252 vsebuje v primerjavi s ADS1262 in ADS1263 le A/D pretvornik s funkcijsko enoto za zaporedno komunikacijo ter nadzorno enoto brez zunanjih priključkov. Delovanje slednje nadzorujemo preko edinega vhoda, SCLK (po katerem sicer pošiljamo taktne impulze za branje digitalnih vrednosti po protokolu SPI), preko katerega jo lahko z zadrževanjem SCLK na vrednosti logične 0 ali logične 1 med več fazami oddajanja podatkov preklopimo v stanje mirovanja.
A/D pretvornika ADS1262 in ADS1263 imata namesto tega tudi priključke START, ~RESET/~PWDN in ~DRDY, ki omogočajo neposredno upravljanje nadzorne enote. Omeniti velja še, da ADS1252 v nasprotju z zmogljivejšima ADS1262 in ADS1263 ne omogoča pisanja podatkov v svoje notranje registre. Zato nima priključka DIN. Vseeno lahko s pomočjo frekvence signala CLK določamo hitrost A/D pretvorbe in obenem spreminjamo frekvence učinkovanja digitalnega filtra.
Modulator sigma-delta je osrednji del A/D pretvornika, katerega frekvenčni delilnik 6-krat zniža frekvenco zunanje ure (na vhodu CLK). S tem je denimo frekvenca notranje ure pri zunanjem taktu 16 MHz le 2,667 MHz. ADS1252 vzorči signal s 64-kratno frekvenco oddajanja podatkov (angl. oversampling), s čemer nekajkrat poveča natančnost. Za A/D pretvornikom je tudi digitalni filter, ki duši signale s frekvencami blizu frekvence pošiljanja podatkov. Dobro je vedeti, da na primer signale z 0,216-kratnikom frekvence vzorčenja duši za -3 dB, pri čemer dušenje od te frekvence do frekvence pošiljanja podatkov hitro narašča do 100 %. Frekvenca pošiljanja podatkov naj bi bila tako enaka Nyquistovi frekvenci signala, ki ga zajemamo z A/D pretvornikom. Rezultat A/D pretvorbe je tako povprečje, pri katerem hitrost oddajanja podatkov določa točke dušenja signala, ki so večkratniki frekvence vzorčenja. Digitalni filter zajame tudi vse harmonske komponente. Denimo, če želimo izločiti signale z osnovno frekvenco 50 Hz in vse nadaljnje harmonske komponente, mora biti frekvenca CLK enaka 19,2 kHz. Če pa želimo izločiti signale z osnovno frekvenco 60 Hz, mora biti CLK 20,04 kHz. Vsekakor mora biti frekvenca CLK dovolj visoka, da digitalno filtriranje ne zajame signale, ki nas zanimajo. Največja frekvenca je 16 MHz, kar omogoča pošiljanje podatkov s frekvenco 41,667 kHz. Digitalni filter sicer potrebuje od 5 do 6 vzorčenj signala, preden začne polno delovati. Natančen prikaz delovanja je na voljo v podatkovnih polah za ADS1252.
Kako začeti?
Izdelave natančnega A/D pretvornika se lahko lotimo na osnovi že izdelane ploščice tiskanega vezja, ali pa ga v celoti izdelamo sami. Druga možnost je cenejša, vendar pa tudi nekoliko zahtevnejša, saj moramo tiskano vezje v celoti izdelati sami, ali pa uporabiti katero od razvojnih plošč. K sreči je razmik med osmimi priključki ADS1252 1,27 mm, kar je dovolj za ročno spajkanje. Veliko težje je prispajkati ADS1262, ADS1263 ali AD7177-2, pri katerih je razmik priključkov zgolj polovičen (0,65 mm); kar je za mnoge premalo za ročno spajkanje, če ne uporabljamo spajkalnika s konico debeline 0,4 mm ali tanjšo ter povečevalno steklo (ali kar mikroskopsko kamero in zaslon). Lahko uporabimo tudi katero od zahtevnejših tehnik za hkratno spajkanje več priključkov, ki si jih lahko ogledamo na Youtube.
Čeprav je za gradnjo lastne tiskanine zaradi manjšega števila priključkov primernejši ADS1252, je ADS1263 vseeno veliko splošnejši, saj vsebuje tudi podporna vezja, kot sta napetostni regulator in vhodni ojačevalnik, ki jih moramo za ADS1252 zgraditi sami iz diskretnih elementov in operacijskih ojačevalnikov.
Izdelava (tiskanega) vezja
Proizvajalec, Texas Instruments, za zmogljivejše A/D pretvornike priporoča vgradnjo na tri-plastno ali štiri-plastno tiskano vezje, kjer napajalne vodnike namestimo na srednji plasti, na spodnjo in zgornjo plast pa povezovalne vodnike. S tem zagotovimo visoko stabilnost napajalne napetosti in zmanjšamo presluhe med posameznimi analognimi linijami, preko katerih signali potujejo v A/D pretvornik.
Enostavnejši projekt
ADS1252, smo izbrali zato, ker ima samo dve diferencialni liniji, pozitivno in negativno, ki ju je sorazmerno enostavno ločiti, lahko pa uporabljamo tudi samo eno. ADS1252 je tudi sicer namenjen zajemanju enega signala hkrati, zato je možnosti presluhov med povezovalnimi linijami manjša. Pri doma narejenem vezju si sicer lahko pomagamo tudi s krajšimi žičnimi povezavami, ki signalne linije prostorsko oddaljijo. Kljub temu moramo zagotoviti podporni vezji za stabilno referenčno napetost in vhodno prilagoditev signala. Pri tem si lahko pomagamo z referenčno dokumentacijo ADS1252 in preizkusno ploščico, katere načrt najdemo na spletni strani www.github.com in ga lahko izvozimo v projektni datoteki ProtoCentral_ads1262-master.zip
Načrt tiskanega vezja za povezavo A/D pretvornika z mikrokontrolerjem in naprej z osebnim računalnikom izhaja iz osnovnega vezja za vzpostavitev delovanja PIC32MX250F128B ali PIC32MX270F256B, ki mu dodamo A/D pretvornik ADS1252 in potrebna podporna vezja. Za gradnjo vira referenčne napetosti 4,096 V in vhodnega pred ojačevalnika potrebujemo tri ali štiri operacijske ojačevalnike OPA350 ter enega od napetostnih ustreznih stabilizatorjev, denimo REF3140. Ostalo so diskretni elementi. Pri napajanju iz priključka USB moramo paziti tudi na začetno kapacitivno obremenitev, ki nastane ob priključitvi vezja. V našem primeru so vsi večji elektrolitski kondenzatorji vezani tako, da ne predstavljajo velikega začetnega bremena.
Zahtevnejši projekt
Kot drugo možnost omenimo še natančnejše, 32-bitne: Texas Instrumentsova ADS1262 in ADS1263 ter AD7177-2 podjetja Analog Devices, za katere pa bomo pri domačih projektih skoraj gotovo potrebovali tudi že izdelano preizkusno ploščico tiskanega vezja (t.i. break out board) ali pa kar razvojno ploščo proizvajalca, saj so kljub sorazmerno majhnemu številu priključkov (28 pri ADS1262 in ADS1263, oziroma 24 pri AD7177-2) v majhnih ohišjih tipa TSSOP z razmikom priključkov komaj 0,65 mm. Kljub temu bomo najvišji točnost in natančnost dosegli le pri najnižjih frekvencah vzorčenja ob dovolj stabilni napajalni napetosti.
Za povezavo ADS1262, ADS1263 ali AD7177-2 z mikrokontrolerjem bomo v primerjavi z ADS1252 na PIC32MX250F128B ali PIC32MX270F256B potrebovali po en dodani priključek, saj podatke preko priključka DIN tudi pišemo v notranje registre A/D pretvornika. Obenem lahko signal ~DRDY vežemo na ločen priključek mikrokontrolerja in nam tako ni potrebno dodatno preverjati vrednosti na priključku DOUT/~DRDY.
Prav tako ne potrebujemo napetostnih prilagoditev, saj imajo omenjeni A/D pretvornik poseben priključek za napajanje digitalnega dela (DVdd), ki ga lahko povežemo tudi na 3,3 V napajanje, oziroma na napajalno napetost, pri kateri deluje izbrani mikrokontroler. Vseeno moramo na primer pri uporabi že izdelane ploščice tiskanega vezja proizvajalca ProtoCentral paziti, da na priključek DVdd namesto +5 V pripeljemo napetost +3,3 V; oziroma moramo originalno tiskanino nekoliko predelat. To storimo tako, da z nožkom olfa površino, na katero je prispajkan priključek čipa ADS1262 električno ločimo od napajalne površine z napetostjo +5 V. Nato z nožkom olfa odstranimo lak in preverimo, da ni več povezave, nakar prispajkamo žično povezavo za napetost +3,3 V. To je vsekakor manj zahtevno kot če bi morali tiskanino v celoti izdelati sami.
Vgrajena programska oprema
Programska koda za komunikacijo ADS1252 s PIC32MX250F128B ali PIC32MX270F256B je sorazmerno preprosta, saj pri ADS1252 ni potrebno ničesar nastavljati. Vseeno moramo mikrokontrolerju nastaviti in aktivirati enoto za zaporedno komunikacijo SPI1, o kateri smo že obsežno pisali v seriji člankov Programiranje PIC32 (glej SE232). Pomembno je predvsem, da se mikrokontroler dovolj hitro odzove na nizek nivo signala DOUT/~DRDY, ki ob nizki vrednosti signala SCLK sporoča, da so podatki pripravljeni. Kot vidimo na električni shemi, vodimo signal DOUT/~DRDY tudi na vhod RB7, ki ga nastavimo tako, da ob prehodu iz logične 1 v logično 0 proži prekinitev INT4. Prekinitveni podprogram nato s pomočjo enote SPI1 prebere eno 32-bitno besedo, pri kateri ima 8 najnižjih bitov vrednost 0, saj ADS1252 zajema 24-bitne vrednosti napetosti. Enota SPI1 je nastavljena tako, da je vrednost signala SCLK v mirovnem stanju 0. Pri tem je takt enote SPI1 dovolj hiter, da PIC32 v času okoli 300 ciklov ure A/D pretvornika prebere 32-bitno besedo. Prebrano besedo nato odloži v izravnalnik, oziroma v datoteko, ki je na voljo preko pogona za masovno hrambo podatkov, od katerega lahko dostopa osebni računalnik. Opcijsko je mogoča tudi uporaba drugačnih protokolov za hiter prenos podatkov preko vodila USB.
V že omenjeni datoteki, ProtoCentral_ads1262-master.zip, najdemo tudi primer programske knjižnice za komunikacijo ADS1262 z Arduinom. Z njim si lahko pomagamo tudi pri pripravi programske kode za PIC32MX250F128B ali PIC32MX270F256B. Podprogram za komunikacijo ADS1262 ali ADS1263 s PIC32MX250F128B ali PIC32MX270F256B je nekoliko bolj kompleksen, saj komunikacija tu deluje v obe strani. Zmogljivejši A/D pretvornik se predstavi PIC32 kot logična enota z lastnim naborom registrov. Pred vsakim branjem ali pošiljanjem podatkov mora PIC32 signal ~CS postaviti na logično vrednost 0. Signal ~CS sicer omogoča tudi priklop več A/D pretvornikov na isto vodilo SPI. Pred začetkom delovanja je potrebno pravilno nastaviti tudi njegove notranje registre.
Prihodnjič
Tokrat smo izdelali tiskana vezja, s katerimi smo zmogljive A/D pretvornike usposobili za delovanje in jih povezali z mikrokontrolerjem, prihodnjič pa se bomo podrobneje lotili razvoja programske kode, s katero bomo hitro učinkovito zajemali digitalne vrednosti napetosti in jih prenašali v osebni računalnik, v katerem jih bomo analizirali in prikazali rezultate.