Mikrokontroleri

Autor: Velimir Cvetković

E-mail: cveve@EUnet.yu

 

POVEZIVANJE AD KONVERTORA SA 68HC11

Interni AD konvertor ne može uvek da zadovolji tačnost i rezoluciju koja nam je potrebna, pa se mora pribeći primeni AD konvertora boljih osobina. Kako priključiti spoljni 12-to bitni AD konvertor pročitajte u ovom članku.

U zavisnosti od potreba i od para kojima raspolažemo za izradu željenog uređaja vršimo odabir AD konvertora. Ako nam je brzina bitna, imamo dovoljno linija za priključivanje (ili ste se možda odlučili za povezivanje na BUS?) i cena nije problem onda se svakako treba odlučiti za paralelni AD konvertor. U svakom drugom slučaju, bolje je rešenje serijski AD konvertor. Drugi kriterijum je rezolucija: Ako vam je 255 podeoka za celu skalu dovoljno, onda koristite interni ADC ( eng.Analog to Digital Converter). Ako je to malo, možete se odlučiti za 10-to ili 12-to bitne ADC-e. Ako ste došli do nivoa da projektujete uređaje koji zahtevaju rezoluciju od 16 bita, Vi ovaj članak i ne morate da čitate.
Elem, ovaj članak će se pozabaviti priključivanjem 12-to bitnog AD kovertora na mikrokontroler MC68HC11 model F1, i predlogom softverskog rešenja za ovaj slučaj. U nekom od narednih brojeva će biti opisan i način povezivanja serijskog ADC-a.
Odabir je pao na AD konvertor 574A. Može se naći sa raznim prefiksima, u zavisnosti koji ga proizvođač nudi, pa je tako Burr-Brown-ov ADC 574A, Maxim-ov MX 574A a Harris-ov HI1-574AJD-5 koji sam i ja odabrao pri izradi uređaja. Ovo je konvertor koji se često primenjuje u industrijskim aplikacijama i obezbeđuje 12-to bitnu rezoluciju (4095 podeoka) sa visokom tačnošću uz vrlo mali temperaturni koeficijent. Iako ima dvanaest linija za podatke, za priključivanje je dovoljno imati samo osam. To je postignuto time što su linije DB0 do DB3 spojene sa linijama DB8 do DB11 respektivno. ”Izlaz” podataka je organizovan u dve reči ( tabela 1.) čiji redosled određuje logičko stanje na pinu 4 ADC-a (A0). Ako je A0 na niskom nivou, bajt podataka će sadržati 8 bita većeg značaja (MSB), a ako je njegovo logičko stanje visoko, bajt podataka će sadržati 4 bita manjeg značaja zajedno sa četiri nule koje postavlja kontrolna logika. Format reči se čini malo nelogičnim jer je na prvi pogled normalnije izgledalo da četiri nule budu ispred četiri najznačajnija bita. Kasnije se pokazalo da je dati format mnogo prihvatljiviji za naknadna preračunavanja (logičko pomeranje u levo).

Tabela 1.

  Prva reč
Mikrokontroler DB7  DB6 DB5 DB4 DB3 DB2 DB1 DB0
Konvertor DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4
 
  Druga reč
Mikrokontroler DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Konvertor DB3 DB2 DB1 DB0 0 0 0 0

Kontrolna logika

Konvertor poseduje pet kontrolnih linija. U zavisnosti od stanja na njima biće izvršena određena akcija. Pin 2. je 12/8. U našem slučaju je ovaj pin priključen na masu. Kada bi bio na visokom nivou, za rezultat konverzije bi se koristilo svih dvanaest pinova ADC-a istovremeno. Ova varijanta se može koristiti kod priključivanja na šesnaestobitnu magistralu. Pošto je u mojoj aplikaciji stanje ovog pina “low”, rezultat konverzije je prikazan u formi dve osmobitne reči čiji je način pojavljivanja definisan stanjem linije A0 u toku ciklusa čitanja. Kod mikroprocesorskih sistema gde se koristi spoljašnji BUS, linija A0 je pogonjena najmanje značajnim bitom adresne magistrale pa je tako smeštanje dvaju reči obavljeno u dve susedne memorijske lokacije. Pin 3. je CS (eng.Chip Select). Njegovo aktivno stanje je “low”. U slučaju da nemamo drugih perifernih uređaja (Stand-Alone Operation) ovaj pin može biti konstantno na niskom potencijalu. Pin 6. CE (eng.Chip Enable), ima aktivno stanje “high” i za njega važi isto kao i za pin 3. R/C linija ( eng.Read/Convert ) je na pinu 5. Mora biti “0” da bi konverzija započela. Za početak konverzije se može koristiti i opadajuća ivica (1-0) na ovom pinu. Da bi se obavio prenos rezultata konverzije iz internog registra na izlazni port konvertora, ovaj pin mora da ima logičko stanje “high”. Takođe se može koristiti ivica, ali ovog puta uzlazna (0-1). Trimer P1 služi da se podesi faktor skale (Full Scale Calibration).

