ADC
TEORI DASAR DAN PEMROGRAMAN ADC
Page 1
angka
digital
yang
dimengerti
komputer.
Di
dunia
Page 2
Chip ADC0804
Chip ADC0804 adalah konverter analog-ke-digital, turunan langsung dari
keluarga seri ADC800 buatan National Semiconductor. Sekarang chip sejenis
sudah dibuat oleh beberapa pabrik dan merek berbeda. Dia bekerja pada
tegangan 5 Volts dan memiliki resolusi 8-bit. Selain resolusi, waktu konversi
(convertion time) menjadi parameter yang sangat penting pula. Convertion Time
ini menunjukkan berapa lama waktu yang dibutuhkan oleh ADC untuk melakukan
1 kali konversi. Pada ADC0804 Convertion Time ditentukan oleh nilai clock yang
ad pada pin-pin CLK R dan CLK IN, dan paling cepat adalah 110uS. Pin-pin
dalam ADC0804 adalah sebagai berikut ini..
CS
Chip Select adalah input dengan aktif rendah yang digunakan untuk
mengaktifkan chip ADC0804. Agar kita dapat megakses chip ini, tentu saja pin ini
harus dibuat rendah terlebih dahulu.
RD (read)
Pin ini adalah input dan aktif rendah. Setelah ADC melaksanankan tugas pengkonversi-an, ADC akan menyimpan hasilnya pada register internalnya. pin RD
TEORI DASAR DAN PEMROGRAMAN ADC
Page 3
inilah yang digunakan untuk mengeluarkan data pada register internal tersebut,
keluar dari ADC0804 melalui pin D0-D7. Saat CS=0, dan adanya pulsa tinggi-kerendah pada RD maka hasil konversi 8-bit akan diteruskan pada pin D0-D7. Pin
RD ini juga disebut sebagai "Output Enable".
WR (Write, lebih cocokdisebut Start Convr.)
Ini adalah input aktif rendah yang digunakan untuk menginformasikan ADC0804
untuk segera memulai konversi. Jika CS = 0 dan ada pulsa tinggi-ke-rendah
pada WR, maka ADC akan memulai proses konversi nilai alnalog dari pin Vin
menjadi nilai digital 8-bit. Lama waktu konversi tergantung besaran kompoenen
yang kita pasanag pada CLK IN dan CLK R seperti yang sudha dijelaska
sebellumya.Begitu konversi selesai maka pin INTR akan langsung oleh ADC
dibuat rendah.
CLK IN dan LCK R
CLK IN adalah pin input yang dihubungkan pada sumber clock eksternal, jika kita
mengunakan sumber clock eksternal untuk pewaktuan/timming. Namun,
ADC0804 juga memiliki pembangkit clock sendiri di dalamnya. Untuk
menggunakan pembangkit clock tersebut kita hanya membutuhkan sebuah
capasitor dan sebuah resistor yang dihubugkan pada pin CLK IN dan CLK R
tersebut. Cara menghubungkan ke 2 komponen dan ke 2 pin tersebut
digambarkan pada gambar 12-5. Dalam kasus ini frekuensi clock ditentukan dari
perhitungan sbb:
f= 1/(1.1 R C)
Dimana R biasanya adalah resistor 10 k Ohms, dan C biasanya 150 PF.
Sehingga akan didapat f = 606 kHz. Dan dalam kasus ini kita akan mendapatkan
convertion time = 110uS.
Page 4
Page 5
Ini adalah pin untuk catu daya 5 volts. Selain itu, jika pin 9 atau pin Vref/2
dibiarkan tidak terhubung maka tinggi tegangan Vcc inilah yang akan dijadikan
Vref-nya. Hal ini akan dijelaskan kemudian.
Vref/2
Pin 9 ini adalah input tegangan yang digunakan sebagai tegangan referensi. Jika
pin dibiarkan tidak terhubung, maka jangkauan tegangan input analog adalah
mulai dari 0 5 Volts. Pin ini sangat penting jika kita ingin mengubah ADC
dipekerjakan dalam jangkauan selain 0-5V tersebut. Misalnya agar ADC0804
dapat bekerja dalam jangkauan 0 4 Volts, maka kita harus menggunakan pin 9
ini dan menghubungkannya pada tegangan 2 Volts. Tabel 1.5 menunjukkan
jangkauan Vin dengan Vref/2 berbeda.
Table 12.5: Hubungan Vref/2 dan jangkauan Vin
Vref/2 (V)
tdk terhubung )*
2.0
1.5
1.28
1.0
0.5
Vin (V)
05
04
03
0 2.56
02
01
Page 6
Ini adalah 2 pin input yang menghubungkan ground dari 2 bagian dalam chip
ADC0804, yakni bagian analog dan bagian digital. Digital Ground adalah
pasangan dari pin Vcc. Alasan kenapa terdapat 2 buah ground adalah agar
masing-masing rangkaian dapat benar-benar sedapat mungkin terpisah satu
sama lain. Sehingga pensaklaran digital yang terjadi terutama pada pin D0-D7
tidak mempengaruhi Vin, sehingga ditakutkan hasil yang diperoleh menjadi tidak
sesuai dengan yang diharapkan. Semakin terpisah maka kualitas konversi akan
menjadi semakin baik. Dalam prakteknya kita dapat menghubugkan ke 2 pin Gnd
pada ground yang sama, walaupun harus sedikit mengorbankan kualitas
konversi. Dalam hal masih belajar, bolehlah hal ini diabaikan. Untuk peralatan
profesional, maka ground ini menjadi masalah yang sangat penting yang harus
kita perhatikan.
Dari diskusi ini kita dapat menarik kesimpulan bahwa langkah-langkah berikut inilah
yang harus dilakukan untuk melakukan konversi pada chip ADC0804.
1. Buatlah CS = 0 dan kirim pulsa rendah-ke-tinggi pada pin WR untuk segera
melakukan konversi.
2. Selalu memonitor pin INTR. Jika INTR rendah, maka konversi selesai, dan kita dapat
segera ke langkah berikutnya. Namun jika INTR masih tinggi, maka kita harus
menunggu sampai dia rendah.
3. Setelah INTR rendah, maka pastikan CS=0 dan kirim pulsa tinggi-ke-rendah pada pin
RD. Sehingga kita dapat segera membaca hasil konversi pada D0-D7. Sedang
Timming Diagram adalah seperti pada Gambar12-6.
Page 7
Page 8
digital akan muncul pada saluran keluaran.Sinyal mulai konversi pada WR (pin 3). Untuk
memulai suatu konversi, CS harus rendah. Bilamana WR menjadi rendah, konverter akam
mengalami reset, dan ketika WR kembali kepada keadaan high, konversi segera dimulai.
Konversi detak konverter harus terletak dalam daereh frekuensi 100 sampai 800kHz. CLK IN
( pin 4) dapat diturunkan dari detak mikrokontroller, sebagai kemungkinan lain, kita dapat
mempergunakan pembangkit clock internal dengan memasang rangkaian RC antara CLN IN
( pin 4) dan CLK R ( pin 19).Pin 5 adalah saluran yang digunakan untuk INTR, sinyal selesai
konversi. INTR akan menjadi tinggi pada saat memulai konversi, dan akan aktiv rendah bila
konversi telah selesai. Tepi turun sinyal INTR dapat dipergunakan untuk menginterupsi sistem
mikrokontroller, supaya mikrokontroller melakukan pencabangan ke subrutine pelayanan yang
memproses keluaran konverter.Pin 6 dan 7 adalah masukan diferensial bagi sinyal analog. A/D
ini mempunyai dua ground, A GND (pin 8) dan D GND ( pin10). Kedua pin ini harus
dihubungkan dengan ground. Pin 20 harus dihubungkan dengan catu daya
+5V
A/D ini mempunyai dua buah ground, A GND ( pin 8 ) dan D GND ( pin 10). Keduanya harus
dihubungkan dengan catu daya, sebesar +5V.Pada A/D 0804 merupakan tegangan referensi yang
digunakan untuk offset suatu keluaran digital maksimum. Dengan persamaan sebagai berikut:
0,000
0000 0000
0,0156
0000 0001
0,0313
0000 0010
1111 1111
255
Page 9
A/D ini dapat dirangkai untuk menghasilkan konversi secara kontinu. Untuk
melaksanakannya, kita harus menghubungkan CS, dan RD ke ground dan
menyambungkan WR dengan INTR seperti pada gambar dibawah ini. Maka dengan ini
keluaran digital yang kontinu akan muncul, karena sinyal INTR menggerakkan masukan
WR. Pada akhir konversi INTR berubah menjadi low, sehingga keadaan ini akan
mereset konverter dan mulai konversi.
Tabel 5.1 Koneksi Interface ADC ke Mikrokontroller
ADC
Port Mikrokontroller
/INTR
P3.2
/WR
P3.6
/RD
P3.7
D0 s/d D7
OUTPUT
KEGIATAN
/WR
/RD
/INTR
DO S/D D7
Hi-Z
Reset
Hi-Z
Hi-Z
Konversi Selesai
Data Out
Data Ready
Page 10
2.PEMROGRAMAN ADC
Simbol skematik untuk konverter analog-ke-digital tipikal ditunjukkan di bawah ini. Di sebelah
kanan adalah sebuah ilustrasi bagaimana ADC dapat dihubungkan dengan 8051.
Page 11
PEMROGRAMAN
HUBUNGAN PIN IC ADC
RD P3.7, WR P3.6
P3.7
0
P3.6
0
P3.5
1
P3.4
1
P3.3
1
P3.2
1
P3.1
1
P3.0
1
DATA
3F
DATA P2.0-P2.7
PROGRAM 1
Membaca data input analog dan simpan di Register R3
ORG 0H
LOOP:
MOV P3,#3FH
MOV R3,P2
SJMP LOOP
HASIL PEMBACAAN DATA INPUT ANALOG
DATA IPUT
ANALOG ( VOLT))
0.9
1.25
1.6
2.5
3.11
3.49
TEORI DASAR DAN PEMROGRAMAN ADC
DATA OUTPUT
DIGITAL
2E
40
52
69
9F
B2
Page 12
4.10
4.54
5.0
CD
E8
FF
Page 13
CALL DELAY
RL A
DJNZ R4, LOOP1
sjmp END
SKANAN:
mov A,#01H
LOOP2:
MOV P1,A
CALL DELAY
RR A
DJNZ R4, LOOP2
sjmp END
DELAY:
MOV R7,#10H
TUNDA:
MOV R6,#10H
DJNZ R6,$
DJNZ R7,TUNDA
RET
END:
END
Page 14
Dalam contoh di atas antarmuka ADC ke 8051, garis CS-bar terhubung ke tanah secara
permanen mengaktifkan chip. Garis INTR-bar pergi RENDAH sekali konversi selesai, oleh
karena itu terhubung ke salah satu pin interrupt eksternal pada 8051. Dengan cara ini, pada 8051
akan terputus ketika konversi selesai dan data siap untuk membaca.
Baris data adalah tri-state (maka simbol segitiga terbalik) yang berarti chip ini dapat memori
dipetakan dan data garis dapat dihubungkan langsung ke data bus. Pada contoh di atas baris data
yang terhubung ke port 1, tapi karena mereka adalah tri-negara pelabuhan juga dapat digunakan
untuk sesuatu yang lain.
Hanya ketika konversi selesai adalah P2.0 dibersihkan yang memungkinkan jalur data dan
konversi analog muncul pada port 1. Garis WR-bar digunakan untuk memulai konversi. Kliring
ini me-reset garis mendaftar berturut-pendekatan internal dan 8-bit pergeseran mendaftar.
TEORI DASAR DAN PEMROGRAMAN ADC
Page 15
Ketika garis diatur konversi dimulai. Oleh karena itu, mengambil membaca dari ADC adalah
proses dua langkah:
1. Yang jelas dan kemudian menetapkan WR-bar untuk memulai konversi.
2. Beberapa waktu kemudian (biasanya 100 kita), garis INTR-bar akan pergi RENDAH
untuk menunjukkan konversi selesai. Hal ini akan menyebabkan interupsi eksternal 0 dan
terserah ke ISR 0 eksternal untuk membaca data dengan membersihkan P2.0 dan
membaca data dari port 1.
Menggunakan interrupt mikrokontroler memungkinkan untuk melakukan beberapa pekerjaan
selama 100 kita yang diperlukan untuk mengubah masukan analog menjadi digital.
data ADC
P3.7
ADC Read
Page 16
P3.6
ADC Write
P1.0 P1.7
data DAC
P0.7
DAC write
DAC
Pemograman Dasar
1.1 Input Analog output Register
org 0h
loop:
mov p3,#3fh
mov R4,p2
sjmp loop
1.2 Input Analog output Memori
org 0h
loop:
mov p3,#3fh
mov 45h,p2
sjmp loop
Page 17
org 0h
loop:
mov p3,#3fh
mov a,p2
mov p0,#7fh
mov p1,a
sjmp loop
Page 18
mov p1,#33h
jmp loop
TUgas/ Latihan
Mengghasilkan output yang sesesuai dengan perubahan data input Analog
Kemudian ditampilkan di output LED, Display, DAC ( analog output )
output LED
o
UP counter
Down Counter
UP-Down Counter
Jawaban Tugas-1
Jika tegangan input analog = 2.80 Volt, maka Output Up-Counter Aktif
org 0h
mov r3,#8fh
loop:
mov p3,#3fh
mov a,p2
subb a,r3
jz loop2
mov p0,#7fh
TEORI DASAR DAN PEMROGRAMAN ADC
Page 19
mov p1,a
sjmp loop
loop2:
mov r4,#00h
loop3:
mov a,r4
mov p1,a
call delay
inc a
mov r4,a
sjmp loop3
jmp loop
delay:
mov r7,#55h
loop4:
mov r6,#20h
djnz r6,$
djnz r7,loop4
ret
TEORI DASAR DAN PEMROGRAMAN ADC
Page 20
3.RANGKAIAN DAC
4.PEMROGRAMAN DAC
Page 21
Page 22
nyala LED. Harap diperhatikan pula dalam mode free running ini input CS selalu diground. Dan input WR terhubung pada output INTR. Namun menurut data sheet yang
dikeluarkan oleh "National Semiconductor", bahwa WR dan INTR, keduanya sebaiknya
harus dibuat rendah sesaat begitu chip dinyalakan, untuk menjamin operasi yang
sempurna.
Contoh 12-1
Buatlah hubungan ADC0804 dengan 8051 seperti pada gambar 12-7. Dan
kemudian tulis program untuk memonitor pin INTR dan baca nilai dari input
analog ke Akumulator. Kemudian panggil rutin konversi Hex-to-ASCII, dan
rutin Display untuk menampilkan nilai tersebut. Buat hal tersebut berulang.
jawaban:
Page 23
CLR P2.6
SETB P2.6
TUNGGU:
JB P2.7,TUNGGU
CLR P2.5
MOV A,P1
;RD = 0
;Baca data
ACALL HEXTOASCII
ACALL DATA_DISPLAY
SETB P2.5
;-panggil rutin
;-panggil rutin
SJMP ULANG
Page 24
Gambar 12-8 Hubungan ADC0804 dengan sumber clock XTAL2 milik 8051
Perhatikan gambar 12-8, clock untuk ADC0804 datang dari kristal milik mikrokontroller.
Mengingat frekuensi tersebut masih terlalu tinggi, maka kita menggunakan flip-flop typeD (74LS74) untuk membagi frekuensi tersebut 4 kali. Seperti yang nampak pada
gambar kita menggunakan 2 buah flip-flop. Untuk prosesor yang menggunakan kristal
lebih tinggi lagi, maka terpaksa kita juga akan menambah flip-flopnya, sehingga
frekuensi clock yang diberikan masih dapat diterima oleh ADC0804.
Menghubungkan sensor suhu pada 8051
Tranduser mengkonversi data fisika seperti suhu, intensitas cahaya, aliran, dan
kecepatan, menjadi sebuah sinyal listrik. Tergantung dari tranduser yang kita pakai,
output keluaran yang dihasilkan bisa berupa Tegangan (Volt), Arus (Current), Resistansi
(Resistance), atau kapasitas (Capacitance). Misalnya suhu diubah menjadi sinyal listrik
menggunakan tranduser yang disebut dengan thermistor. Thermistor merespon
perubahan suhu dengan berubahnya resistansi diri thermistor tersebut, walaupun
sebenarnya respon tersebut tidak linier, seperti yang ditampilkan pada Tabel 12-6.
Page 25
Page 26
menjelaskan pilihan untuk LM35. (Untuk lebih jauh tentang sensor-sensor ini kunjungi
www.national.com).
Pengkondisian Sinyal dan menghubungkan LM35 dengan 8051
Pengkondisian sinyal digunakan secara luas dalam pekerjaan pencuplikan data (data
acquisition). Sebuah tranduser yang paling umum menghasilkan output dalam bentuk
tegangan, arus, muatan, kapasitas, dan resistansi. Namun, kita butuh untuk
mengkoversi sinyal-sinyal tersebut ke dalam bentuk Voltage (tegangan), yang ujungnya
nanti akan kita kirim pada konverter A-D. Konversi (modifikasi) ini biasa disebut dengan
Pengkondisian sinyal. Pengkondisian sinyal dapat berupa konversi arus-ke-tegangan,
atau penguatan sinyal. Misalnya, thermistor berubah resistansinya akibat suhu.
Perubahan resistansi tersebut harus diterjemahkan ke dalam tegangan karena nanti
kita menggunakan ADC. Lihat pada kasus menghubungkan LM35 pada ADC0804.
Mengingat ADC0804 memiliki resolusi 8-bit dengan maksimum 256(2exp8) langkah dan
LM35 (atau LM34) menghasilkan 10mV setiap derajat dari perubahan suhu. Kita bisa
mengkondisikan Vin dari ADC0804 untuk menghasilkan Vout 2560mV (2.56V)
jangkauan keluaran maksimumnya. Sehingga pada akhirnya ADC0804 akan
menghasilkan keluaran 1 bilangan biner setara dengan 1 derajat suhu.
Agar ADC0804 bisa dibuat untuk memiliki skala 0 2560 mV saja, kita harus membuat
tegangan Vref/2 menjadi setengah tegangan maksimum yang diinginkan, yakni 1.28V.
Lihat
Tabel
12-9,
dan
nilai
Vref/2
diberikan
Tabel
12-5.
Page 27
Temp (C)
0
1
2
3
10
20
Vin(mV)
0
10
20
30
100
300
DOutput(D7-D0)
0000 0000
0000 0001
0000 0010
0000 0011
0000 1010
0001 1110
Page 28
Pada ADC0808/9, Vref(+) dan Vref(-) diatur sebagai tegangan refrensi. Jika Vref(-) =
Gnd dan Vref(+) = 5 V, maka ukuran step adalah 5V / 256 = 19.53 mV per step.
Sehingga untuk mendapatkan ukuran step menjadi 10mV, maka kita harus mengubah
tegangan Vref(-) = Gnd dan Vref(+) = 2.56V. Dari gambar 12-11, lihat pin ALE. Kita
menggunaan alamat A, B, dan C untuk memilih IN0 IN7, dan perlu mengaktifkan ALE
untuk mengunci alamat. SC berarti Start Convertion. EOC berarti End Of Convertion,
dan OE berarti Output Enable. Selanjutnya, kita harus membuat kode untuk itu semua.
Langkah-langkah pemrograman ADC0808/9
Page 29
Berikut ini adalah langkah-langkah untuk mendapatkan data dari input analog
ADC0808/9 menuju mikro kontroller.
1. Pilih kanal analog dengan mengatur bit alamat A, B, dan C sepeti pada Tabel 12-10.
2. Aktifkan pin ALE (Address Latch Enable). Dia membutuhkan pulsa rendah-ke-tinggi
untuk segera dapat mengunci alamat yang sudah diberikan.
3. Aktifkan pin SC (Start Convertion) dengan memberikan pulsa tingg-ke-rendah agar
ADC segera melakukan konversi.
4. Periksa pin EOC (End Of Convertion) untuk melihat apakah konversi sudah selesai
atau belum. Begitu pin tersebut menjadi rendah menandakan konversi telah selesai.
5. Aktifkan pin OE (Output nable) untuk membaca data keluar dari ADC. Berikan pulsa
tinggi-ke-rendah pada pin OE tersebut.
Perhatikan bahwa ADC0808/9 tidak memiliki pembangkit clock sendiri. Clock harus
diberikan kepadanya pada pin CLK yang sumbernya dari peralatan lain (Misalnya Mikro
Kontroller). Sehingga kecepatan konversi tergantung dari frekuensi clok yang terhubung
kepadanya, dan tidak pula bisa melebihi 100mS.
Ringkasan
Pada BAB ini ditunjukkan bagaimana menghubungkan peralatan Dunia Nyata seperti
LCD, Chip ADC, dan sensor-sensor, pada 8051. Pertama, kita dijelaskan tentang mode
operasi LCD, dan kemudian dijelaskan bagaimana memprogam LCD dengan
mengirimkan Command atau Data lewat koneksi hubungan dengan 8051 tersebut.
Kemudian kita menggali chip ADC dan sensor suhu. Mengambil data dari Dunia Nyata
menuju ke peralatan Digital yang disebut dengan Signal Conditioning. Dan itu adalah
hal yang paling mendasar dari "system akuisisi data".
Page 30