Anda di halaman 1dari 8

BABI

MENGGUNAKAN
ANALOG TO DIGITAL CONVERTER /ADC0820

I.1 ADC 0820


RTC DS12887 adalah IC pengubah data analog menjadi data digital. Teknik pengubahan
menggunakan metode half flash sehingga mempunyai kecepaan konversi yang tinggi.
Secara umum fitur yang ada adalah sebagai berikut :
-built-in fungsi track and hold ,
-pewakuan (clock) internal,
-catu daya tunggal (+5V) dengan daya 75mW,
-jangkauan tegangan analog dari 0 s/d +5V,
-selaras dengan tingkat TTL dan MOS,
-tidak membutuhkan pengaturan nol dan skala penuh,
-keluaran luapan (overflow) untuk penggandengan.
-waktu konversi :
1,5 µs (mode WR-RD)
2,5 µs (mode RD)

I.1.1Susunan dan Fungsi Kaki IC


Ada beberapa macam kemasan IC ADC0820 salah satunya adalah DIP (standar kemasan
yang lainnya dapat dilihat pada datasheet) yang diperlihatkan pada Error: Reference source
not found. ADC0820 mempunyai dua mode kerja yaitu mode WR-RD dan mode RD,
pembahasan pada bab ini mengacu pada mode WR-RD Fungsi masing-masing kaki dengan
mengacu pada mode WR-RD diperlihatkan pada Error: Reference source not found. (mode
RD dapat dirujuk pada datasheet ADC0820).

Gambar I.6 Susunan kaki ADC0820.

Tabel I.2 Fungsi masing-masing kaki DS12887.


Kaki Nama Fungsi
Masukan analog , jangkauan GND ≤ VIN ≤ VCC
1 VIN
keluaran data (D0 s/d D3)
2-5 DB0 –DB3
sinyal mulai konversi (START)
6 /WR

1
pemilih mode, dikoneksikan ke VCC (mode WR-RD)
7 Mode
sinyal baca hasil konversi
8 /RD
sinyal keluaran penanda konversi selesai (EOC)
9 /INT
10 GND Ground
VREF(-) tegangan sisi bawah dari resistor ladder , jangkauan
11 tegangannya GND ≤ VREF(-) ≤ VREF(+)

VREF(+) tegangan sisi atas dari resistor ladder , jangkauan


12 tegangannya VREF(-) ≤ VREF(+) ≤ VCC

pengaktif selama mulai konversi (/WR) dan pembacaan


13 /CS
hasil konversi (/RD).
keluaran data (D4 s/d D7)
14-17 DB4 – DB7
luapan (overflow), jika masukan analog melebihi VREF(+)
18 /OFL maka /OFL akan rendah. Berfungsi untuk menggandeng
beberapa ADC agar resolusinya bertambah ( 9, 10 bit)

19 NC tidak dihubungkan
20 VCC tegangan positif catu daya

Catatan:
Untuk parameter DC maupun AC dapat dilihat secara lengkap pada datasheet (Lihat di CD).

I.1.2Kerja ADC
Secara umum kerja ADC terdiri atas tiga runtun yaitu :
-memulai konversi (START),
-melakukan konversi,
-memberitahu akhir konversi

Untuk memulai konversi maka sinyal /CS dan /WR diberi logika rendah (0). Beberapa chip
ADC mengunakan nama WR dengan START.

Setelah ADC menerima sinyal mulai konversi maka ADC akan melakukan proses konversi
yang ditandai dengan keluaran /INT tinggi (beberapa chip ADC menamakan dengan
keluaran End of Conversion /EOC).

Akhir konversi ditandai dengan logika rendah pada keluaran /INT. Pada akhir konversi data
digital dihasilkan dan dapat dibaca melalui kaki DB0 s/d DB7 (bus data) dengan
mengaktifkan /RD.

Diagram pewaktuan kerja ADC diperlihatkan pada Gambar I.6. Untuk mempercepat proses
konversi maka sinyal /RD dapat diakifkan sebelum akhir proses konversi namun pembacaan
data tetap setelah sinyal /INT aktif sebagaimana pada Gambar I.6.

