Autor: Vladica Todorovski, dipl.ing

 

 

4-20 mA sa DAC8512 i 68HC11

DAC8512 je kompletno serijski dvanaestobitni monolitni DA konvertor, proizvod firme Analog Devices, dizajniran da radi sa napajanjem od 5V.

 

U čipu su sadržani naponski switch-ovan, 12 bitni, laserski trimovan DAC, izvor referentnog napona, pomerački(shift) DAC registar, lečevi, serijski data ulazni registar kao i rail-to-rail izlazni pojačavač. Prilično je jeftin, što omogućava čestu primenu u razvojnim aplikacijama sa različitim mikrokontrolerima. Izlazni pojačivač može da se swinguje na bilo koji napon koji je setovan u opsegu od 0V do +4,095V za rezoluciju od 1mV po bit-u.

Serijski interfejs je brz, trožilan, DSP kompatibilan: Data (SDI), klok (CLK) i load strobe (LD). Ovakav 3-žilan interfejs omogućuje maksimalnu flek-sibilnost za povezivanje sa različitim ure-đajima koji podržavaju serijski data ulaz. Isto tako postoji i chip select pin za selek tovanje više ovakvih D/A konvertora. Pin /CLR je power on reset i pomaže pri startovanju ili pri periodičnim re-setovanjima, tako da se izlaz setuje na nultu skalu pri uklučenju ili po želju korisnika. Kako je aktivan na niskom nivou, tako se u tom slučaju pomerački registar puni nulama. U normalnom radu potrebno je dovesti logičku jedinicu na taj ulaz /CS=High.

DAC koristi otporničku R-2R mrežu koja se svičuje sa N kanalnim MOSFET-ima. Izlazni napon DAC-a ima konstantnu otpornost koja je nezavisna od digitalnog ulaznog koda. Izlaz DAC-a je interno povezan na rail-to-rail izlaz operacionog pojačivača.

Ideja bi bila sledeća: pošto postoje dva registra, i to Serijski registar i 12 bitni DAC registar, nova vrednost se upisuje u seriski registar. Pri tome izlazni napon zadržava prethonu vrednost. Od kada se nova vrednost upiše u serijski ulazni registar, ona se može asinhrono preneti u 12-bitni DAC registar, pri čemu /LD pin strobuje. /LD pin je osetljiv na ivicu i zato on treba da se vrati na visoki nivo pre nego što se novi podatak upiše u serijski registar. U bilo kom trenutku sadržina DAC-a da se resetuje na nulu, pomoću pina /CLR, tako da izlazni napon postane 0V.

Na izlazu iz DAC8512 konfiguracija može da bude različita u zavisnosti od toga dali je potreban izlazni napon (unipolarni ili bipolaran) ili pak je potrebna izlazna struja. U ovon članku biće opisana upotreba DAC8512 u sprezi sa 68HC11 za dobijanje izlazne struje od 4-20mA.

Skoro u svim aplikacijama kojim se kontroliše neki poces, najbitnije je postaviti izolacionu barijeru između kontrolera i jedinice koja se kontroliše. Pošto optokapleri obezbeđuju izolaciju do 3kV, oni su sasvim pogodni za tu namenu. U ovom projektu korisćeni su optokapleri tipa H11L1, koji su sa šmitovim trige-rom, sto je od osobitog značaja pri pre-nosu digitalnih signala, naročito onih koji su osetljivi na ivicu.

Za vrednosti elemenata koji su prikazani na šemi, struja se izračunava sledećom jednačinom:


Iout=((1mV*Digit.kod*R3/R1)+(Vref*R3/R2))/R7


t.e.

Iout=3,9µA*Digit.kod+4mA



Pri čemu izlazna struja pune skale iznosi 20mA, kad je digitalni kod DA konvertora FFF. Podešavanje ofseta od 4mA obezbeđuje se sa potenciometrom P2, dok fino podešavanje struje od 20mA vrši se sa potenciometrom P1. Ova dva potenciometra se ne interaktuju zato što je neinvertovani ulaz na virtualnoj masi. Shottky dioda D1 u ovom kolu je potreb-na za zaštitu neinvertovanog ulaza, kad on padne više od 300 mV ispod invertovanog ulaza. Bez ove diode neka tranzicija može da dovede do obrtanja faze.

Povezivanje sa 68HC11

SCK pin mikrokontrolera 68HC11 koristi se za drajvanje SCLK pina DA konver-tora, dok se MOSI izlaz povezuje sa SDI. Za povezivanje ostalih pinova DA kon-vertora /CLR,/LD I /CS koriste se sledeći pinovi mikrokontrolera:PC1,PD5,PC0, kao što je prikazano na slici. Za ispravan rad serijskog interfejsa, 68HC11 mora da bude konfugurisan tako da bitovi za po-larizaciju kloka i za fazu kloka budu se-tovani na jedinicu (CPOL=CPHA=1).

Kada je potrebno da serijski podatak bude poslat u DAC, onda treba PC0 da se spusti na logički nivo nule, što u suštini znači da je selektovan DA konvertor. Kad je već iskonfigurisan mikrokontroler, onda serijski ulaz na MOSI-ju je validan na rastuću ivicu kloka ( SCLK ). Mikrokontroler šalje serijski podatak od 8-bita (prvo MSB), i to u toku osam rastućih klok ivica koji se pojavljuju u ovom ciklusu za trnsmisiju.