Početak konverzije

Da bi proces konverzije otpočeo, potrebno je da se pin R/C nađe na niskom logičkom nivou. Podrazumeva se da su CE = 1 i CS = 0. Stanje linije A0 nema uticaja. Izlazni port ADC-a je na visokoj impendansi. U toku ove operacije, stanja na trima kontrolnim linijama se ignorišu, tako da ne mogu da ugroze proces konverzije ni na koji način. Podaci se ne mogu isčitavati sve do kraja operacije, na šta nam ukazuje stanje na statusnoj liniji (pin 28). Njeno visoko stanje nam ukazuje da je konvertor zauzet. Pošto vreme konverzije premašuje 25ms, rešeno je programsko prozivanje ove linije. Tek pošto stanje na ovoj liniji postane “low” moguće je isčitavanje podataka.

1b121.gif (33837 bytes)
kliknite na sliku da bi je uvećali
Slika 1.

Čitanje podataka

Pošto je konverzija inicirana, izlazni port konvertora prelazi u stanje visoke impendanse, koje zadržava sve dok se istovremeno ne dese sledeći uslovi: R/C = 1, STATUS = 0, CE = 1, CS = 0. Tek pošto su zadovoljena ova četiri uslova dolazi do transfera podataka iz internog registra na izlazni port, i to u zavisnosti od stanja na linijama 12/8 i A0 (tabela2.).

Operacija
Ne postoji
Ne postoji
Inicira 12-to bitnu konv.
Inicira 8-mo bitnu konv
Inicira 12-to bitnu konv.
Inicira 8-mo bitnu konv.
Inicira 12-to bitnu konv
Inicira 8-mo bitnu konv.
Omogućava 12-to bitni izlaz
Omogućava samo 8 MSB-a
Omogućava 4 LSB-a i 4 nule

CS R/C 12/8  A0 CE
x x x x 0
1 x x x x
0 0 x 0 ­
0 0 x 1 ­
Ż 0 x 0 1
Ż 0 x 1 1
0 Ż x 0 1
0 Ż x 1 1
0 1 1 x 1
0 1 0 0 1
0 1 0 1 1

Program

Kontrolne linije se povezuju na port b i to: CS =PB7, CE = PB6, A0 = PB5 i R/C = PB4. Statusna linija je priključena pa port c ( PC1 ). Linije podataka su priključene na port e (PE0-PE7 na DB4-DB11 respektivno). Iskorišćen je baš ovaj port zato što pri upotrebi internog ADC-a on služi baš ovoj svrsi. Promenljive počinju od adrese $350. Prva lokacija je “hexbr” . Tu se nalazi heksadecimalna vrednost koja predstavlja vrednost izmerenog napona. Ova vrednost se može, u zavisnosti od potrebe, upotrebiti za kompariranje, prikazivanje ili regulaciju, već prema potrebi. Iza nje se nalaze lokacije u koje se smeštaju međurezultati preračunavanja. Posle učitavanja početne adrese bloka registara, proverava se status ADC-a. Ako konvertor nije zauzet, daje se nalog za početak konverzije. Isčitavanje vršimo kada statusna linija bude ponovo na niskom nivou i to tako što prvo pročitamo 8 značajnijih bitova, liniju A0 postavimo na “high”, pa isčitamo 4 manje značajna bita i 4 nule. Time bi prenos podataka iz ADC-a bio završen. U akumulatoru D se sada nalazi broj u intervalu od 0 do 4095. U ostatku programa se taj broj pretvara u heksadecimalnu vrednost u opsegu 0 do 10000, koja predstavlja napon u opsegu od 0 do 10V.

Listing programa


Pročitajte više o ovoj temi
Bit po bit
Serijski EEPROM, šta i kako
Konverzija
Pokrenimo štampač
Množenje celog i realnog broja
Povezivanje male tastature 
AD konverzija

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji