bab05 - adc0804

Upload: cakmad69

Post on 01-Jun-2018

243 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/9/2019 BAB05 - ADC0804

    1/34

    Teknik Akuisisi Data 27

    3.Analog To Digital Converter ADC0804

    ADC0804 adalah ADC 8 bit SAR CMOS yang menggunakan potensiometrik

    ladder 256R. ADC ini didisain untuk menyesuaikan dengan operasi data output

    TRI-STATE yang dihubungkan langsung ke data bus. ADC ini dapat

    dihubungkan langsung seperti memori dan port IO dari mikroprosesor tanpa

    perlu rangkaian interfacing. Input tegangan analog differensial yang dididisain

    dapat menaikkan nilai CMMR dan untuk meng-offset input ZERO. Selain itu

    tegangan referensi input dapat diatur untuk menyesuaikan dengan teganganinput yang lebih kecil sehingga resolusi 8 bit nya dapat digunakan semua.

    Spesifikasi :

    Mudah di-interface-kan dengan semua mikroprosesor

    Input berupa tegangan analog differensial

    Input dan output mempunyai level TTL

    Tegangan referensi 2.5 volt

    Generator clock on chip

    Tegangan input 05 volt dengan catu daya tunggal

    Tidak memerlukanzero adjust

    Resolusi 8 bit

    Error total +/-1 LSB

    Waktu konversi 100 us

    Aplikasi umum :

  • 8/9/2019 BAB05 - ADC0804

    2/34

    Teknik Akuisisi Data 28

    Gambar 3.1 adalah aplikasi ADC0804 dengan mikroprosesor, dimana

    data dari ADC bisa terhubung langsung ke data bus mikroprosesor,

    sedangkan sinyal kontrolnya terhubung ke decoding addressnya.

    gambar 3.1. Aplikasi umum ADC0804

    3.1. Fungsi pin pada ADC 0804

    gambar 3.2 Pin ADC0804

    Fungsi kaki pada ADC0804 :

    Vin (-) : masukan analog negatif

    Vin(+) : masukan analog positif

    A-GND : analog ground

  • 8/9/2019 BAB05 - ADC0804

    3/34

    Teknik Akuisisi Data 29

    Vref/2 : Setengah tegangan referensi untuk skala penuh

    CLK-R dan CLK-IN

    : untuk mengatur besarnya clock external

    WR : sinyal kontrol untuk memulai awal konversi

    RD : sinyal kontrol untuk mengambil data

    CS : sinyal untuk mengaktifkan komponen

    INTR : status untuk mengetahui bahwa konversi sudah selesai

    LSB-MSB : data 8 bit

    VCC : Tegangan catu daya

    3.2 Cara Kerja ADC:

    Konverter AD 0804 adalah sebuah konverter analog ke digital 8-bit

    yang mudah diperantarakan (interfaced) dengan mikroprosesor 8080 atau

    8085 atau jenis lain. Komponen ini menggunakan aprosikmasi berturut-turut

    untuk mengkonversi masukan analog dalam jangka tertentu menjadi data

    digital 8-bit yang ekivalen. ADC 0804 mempunyai pembangkit pulsa internal

    dengan sedikit tambahan komponen eksternal, membutuhkan catu tegangan

    sebesar +5V, dan mempunyai waktu konversi optimum sekitar 100 mikro

    detik.

    Tegangan input maksimum yang dapat dikonversikan bergantung

    pada seberapa besar tegangan pada pin Vref/2 dengan tegangan absolutmaksimum sebesar 18V (dari data sheet). Pada skema rangkaian pin Vref/2

    diberi tegangan sebesar 2,55 V yang berarti data digital FF pada output

    bersesuaian dengan data analog input sebesar 5.10V. Resolusi dari ADC ini

    adalah 20 mV

  • 8/9/2019 BAB05 - ADC0804

    4/34

    Teknik Akuisisi Data 30

    Untuk satu kali proses konversi, CS (Chip Select) terlebih dahulu

    harus diaktifkan, pada skema, CS selalu aktif dengan menghubungkannya pada

    ground. Start of Convertion dilakukan dengan memberi logika HIGH - LOW -

    HIGH pada pin WR dan RD harus tetap HIGH. INTR secara langsung

    menuju ke logika HIGH jika sebelumnya berlevel LOW. Begitu data telah siap

    pada output latch, INTR menuju ke level rendah sebagai pertanda bahwa data

    telah siap.

    Pengambilan data dilakukan pertama kali dengan mengaktifkan CS

    yang kemudian diikuti dengan memberi level HIGH - LOW pada pin RD

    (read). Kita tunggu sinyal INTR sampai HIGH. Jika INTR sudah HIGH, maka

    data telah siap pada pin-pin output digital dan kita ambil data tersebut. Setelah

    data diambil, sinyal RD diberi level HIGH, data kembali ke high impedance.

  • 8/9/2019 BAB05 - ADC0804

    5/34

    Teknik Akuisisi Data 31

    gambar 3.3. Diagram blok ADC0804

    3.3. Timing Diagram

    Timing diagramberikut adalah cara kerja ADC0804 seperti di atas

  • 8/9/2019 BAB05 - ADC0804

    6/34

    Teknik Akuisisi Data 32

    gambar 3.4. Timing diagramADC0804

    Adapun dalam pemrograman ADC0804 harus diperhatikan timing diagram

    nya . Urut-urutannya adalah sebagai berikut :

    WR = 1, RD = 1

    WR = 0

    WR = 1

    Pada saat perintah di atas diberikan, maka ADC akan mulai

    melakukan konversi. Konversi akan selesai jika ADC mengeluarkan

  • 8/9/2019 BAB05 - ADC0804

    7/34

  • 8/9/2019 BAB05 - ADC0804

    8/34

    Teknik Akuisisi Data 34

    3.4.1. Gambar Skema ADC dengan Kontrol dari PPI

    gambar 3.6. Skema ADC0804 dengan PPI

    3.4.2. Rangkaian pendukung ADC

    Berikut perhitungan komponen pendukung dari ADC0804:

    Resistor R2 dan kapasitor C4 merupakan komponen pendukung dari

    internal clock ADC0804. Rangkaian RC ini memberikan frekuensi clock

    sebesar:

    fclk= 1/(RC) = 1/(10k . 150pF) = 667 khz

    Resistor R4, potensio P1dan zener Z24V7 membentuk rangkaian pembagi

    tegangan untuk memberikan tegangan Vref yang dibutuhkan oleh

    ADC0804. R4dipilih 220 dan P1dipilih 10K . Dengan Vcc 5V harga P1

    bisa diatur untuk menghasilkan Vref sebesar 2,55 V.

    3.4.3. Pengujian rangkaian menggunakan PPI 8255

  • 8/9/2019 BAB05 - ADC0804

    9/34

    Teknik Akuisisi Data 35

    Untuk menguji laik tidaknya modul ADC digunakan maka dilakukan pengujian

    pada modul PPI 8255. ADC diberi input dari luar berupa variabel tegangan 0

    s.d 5 volt, output data hasil konversi dihubungkan dengan Port B PPI 8255

    (PB[0...7]) sedangkan untuk selektor kanal digunakan port A [A0-A2]. Sinyal

    kontrol ADC dihubungkan dengan Port C. ADC diaktifkan terus menerus (siap

    untuk konversi, CS = LOW).

    Sinyal RD dihubungkan dengan PC0 dan WR dengan PC1. INTR

    dihubungkan dengan PC7. Sebelum mengaktifkan ADC, PPI harus

    diberi control word sbb:

    Port A : output

    Port B : input

    Port C lower : output

    Port C upper : input

    diperoleh control word : 8AH, sehingga software-nya

    port [$303 ] := $8A;

    kemudian pilih kanal yang aktif dengan mengirim PA0 - PA2,

    sedangkan PA3 - PA7 = 0.

    channel : = 0; { 0 s.d 7 }

    port[$300] : = channel;

    dan semua sinyal kontrol di-HIGHkan (lihat timing diagram di bab

    3).

    Start Conversion dimulai dengan WR = 1 - 0 - 1 dan RD = 1

    port[$302] : = 3;

    port[$302] : = 1;

    port[$302] : = 3;

    Selanjutnya sinyal RD = 1 - 0 dan WR = 1

    port[$302] : = 3;

    port[$302] : = 2;

  • 8/9/2019 BAB05 - ADC0804

    10/34

    Teknik Akuisisi Data 36

    Tunggu sinyal INTR sampai LOW, kemudian data diambil dan RD

    = 1repeat

    cek := port[$302];

    cek := cek and $10;

    until cek = 0; { konversi sudah selesai }

    data : port[$301];

    port[$302] : = 3;

    Kalibrasi dengan 1 LSB = 20 mV:

    volt : = data * (20 / 1000);

    3.4.4 Program untuk ADC 0804

    Program aplikasi dengan TURBO PASCAL:

    { program ADC0804 dengan TURBO PASCAL }{ oleh : Rachmad Setiawan, ST,MT }{ staff pengajar di Elektronika-Elektro -ITS Surabaya }

    {PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 }{ C B A WR RD }

    uses crt,graph;var

    volt : array[1..620] of real;gd,gm,i : integer;data : byte;

    procedure adc(chan : byte);begin

    chan := chan shl 2;port[$301]:=3 or chan; { WR = 1, RD = 1 }delay(1);port[$301]:=1 or chan; { WR = 0, RD = 1 }delay(1);port[$301]:=3 or chan; { WR = 1, RD = 1 }{ KONVERSI DIMULAI }delay(5);

  • 8/9/2019 BAB05 - ADC0804

    11/34

    Teknik Akuisisi Data 37

    port[$301]:=2 or chan; { WR = 1, RD = 0 }data:= port[$302]; { AMBIL DATA }volt[i]:= (data * 20)/1000;port[$301]:=3 or chan; { WR = 1, RD = 1 }

    end;

    procedure grafik;begin

    gd:=detect;initgraph(gd,gm,' ');

    end;

    procedure bingkai;begin

    setcolor(14);

    outtextxy(200,40,'ANALOG TO DIGITAL CONVERTER');outtextxy(200,50,' ADC0804 8 CHANNEL INPUT ');

    outtextxy(10,130,'5'); outtextxy(10,180,'4');outtextxy(10,230,'3');outtextxy(10,280,'2');outtextxy(10,330,'1');outtextxy(10,380,'0');setcolor(LIGHTGRAY);setlinestyle(0,0,3);rectangle(20,120,620,400);

    end;

    beginclrscr;

    grafik;port[$303]:=$89;bingkai;i:=0;repeat

    adc(0);i:=i+1;putpixel(i+20,380-round(volt[i]*50),14);if i= 600 thenbegin

    delay(10);i:=0; clearviewport;

    bingkai;end;

    until keypressed;closegraph;

    end.

    3.5. ADC0804 yang diinterfacedkan dengan LPT1

  • 8/9/2019 BAB05 - ADC0804

    12/34

    Teknik Akuisisi Data 38

    gambar 3.7. buffer LPT 1 dengan ADC0804

    Keterangan :

    Dari LPT mode SPP :

    Port 378H: D7 D6 D5 D4 D3 D2 D1 D0 semuanya berfungsi

    sebagai output

    Port 379H : -D7 D6 D5 D4 D3 berfungsi sebagai input 5 bit

    dengan D7 bersifat inverter (membalik) Port 37AH : -D3 D2 -D1 -D0 berfungsi sebagai output dengan

    D3, D1, D0 bersifat inverter.

    Kemudian dari informasi ADC dan DAC diperoleh informasi sebagai berikut:

    DAC membutuhkan 8 bit output dari rangkaian interfacing

  • 8/9/2019 BAB05 - ADC0804

    13/34

    Teknik Akuisisi Data 39

    ADC membutuhkan 8 bit input, 2 output sinyal kontrol RD dan WR

    dan 3 sinyal untuk selector multiplekser.

    Sehingga LPT kekurangan sinyal untuk melakukan proses interfacing. Untuk

    memenuhi kebutuhan tersebut, maka dilakukan beberapa cara yaitu buffer

    sinyal dengan menggunakan IC 74LS573. IC 74LS573 bekerja mengikuti

    aturan sebagai berikut:

    -OE merupakan pin untuk membuka data output. Jika OE = 0,

    maka data dikeluarkan dan di latch dan jika OE =1 maka data

    ditutup dan output IC bersifat high impedance.

    C merupakan pin untuk membuka data agar masuk ke dalam IC. Jika

    C = 0 maka data tidak dapat masuk dan jika C =1 maka data dapat

    masuk. 1D8D adalah pin data masuk dan 1Q 8Q adalah pin data

    keluar.

    Selain IC74LS573 yang berfungsi untuk data output, IC74LS157 adalah IC

    multiplekser yang digunakan untuk data masuk. Kerja dari IC74LS157 adalah

    sebagai berikut :

    Tabel 3.1. Tabel kebenaran multiplekser

    G -A/B 4Y 3Y 2Y 1Y

    1 X x x x x

    0 0 4A 3A 2A 1A0 1 4B 3B 2B 1B

    IC bekerja jika G = 0 atau di grounded. JikaA/B = 0, maka Y akan

    sama dengan A dengan indeks yang bersesuaian dan jika A/B = 1, maka Y

    akan sama dengan B dengan indeks yang bersesuaian

  • 8/9/2019 BAB05 - ADC0804

    14/34

    Teknik Akuisisi Data 40

    Dari informasi 2 IC tambahan tadi, maka dibuatlah rangkaian seperti

    gambar 11.2. Port 378H yang terdiri dari 8 bit output dijadikan 16 bit output

    dengan bantuan data dari port 37AH yaitu 37A.0 dan 37A.2. Sedangkan 37A.1

    digunakan untuk selektor dari IC multiplekser 74LS157. Adapun cara kerjanya

    adalah sebagai berikut :

    Kondisi pertama kali dari port 37AH adalah sebagai berikut :

    -37A.3

    8

    37A.2

    4

    -37A.1

    2

    -37A.0

    1

    Data

    Biner

    1 0 1 1 11

    portout($37A,11);

    Jika akan mengeluarkan data ke DAC, maka siapkan data di

    port 378H kemudian ikuti langkah berikut :

    portout($378,dataDAC);

    -37A.3

    8

    37A.2

    4

    -37A.1

    2

    -37A.0

    1

    Data

    Biner

    1 0 1 0 10

    portout($37A,10);

    Kunci pintu masuk dari IC74LS573 dengan memberi output 0

    pada pin C (ingat37A.H bersifat inverter)

    portout($37A,11);

    Jika ingin menjalankan ADC0804, maka perhatikan timing diagramdari ADC

    seperti dibahas pada bab 3. Urutan programnya adalah

    WR = 1, RD = 1, delay sebentar

    WR = 0, RD = 1, delay sebentar

    WR = 1, RD = 1, delay sebentar

    Tunggu INT = 0

  • 8/9/2019 BAB05 - ADC0804

    15/34

    Teknik Akuisisi Data 41

    Jika INT sudah = 0, ambil data dengan memberi perintah

    RD = 0. kemudian ambil datanya.

    Setelah data diambil, kembalikan seperti semula

    WR = 1, RD = 1

    Tetapi ada 1 syarat tambahan yaitu pemilihan kanal harus didahulukan dan

    tidak boleh berubah selama proses di atas. Keterangan lebih lengkap ada pada

    bagian penjelasan software

    gambar 3.8. ADC0804 dengan multiplekser dan clipper

    Pada gambar 3.8 di atas, frekuensi clockyang digunakan adalah sebuah R2 10

    K kapasitor 150 pF, mempunyai frekuensi

    RCfosc

    2

    1

    KHzfosc 667

  • 8/9/2019 BAB05 - ADC0804

    16/34

    Teknik Akuisisi Data 42

    Tegangan referensi menggunakan dioda zener 6V2 serta multiturn yang diatur

    untuk mendapatkan tegangan 5.1 V.

    gambar 3.9. DAC0808

    Pada gambar 10.6 di atas, tegangan referensi dibuat dari zener 6V2 dan

    multiturn 10 K yang diatur untuk mendapatkan tegangan 5.1 V. Tegangan

    diukur pada pin 1 dari U6:A LF353, bukan pada pin 14 dari DAC, karena

    referensi yang diambil DAC adalah arus 2 mA. R4 dan R5 besarnya harus sama

    yaitu :

    R4 = 5.1 / 20 mA = 2K5

    3.5.2. Penjelasan program utama

    Program yang dibuat oleh penulis mempunyai tampilan seperti di

    bawah ini. Anda bisa menjalankan program AD0809.exe pada CD yang

    terlampir.

  • 8/9/2019 BAB05 - ADC0804

    17/34

  • 8/9/2019 BAB05 - ADC0804

    18/34

    Teknik Akuisisi Data 44

    prosedur ini mempunyai maksud , jika kita akan mengirim data 13 pada alamat

    37AH, maka penulisannya adalah

    portout($37A,13);

    dan apabila ingin mengambil data dari suatu alamat 379H, maka penulisannya

    adalah sebagai berikut :

    dataH := portin($379);

    3.5.3. Penjelasan Program DAC

    Prosedur DAC

    Perhatikan program untuk DAC di bawah ini

    procedure TForm1.cmdDACClick(Sender: TObject);begin

    Vo := StrToFloat(Edit1.Text);dataDAC := round(Vo*50);portout($37A,13);portout($37A,10);portout($378,dataDAC);portout($37A,13);

    end;

    Vo := StrToFloat(Edit1.Text);

    Teks angka di dalam Edit1 diubah menjadi data integer dan disimpan ke

    variable Vo

    dataDAC := round(Vo*50);

    Pada skala penuh, 255 setara dengan 5.1 volt (50:1), sehingga jika kita

    menginginkan tegangan keluaran DAC, maka tegangan harus diubah menjadi

    data biner sehingga Vo x 50 = data biner. Penggunaan roundharus dilakukan

    karena data yang dikeluarkan harus dalam word. Variabel yang digunakan

    adalah dataDAC.

    Sinyal kontrol untuk mengaktifkan buffer DAC

    -37A.3 37A.2 -37A.1 -37A.0 Biner KETERANGAN

    x Kontrol Multiplekser Buffer DAC

  • 8/9/2019 BAB05 - ADC0804

    19/34

    Teknik Akuisisi Data 45

    1 0 1 1 11Data tidak bisamasuk buffer DAC

    1 0 1 0 10Data disiapkan danmasuk buffer DAC

    1 0 1 1 11Data dikunci di dalambuffer DAC

    37A.2 harus dalam kondisi 0, agar data yang akan dikeluarkan ke DAC tidak

    ikut ke ADC.

    portout($37A,11);

    Sebelum data DAC dikeluarkan, terlebih dulu pintu masuk data dari DAC

    dimatikan dulu, kemudian data DAC disiapkan

    portout($378,dataDAC);

    portout($37A,10);

    Setelah data DAC dikeluarkan, barulah pintu masuk U2 diaktifkan, sesaat kemudian

    dimatikan lagi

    portout($37A,11);

    Prosedur ADCprocedure TForm1.BacaADC(chan: byte);begin

    portout($37A,15);portout($378,$00 or chan); { ALE = START = ENABLE = 0 }portout($378,$08 or chan); { ALE = 1, START = ENABLE = 0 }portout($378,$28 or chan); { ALE = START = 1, ENABLE = 0 }portout($378,$00 or chan); { ALE = START = ENABLE = 0 }portout($37A,11);

    repeatintr := portin($379);

    intr := intr and 8;until intr = 8;

    portout($37A,15);portout($378,$10 or chan); { ALE = START = 0,ENABLE = 1 }delay(1);portout($37A,11);{ 4 bit bawah }dataL := portin($379);

  • 8/9/2019 BAB05 - ADC0804

    20/34

    Teknik Akuisisi Data 46

    portout($37A,9);{ 4 bit atas }dataH := portin($379);

    dataL := dataL and $0f0;dataL := dataL shr 4;d0 := dataL and 1;d1 := dataL and 2;d2 := dataL and 4;d3 := dataL and 8;d3 := not d3;d3 := d3 and 8;dataL := d3 + d2 + d1 + d0;

    dataH := dataH and $0f0;d4 := dataH and 16;

    d5 := dataH and 32;d6 := dataH and 64;d7 := dataH and 128;d7 := not d7;d7 := d7 and 128;dataH := d7 + d6 + d5 + d4;

    data := dataL + dataH;volt := (data *20)/1000;delay(1);

    end;

    Dari gambar 10.4 dan 10.5 di atas, diperoleh informasi :

    Sinyal kontrol untuk mengaktifkan buffer ADC

    -37A.3 37A.2 -37A.1 -37A.0 Biner KETERANGAN

    x Kontrol Multiplekser Buffer DAC

    1 0 1 1 11Data tidak bisa masukbuffer ADC

    1 1 1 1 15Data disiapkan danmasuk buffer ADC

    1 0 1 1 11 Data dikunci di dalambuffer ADC

    37A.0 harus dalam kondisi 1 (bersifat inverter), agar data yang akan

    dikeluarkan ke buffer ADC tidak ikut ke DAC.

    Sinyal kontrol untuk mengambil 4 bit data ADC bawah dan 4 data ADC atas

  • 8/9/2019 BAB05 - ADC0804

    21/34

    Teknik Akuisisi Data 47

    -37A.3 37A.2 -37A.1 -37A.0 Biner KETERANGAN

    x Kontrol Multiplekser Buffer DAC

    1 0 1 1 11

    Untuk mengambil

    data ADC 4 bitbawah

    1 0 0 1 9Untuk mengambildata ADC 4 bitatas

    37A.0 harus dalam kondisi 1 (bersifat inverter), agar data yang akan

    dikeluarkan ke buffer ADC tidak ikut ke DAC dan 37A.2 harus dalam kondisi

    0 agar data tidak masuk ke buffer ADC

    Sinyal kontrol untuk menjalankan ADC

    378.7 378.6 378.5 378.4 378.3 378.2 378.1 378.0 Data KET

    X X START EN ALE C B A

    STARTCONVERSION

    0 0 0 0 0 0 0 0 00H

    0 0 0 0 1 0 0 0 08H

    0 0 1 0 1 0 0 0 28H

    0 0 1 0 0 0 0 0 20H

    0 0 0 0 0 0 0 0 00

    TUNGGU EOC = 1

    0 0 0 1 0 0 0 0 10H AMBIL DATA

    0 0 0 0 0 0 0 0 00H

    Data di atas diberikan dengan syarat buffer ADC harus aktif, sedangkan buffer

    DAC harus OFF, sehingga sinyal kontrolnya adalah :

    portout($37A,15);

    Sehingga program ditulis :

    portout($37A,15); {Buffer ADC dibuka}portout($378,$00 or chan); { ALE = START = ENABLE = 0 }portout($378,$08 or chan); { ALE = 1, START = ENABLE = 0 }portout($378,$28 or chan); { ALE = START = 1, ENABLE = 0 }portout($378,$00 or chan); { ALE = START = ENABLE = 0 }portout($37A,11); {Buffer ADC ditutup}

    program di atas digunakan untuk memulai konversi. 'or chan digunakan untuk

    memilih kanal input yang akan dikonversi.

  • 8/9/2019 BAB05 - ADC0804

    22/34

    Teknik Akuisisi Data 48

    Untuk mengetahui apakah konversi sudah selesai atau belum, maka output

    INTR dari ADC harus dilihat. Jika INTR = 0, berarti konversi belum selesai

    dan jika INTR = 1, maka konversi sudah selesai. Pin LPT yang digunakan

    adalah 379H bit 3 sehingga program menjadi

    repeatintr := portin($379);intr := intr and 8;

    until intr = 8;

    Jika konversi sudah selesai, maka data ADC harus diambil secara bergantian, 4

    bit bawah (D3 D0) kemudian 4 bit atas (D7 D4). Untuk mengambil 4 bit

    bawah, maka sinyal selektor dari multiplekser 74LS157 A/B = 0, kemudian

    data diambil.:

    portout($37A,11);dataL := portin($379);

    dan untuk mengambil 4 bit atas, maka sinyal selektor dari multiplekser

    74LS157A/B = 1, kemudian data diambil.:

    portout($37A,9);dataH := portin($379);

    Masalah terjadi, karena bit 7 dari 379H bersifat inverter. Maka khusus bit 7

    harus di NOT kan. Pada 4 bit bawah, data harus di AND kan dengan F0H

    kemudian digeser 4x ke kanan (D3D0, masuk ke -379.7379.4)

    dataL := dataL and $0f0;dataL := dataL shr 4;

    bit d0 di AND kan dengan 1

    d0 := dataL and 1;

    bit d1 di AND kan dengan 2

  • 8/9/2019 BAB05 - ADC0804

    23/34

    Teknik Akuisisi Data 49

    d1 := dataL and 2;

    bit d2 di AND kan dengan 4

    d2 := dataL and 4;

    bit d3 di AND kan dengan 8, kemudian di NOT dan di AND kan dengan 8 lagi

    d3 := dataL and 8;d3 := not d3;d3 := d3 and 8;

    dataL kemudian diperoleh dengan menjumlah d0 sampai d3, dimana d3 sudah

    mengalami proses inverter.

    dataL := d3 + d2 + d1 + d0;

    Pada 4 bit atas, data harus di AND kan dengan F0H tetapi tanpa menggeser

    data, karena D7D4 masuk ke -379.7379.4

    dataH := dataH and $0f0;

    bit d4 di AND kan dengan 16d4 := dataH and 16;

    bit d5 di AND kan dengan 32

    d5 := dataH and 32;

    bit d6 di AND kan dengan 64

    d6 := dataH and 64;

    bit d7 di AND kan dengan 128, kemudian di NOT dan di AND kan dengan

    128 lagi

    d7 := dataH and 128;d7 := not d7;d7 := d7 and 128;

  • 8/9/2019 BAB05 - ADC0804

    24/34

    Teknik Akuisisi Data 50

    dataH kemudian diperoleh dengan menjumlah d4 sampai d7, dimana d7 sudah

    mengalami proses inverter.

    dataH := d7 + d6 + d5 + d4;

    data kemudian diperoleh dengan menjumlah dataL dengan dataH, dan

    dikalibrasi menjadi tegangan dengan mengalikan data dengan 1 LSB nya

    data := dataL + dataH;volt := (data *20)/1000;

    Prosedur kanal ADC

    Prosedur kanal 0

    procedure TForm1.ReadADC0;begin

    with PaintBox1.Canvas dobegin

    BacaADC(0);volt1[i]:=volt;Pen.Width:=1;Pen.Color:=clYellow;LineTo(i,75-round(volt1[i]*15));

    end;end;

    BacaADC(0) maksudnya mengambil data dari ADC kanal 0. Volt1[I] := volt,

    maksudnya volt1[i] variabel untuk kanal 0 sama nilainya dengan volt hasil

    kalibrasi pada prosedur BacaADC

    procedure TForm1.ReadADC1;begin

    with PaintBox2.Canvas dobegin

    BacaADC(1);volt2[i]:=volt;Pen.Width:=1;Pen.Color:=clYellow;LineTo(i,75-round(volt2[i]*15));

    end;end;

  • 8/9/2019 BAB05 - ADC0804

    25/34

  • 8/9/2019 BAB05 - ADC0804

    26/34

    Teknik Akuisisi Data 52

    end;end;

    BacaADC(4) maksudnya mengambil data dari ADC kanal 4. Volt5[I] := volt,

    maksudnya volt5[i] variabel untuk kanal 4 sama nilainya dengan volt hasil

    kalibrasi pada prosedur BacaADC

    procedure TForm1.ReadADC5;beginwith PaintBox6.Canvas dobegin

    BacaADC(5);volt6[i]:=volt;Pen.Width:=1;

    Pen.Color:=clYellow;LineTo(i,75-round(volt6[i]*15));

    end;end;

    BacaADC(5) maksudnya mengambil data dari ADC kanal 5. Volt6[I] := volt,

    maksudnya volt6[i] variabel untuk kanal 15sama nilainya dengan volt hasil

    kalibrasi pada prosedur BacaADC

    procedure TForm1.ReadADC6;beginwith PaintBox7.Canvas dobegin

    BacaADC(6);volt7[i]:=volt;Pen.Width:=1;Pen.Color:=clYellow;LineTo(i,75-round(volt7[i]*15));

    end;end;

    BacaADC(6) maksudnya mengambil data dari ADC kanal 6. Volt7[I] := volt,

    maksudnya volt2[i] variabel untuk kanal 6 sama nilainya dengan volt hasil

    kalibrasi pada prosedur BacaADC

    procedure TForm1.ReadADC7;begin

    with PaintBox8.Canvas dobegin

  • 8/9/2019 BAB05 - ADC0804

    27/34

    Teknik Akuisisi Data 53

    BacaADC(7);volt8[i]:=volt;Pen.Width:=1;Pen.Color:=clYellow;LineTo(i,75-round(volt8[i]*15));

    end;end;

    BacaADC(7) maksudnya mengambil data dari ADC kanal 7. Volt8[I] := volt,

    maksudnya volt8[i] variabel untuk kanal 7 sama nilainya dengan volt hasil

    kalibrasi pada prosedur BacaADC

    Prosedur untuk menampilkan hasil pembacaan ADC pada setiap kanal

    pada Edit.procedure TForm1.cmdADCClick(Sender: TObject);beginif cmdADC.Caption = 'Stop' thencmdADC.Caption := 'Proses'

    elseif cmdADC.Caption = 'Proses' thencmdADC.Caption := 'Stop';

    i:=0;kotak1;kotak2;kotak3;kotak4;kotak5;kotak6;kotak7;kotak8;repeat

    ReadADC0;Edit2.Text:=FloatTostr(volt);ReadADC1;Edit3.Text:=FloatTostr(volt);ReadADC2;Edit4.Text:=FloatTostr(volt);ReadADC3;Edit5.Text:=FloatTostr(volt);ReadADC4;Edit6.Text:=FloatTostr(volt);ReadADC5;Edit7.Text:=FloatTostr(volt);

    ReadADC6;Edit8.Text:=FloatTostr(volt);ReadADC7;Edit9.Text:=FloatTostr(volt);i:=i+1;if i= 280 thenbegini:=0;kotak1;kotak2;kotak3;kotak4;kotak5;kotak6;kotak7;kotak8;

    end;until cmdADC.Caption = 'Stop';

  • 8/9/2019 BAB05 - ADC0804

    28/34

    Teknik Akuisisi Data 54

    end;end.

    3.6. ADC0804 yang diinterfacedkan dengan COM1

    gambar 3.11. ADC0804 dengan mikrokontroler

    gambar 3.12. Mikrokontroler 89S51

  • 8/9/2019 BAB05 - ADC0804

    29/34

    Teknik Akuisisi Data 55

    gambar 3.13. Buffer serial RS232

    Listing program bahasa assembly

    ORG 00HSJMP START

    ;-------------------------------------; LCD CONSTANTA;-------------------------------------DISPCLR EQU 00000001BFUNCSET EQU 00111000BENTRMOD EQU 00000110BDISPON EQU 00001100BDATA_ADC EQU 60HSAT EQU 61HPUL EQU 62HRAT EQU 63H

    START:ACALL INIT_LCDACALL INIT_SERIAL

    MOV DPTR,#BARIS1ACALL PRINTSTRING1

    MOV DPTR,#BARIS2ACALL PRINTSTRING2ACALL TUNDAMOV DPTR,#HASIL

    ACALL PRINTSTRING1

    MAIN:ACALL READ_ADCACALL OLAH_DATA

  • 8/9/2019 BAB05 - ADC0804

    30/34

    Teknik Akuisisi Data 56

    ACALL TXACALL TUNDASJMP MAIN

    CH0:CLR P3.3CLR P3.4CLR P3.5RET

    READ_ADC:ACALL CH0SETB P1.2SETB P1.3

    ACALL DELAYCLR P1.2

    ACALL DELAYSETB P1.2

    ACALL DELAYJB P3.2,$CLR P1.3MOV A,P2MOV DATA_ADC,ASETB P1.3RET

    OLAH_DATA:MOV A,DATA_ADC

    MOV B,#10DIV ABMOV SAT,BMOV B,#10DIV ABMOV PUL,BMOV RAT,A

    MOV A,#85HACALL CONTROLOUTMOV A,RAT

    ADD A,#30H

    ACALL DATAOUT

    MOV A,#86HACALL CONTROLOUTMOV A,PUL

    ADD A,#30HACALL DATAOUT

    MOV A,#87HACALL CONTROLOUT

  • 8/9/2019 BAB05 - ADC0804

    31/34

  • 8/9/2019 BAB05 - ADC0804

    32/34

    Teknik Akuisisi Data 58

    CLR P1.0 ; RS = 0ACALL DELAYCLR P1.1

    ACALL DELAY

    SETB P1.1ACALL DELAY

    MOV P0,ACLR P1.1

    ACALL DELAYRET

    ;--------------------------------------------------------; PROSEDUR PENEMPATAN DATA;--------------------------------------------------------; RS : 0 : P1.0

    ; E : 0 - 1 - 0 : P1.1

    DATAOUT:SETB P1.0 ; RS = 1

    ACALL DELAYCLR P1.1 ; E = 0

    ACALL DELAYSETB P1.1 ; E = 1

    ACALL DELAY

    MOV P0,ACLR P1.1 ; E = 0

    ACALL DELAYRET

    ;--------------------------------------------; PROSEDUR DELAY LCD;--------------------------------------------DELAY.INIT.LCD:

    MOV R6,#20HDLY.LCD.LP:

    MOV R7,#10HDJNZ R7,$DJNZ R6,DLY.LCD.LP

    RET

    INIT_LCD:MOV A,#FUNCSET

    ACALL CONTROLOUTACALL DELAY.INIT.LCD

    MOV A,#DISPONACALL CONTROLOUTACALL DELAY.INIT.LCD

  • 8/9/2019 BAB05 - ADC0804

    33/34

    Teknik Akuisisi Data 59

    MOV A,#DISPCLRACALL CONTROLOUTACALL DELAY.INIT.LCD

    MOV A,#ENTRMODACALL CONTROLOUTACALL DELAY.INIT.LCDRET

    ;----------------------------------------------------------; PROCEDURE LCD BARIS KOLOM LCD;----------------------------------------------------------POSISI2.1:

    MOV A,#1POSISI2:

    ADD A,#11000000B ; BARIS KEDUADEC A

    ACALL CONTROLOUTACALL DELAY.INIT.LCDRET

    POSISI1.1:MOV A,#1

    POSISI1:ADD A,#10000000B ; BARIS PERTAMADEC A

    ACALL CONTROLOUT

    ACALL DELAY.INIT.LCDRET

    PRINTSTRING2:ACALL POSISI2.1CLR AMOVC A,@A+DPTRJNZ PRINTSTRINGLOOP

    PRINTSTRINGLOOP:ACALL DATAOUTACALL DELAY.INIT.LCDINC DPTR

    CLR AMOVC A,@A+DPTRJNZ PRINTSTRINGLOOPRET

    PRINTSTRING1:ACALL POSISI1.1CLR AMOVC A,@A+DPTRJNZ PRINTSTRINGLOOP2

  • 8/9/2019 BAB05 - ADC0804

    34/34