Pada mode stand alone atau free running sinyal /CS dan /RD diberi logika rendah. Sinyal
akhir konversi (/INT) digunakan untuk mengaktifkan /RW oleh karena itu kaki /INT
dikoneksikan dengan kak /RW. Sinyal /RW masih harus diaktifkan secara eksternal (saklar
atau dari mikrokontroler). Diagram pewaktuan diperlihatkan pada Gambar I.6.

2
Gambar I.6 Diagram pewaktuan Kerja ADC (mode WR-RD)

Gambar I.6 Sinyal RD diaktifkan sebelum INT aktif (mode WR-RD)

Gambar I.6 Operasi stand alone atau free running (mode WR-RD)

I.1.3Tegangan Referensi
Tegangan referensi VREF terdiri atas VREF(+) dan VREF(-). Tegangan VREF merupakan
deferensial antara VREF(+) dan VREF(-), sehingga nilai VREF = VREF(+) - VREF(-). Tegangan
masukan yang nilainya sama dengan VREF(-) akan dikonversi ke data 0x00 (nol) dan
tegangan masukan yang nilainya sama dengan VREF(+) akan dikonversi ke data 0xff (skala
penuh). Dengan mengurangi VREF maka sensitivitas ADC akan meningkat.

3
Contoh:
VREF = 2,55 Volt maka 1 LSB = 2,55 Volt/255 = 10 mV.

I.1.4Antarmuka Dengan Mikrokontroler

I.1.4.1Terkoneksi Dengan Port

I.1.4.1.1Antarmuka

Gambar I.6 Antarmuka ADC0820 terkoneksi port.

Gambar I.6 contoh antarmuka dengan mikrokontroler menggunakan teknik terkoneksi port.
Bus data ADC dikoneksikan dengan Port 0. Signal WR, CS, dan RD masing-masing
dikoneksikan dengan P2.0, P2.1, dan P2.2. Sedangkan /INT dikoneksikan dengan P3.3
(INT1) untuk antisipasi jika menggunakan teknik interupsi dalam pembacaan data hasil
konversi.

Data analog berupa tegangan keluaran potensiometer dengan jangkauan tegangan dari 0V
s/d 5V. Vref(+) dikoneksikan dengan Vcc (+5V) dan Vref(-) dikoneksikan dengan ground.

I.1.4.1.2Pemrograman
Antarmuka dengan teknik terkoneksi dengan port seluruh algoritma konversi
diimplementasikan menggunakan perangkat lunak, oleh karena itu program menjadi lebih
panjang jika dibandingkan dengan teknik terpetakan memori.

Fungsi Konversi
Untuk memerintahkan ADC melakukan konversi dan kemudian membaca hasil konversinya,
cukup dibuat satu fungsi. Adapun algorimanya adalah sebagai berikut.
1.Aktifkan pulsa Start (WR dan CS =0 kemudian 1 kembali)

4
2.Tunggu sampai konversi selesai (INT=0)
3.Baca data hasil konversi (RD dan CS =0, baca port yang terkonekasi dengan
bus data ADC).

Implementasi Fungsi Konversi

#define data_ADC P0 //bus data ADC dikoneksikan ke P0


#define WR_ADC P2_0 //sinyal write
#define CS_ADC P2_1 //sinyal chip select
#define RD_ADC P2_2 //sinyal read
#define INT_ADC P3_3 //selesai konversi

unsigned char ADC()


{
unsigned char tmp;
CS_ADC=0;
WR_ADC=0;
CS_ADC=1; //pulsa start konversi
WR_ADC=1;
while(INT_ADC==1); //tunggu proses konversi
RD_ADC=0;
CS_ADC=0;
tmp=data_ADC; //baca data hasil konversi
RD_ADC=1;
CS_ADC=1;
return(tmp);
}

I.1.4.1.3Aplikasi

#include<at89x51.h>
#include<stdio.h>
#include "tunda_keras.h"
#include "lcd_4bit.h"

#define data_ADC P0
#define WR_ADC P2_0
#define CS_ADC P2_1
#define RD_ADC P2_2
#define INT_ADC P3_3

unsigned char ADC()


{
unsigned char tmp;
CS_ADC=0;
WR_ADC=0;
CS_ADC=1;
WR_ADC=1;
while(INT_ADC==1); //tunggu proses
RD_ADC=0;
CS_ADC=0;
tmp=data_ADC; //baca data hasil
RD_ADC=1;
CS_ADC=1;
return(tmp);
}

5
void putchar(char datanya) //standar output diarahkan ke LCD
{
Tulis_LCD4bit(datanya);
}

void main()
{
Uchar hs=9;
Tunda_ms(60);
Init_LCD4bit();
while(1)
{
Kirim_Perintah4bit(0x01);
hs=ADC();
printf_small("Hasil =%d",hs);
Tunda_ms(1000);
}
}

I.1.4.2Terpetakan Memori
Selain menggunakan teknik terkoneksi port, antarmuka ADC0820 juga dapat dilakukan
dengan teknik terpetakan memori. Ruang memori yang digunakan adalah ruang memori
data eksternal. Perlu diingat adalah ADC merupakan peralatan masukan sehingga hanya
dapat dibaca saja. Penulisan pada ADC digunakan untuk mengaktifkan sinyal start bukan
untuk menulis/mengeluarkan data ke ADC.

I.1.4.2.1Antarmuka
Agar dapat membandingkan dengan teknik terkoneksi ke port maka keluaran data ADC
tetap dikoneksikan dengan Port 0 (P0). Kaki RD dan WR pada ADC masing-masing
dihubungkan dengan kaki RD ( P3.7) dan WR (P3.6) pada mikrokontroler sedangkan kaki
CS dihubungkan dengan keluaran dekoder alamat untuk menentukan alamat ADC.

Gambar I.6 Antarmuka ADC dengan teknik terpetakan memori.

6
Contoh:
Gambar I.6 di atas adalah contoh antarmuka ADC dengan mikrokontroler terpetakan
memori. Hanya jalur alamat A15, A14, dan A13 saja yang menjadi masukan dekoder alamat
sehingga logika 1 atau 0 pada jalur alamat yang lainnya tidak mempengaruhi aktif tidaknya
ADC. Akibatnya akan terjadi duplikasi alamat yang sangat banyak untuk komponen ADC.
Karena jalur alamat yang tidak dikoneksikan dengan masukan ADC sebanyak 13 bit maka
akan terjadi duplikasi alamat sebanya 213 – 1 = 8191 alamat

Tabel I.2 Alamat ADC dan duplikasinya.


A15 A14 A13 A12 A11 s/d A8 A7 s/d A4 A3 s/d A0 hex ket
0 0 1 X XXXX XXXX XXXX ADC
0 0 1 0 0000 0000 0000 2000 alamat dasar ADC
0 0 1 0 0000 0000 0001 2001 duplikasi awal
0 0 1 1 1111 1111 1111 3FFF duplikasi akhir

I.1.4.2.2Pemrograman
Pada teknik terpetakan memori ADC dianggap sebagai variabel yang berada di ruang
memori data eksternal oleh karena itu perlu dideklarasikan sebagai variabel.

volatile xdata Uchar at 0x2000 adc_data;

Fungsi Konversi

#define INT_ADC P3_3


volatile xdata Uchar at 0x2000 adc_data;

Uchar ADC()
{
adc_data=0xff;
while(INT_ADC==1);
return(adc_data);
}

I.1.4.2.3Aplikasi

#include<at89x51.h>
#include<stdio.h>
#include "tunda_keras.h"
#include "lcd_4bit.h"

#define INT_ADC P3_3

volatile xdata Uchar at 0x2000 adc_data;

Uchar ADC()
{
adc_data=0xff;
while(INT_ADC==1);
return(adc_data);
}

void putchar(char datanya)

7
{
Tulis_LCD4bit(datanya);
}

void main()
{
Uchar hs=9;
Tunda_ms(60);
Init_LCD4bit();
while(1)
{
Kirim_Perintah4bit(0x01);
hs=ADC();
printf_small("Hasil =%d",hs);
Tunda_ms(1000);
}
}

Anda mungkin juga menyukai