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 |
|
|
|