Da bi se postavili celi podaci u ulazni serijski registar DAC-a PC0 mora da ostane na niskom nivou (čip ostaje selektovan), i onda se produžuje sa prenosom sledećeg bajta. Pošto je ovaj DAC dvanaestobitan, četiri bita drugog bajta (oni viši) ne ulaze u pomerački registar DA konvertora.

Na kraju transfera i drugog bajta PC0 se podiže na visoki nivo. Sledeći problem je transfer 12-to bitnog podatka iz ulaznog pomeračkog registra u DAC registar. Da bi ostvarili taj cilj PD5 se spušta na logičku nulu potvrđujući /LD ulaz. Pin PC1 od mikrokontrolera je povezan sa /CLR i njime se obezbeđuje asinhrona funkcija čišćenja, setujući izlaz DA konvertora na nulu.

Listing:
Izvorni interfejsni kod za MC68HC11
DAC8512-Izvorni interfejsni kod za MC68HC11
*
PORTC EQU $03 * Port C Kontrolni Registar
* 0,0,0;0,0,CLR/,CS/
DDRC EQU $07 * Port C data direction
PORTD EQU $08 * Port D data registar
* 0,0,LD/,SCLK;SDI,0,0,0
DDRD EQU $09 * Port D data direction
SPCR EQU $28 * SPI Kontrolni Registar
* SPIE,SPE,DWOM,MSTR;CPOL,CPHA,SPRl,SPR0
SPSR EQU $29 * SPI Statusni Registar
* SPIF,WCOL,0,MODF;0,0,0,0
SPDR EQU $2A * SPI data registar; Read-Buffer; Write-Shifter
*
* SDI RAM promenljive:
* SDI1 Prima vrednost od 0 (Hex) do F (Hex)
* SDI2 Prima vrednost od 00 (Hex) do FF (Hex)
* DAC trazi dva 8-bit podatka; visa 4 bita od SDI1
* se ignorisu.
*
SDI1 EQU $00 * SDI Prvi bajt "0,0,0,0;MSB,DB10,DB9,DB8"
SDI2 EQU $01 * SDI Drugi bajt "DB7,DB6,DB5,DB4;DB3,DB2,DB1,DB0"
*
ORG $C000 * Start korisnickog RAM-a na EVB
INIT LDS #$CFFF * Vrh C stranice RAM-a
*
LDY #$1000 * Pointer na on-chip registre
LDAA #$03 * 0,0,0,0;0,0,1,1
* CLR/-Hi, CS/-Hi
STAA PORTC,Y * Inicijalizacija izlaza sa Porte C
LDAA #$03 * 0,0,0,0;0,0,1,1
STAA DDRC,Y * CLR/ i CS/ su sad omoguceni kao izlazi
*
LDAA #$30 * 0,0,1,1;0,0,0,0
* LDI-Hi,SCLK-Hi,SDI-Lo
STAA PORTD,Y * Inicijalizacija izlaza Porte D
LDAA #$38 * 0,0,1,1;1,0,0,0
STAA DDRD,Y * LD/,SCLK, i SDI su sad omoguceni kao izlazi
*
LDAA #$5F *
STAA SPCR,Y * SPI je Master,CPHA=1,CPOL=1,Clk rata=E/32
*
BSR UPDATE * Xfer 2 8-bitna podatka u DAC8512
JMP $E000 * Restartovanje BUFFALA
*
UPDATE PSHX * X, Y, i A registri se cuvaju u Stack
PSHY *
PSHA *
*
LDAA #$0A * 0,0,0,0;1,0,1,0
STAA SDI1 * SDI1 uzmemo na primer da je 0A (Hex)
*
LDAA #$AA * 1,0,1,0;1,0,1,0
STAA SDI2 * SDI2 uzmemo na primer da je AA (Hex)
*
LDX #SDI1 * 1-vi bajt sto se salje preko SDI
*
*
BCLR PORTC,Y $02 * Potvrdjuje se CLR/
BSET PORTC,Y $02 * Otpotvrdjuje se CLR/
*
BCLR PORTC,Y $01 * Potvrdjuje se CS/
*
TFRLP LDAA 0,X * Uzima se prvi bajt (sledeci cekor drugi) da se posalje po SPI
STAA SPDR,Y * Upis u SDI data reg za startovanje transfera
*
WAIT LDAA SPSR,Y * Petlja da ceka SPIF
BPL WAIT * SPIF je MSB u SPSR
*
* (kad je SPIF setovan, onda je SPSR negativan)
INX * Inkrementuje se counter za sledeci bajt za xfer
CPX #SDI2+1 * Dali je vec to uradjeno?
BNE TFRLP * Ako nije, xfer drugog bajta
*
* Sadrzina DAC registra se salje na izlaz
*
BCLR PORTD,Y $20 * Potvrdjuje LD/
BSET PORTD,Y $20 * Lecuje DAC registra
*
BSET PORTC,Y $01 * Otpotvrdjuje CS/
PULA * Kad je sve zavrseno, vracaju se X, Y & A
PULY *
PULX *
RTS * Povratak u glavni program
*
*
END

Šema povezivanja (kliknite na tekst).


 

Pročitajte više o ovoj temi
Vezni igrač
MCX11 MicroController eXecutive za 68HC11
Semafori
Tajmeri
cMCX11 Real Time operativni sistemi u programskom jeziku C

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