0% menganggap dokumen ini bermanfaat (0 suara)
82 tayangan

Praktikum Teknik Interface Dan Peripheral Modul #4: Antarmuka ADC

Praktikum ini bertujuan untuk mengkonversi sinyal tegangan analog menjadi nilai digital dan menampilkannya pada LED menggunakan ADC0804. Program menggunakan interrupt untuk mengambil sampel tegangan masukan secara berkala dan menampilkan hasil konversinya. Hardware yang digunakan antara lain board interface, potensiometer, dan multitester untuk mengukur tegangan masukan.

Diunggah oleh

rahmad0912
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
82 tayangan

Praktikum Teknik Interface Dan Peripheral Modul #4: Antarmuka ADC

Praktikum ini bertujuan untuk mengkonversi sinyal tegangan analog menjadi nilai digital dan menampilkannya pada LED menggunakan ADC0804. Program menggunakan interrupt untuk mengambil sampel tegangan masukan secara berkala dan menampilkan hasil konversinya. Hardware yang digunakan antara lain board interface, potensiometer, dan multitester untuk mengukur tegangan masukan.

Diunggah oleh

rahmad0912
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 12

Praktikum Teknik Interface dan Peripheral Modul #4: Antarmuka ADC

Deskripsi: Mengkonversikan nilai tegangan analog dari luar menjadi bilangan digital serta menampilkan nilai digitalnya ke LED. Sinyal masukan adalah berupa tegangan analog dengan besar tegangan bervariasi (mulai dari 0V s/d 5V, dengan stepping 5V/256 = ~20mV). Nilai sinyal tegangan masukan ini akan ditampilkan konversi nilai digital desimalnya di LED dari 0 sampai 255

Program ini bertujuan melakukan antarmuka sistem analog ke sistem digital menggunakan IC ADC0804 (8-bit uP compatible A/D Converter) dari National Semiconductor 1. Antarmuka mikrokontroler/prosesor sebagai perangkat digital ke chip ADC sebagai jembatan dari analog ke digital 2. Teknik kontrol dan transaksi data antara ukontroler dengan ADC secara paralel 3. Teknik interupsi eksternal dan pengesetan sampling rate untuk sinyal analog masukan 4. Melakukan profiling chip ADC yang digunakan, yaitu grafik konversi nilai digital dari besar tegangan analognya

Program menggunakan rutin-rutin seperti modul#2 (LED termultipleks)

Alat dan Bahan

1. Hardware: 1. 2. 3. 4. Board praktikum interface 2-buah kabel paralel (10-pin) untuk data_LED, select_LED 1 buah kabel paralel (8-pin) untuk data_ADC 4 buah kabel tunggal untuk kontrol_ADC: nRead (R), nEnable (E), nWrite (W) dan nInterrupt (I) board pembagi tegangan dengan potensiometer sebagai emulator dari sensor, dll. Keluaran tegangan minimal 0V, maksimal 5V 5. Alat ukur: multitester 2. Software: a. MCU8051IDE untuk editor kode sumber *.asm berbasis GUI beserta assemblernya b. NGProg33 programmer serial untuk upload kode *.hex ke board

Dasar Teori 1. Prinsip kerja ADC 2. Antarmuka mikrokontroler dengan ADC - koneksi ADC dengan mikrokontroler 3. Teknik antarmuka ADC - diagram timing - teknik pemrograman untuk protokol dan transaksi data di antarmuka ADC tersebut - interupsi eksternal dan pengaturan sampling rate untuk sinyal analog

Referensi:

1. 2. 3. 4.

http://www.kmitl.ac.th/~kswichit/lecture47/index.html 8051 Instruction Set. http://www.kmitl.ac.th/~kswichit/lecture47/8051instruction.pdf Tutorial 8051. http://www.zntu.edu.ua/base/lection/rpf/lib/zhzh03/8051_tutorial.pdf MCS@51 MICROCONTROLLER FAMILY USER MANUAL. Intel.

http://pmik.imio.pw.edu.pl/pliki/8051_Manual.pdf 5. ADC0804 Datasheet. National Semi. http://www.national.com/ds/DC/ADC0801.pdf

Cara Kerja: 1. Pastikan board praktikum terdeteksi dengan baik dari NGProg33 2. Hubungkan port P0 dengan jalur data_LED dan P2 dengan jalur select_LED menggunakan kabel paralel 10-kabel 3. Hubungkan port P1 dengan jalur data_ADC menggunakan paralel 8-kabel 4. Hubungkan port kontrol_ADC: 1. P3.2 dengan adc_int (I) 2. P3.6 dengan adc_wr (W) 3. P3.7 dengan adc_rd (R) 4. adc_en dengan ground, gnd (P1,- atau P3,- atau Gnd lainnya)

5. Program kode sumber, kompile dan upload ke board 6. Sambungkan keluaran board pembagi tegangan ke masukan ADC (adc_in). Hubungkan juga multitester untuk mengukur tegangan tersebut dengan referensi ground 7. Run program 8. Putar potensiometer sampai tegangan terukur mendekati 0V atau tampilan LED 000. 9. Putar berlahan-lahan dengan step seperti yang diminta dalam lembar kegiatan. 10. Amati besar tegangan terukur di multitester dan nilai keluaran LED 11. Buat tabel, gambar grafik dan analisis profile dari ADC (fungsi transfer)

Tugas praktikum 1. Buat subprogram untuk mengubah tampilan LED dari nilai digital menjadi kode tegangan (4 digit, digit 4 untuk tegangan satuan, sisanya untuk pecahan). Misalnya: 0V menjadi 0000, 40mV menjadi 0040. Nilai tegangan diperoleh dari

pembacaan multitester dan nilai digital konversinya 2. Edit program untuk sampling tegangan 1ms. Jelaskan solusi Anda

; ----------------------; Include file ; ----------------------include include "delay.asm" ; Fungsi-fungsi delay ; Fungsi dan makro untuk matriks LED

"led_matrik.asm"

; ----------------------; Vector ; ----------------------org jmp 0 start ; Reset vector

org jmp

03h EX0_int

; External0 vector

org sjmp

0Bh T0_int

; Interrupt vector - T0

; ----------------------------; Konstanta dan Definisi ; -----------------------------

;; Konfigurasi pin di P1 ; P1: port DAC ; P3.6: port strobe nWrite adc_port adc_int adc_wr adc_rd equ equ equ equ P1 P3.2 P3.6 P3.7 ; port DAC ; Pin interrupt ADC ; Kontrol Write/WR ADC ; Kontrol Read/RD ADC

data_led adc_data adc_count adc_rate

data data data equ

20h 30h 31h 200

; Sama dengan alamat data_ptr di led_matrik.asm ; Menyimpan data DAC ; Alamat untuk menyimpan counting DAC ; 200us * 200 = 40ms sampling

;; Macro assert & deassert ; Assert: activate ; Deassert: deactivate assert ;setb clr endm bit macro bit bit ; active-high ; active-low

deassert ;clr setb

macro bit bit

bit

; active-high ; active-low

endm

; -----------------------------------------; Subprogram ; -----------------------------------------; ;; Handle interrupt from TF0 T0_int: push push ACC B ; Protect register Acc dan B

; Tampilkan bilangan ke display LED call inc mov cjne mov call display_number adc_count ; Increment adc_count, used in EX0_int

A, adc_count A, #adc_rate, t0_noops adc_count, #0 start_conversion ; Start conversion dg rate adc_rate

t0_noops: pop pop reti B ACC

;; Handle interrupt from External0 EX0_int: push ACC ; Protect register Acc dan B

push assert

B adc_rd

; Get data dari ADC mov call adc_data, adc_port extract_num adc_rd ; Ekstrak bilangan desimal, tampilkan di LED

deassert pop pop reti B ACC

start_conversion: assert deassert ret adc_wr adc_wr

;; extract_num ; Ekstrak bilangan desimal menjadi unit, puluhan dan ratusan

extract_num: ; ekstrak ratusan mov mov div mov A, adc_data B, #100d AB data_led+2, A

; ekstrak puluhan

mov mov div mov mov ret

A, B B, #10d AB

; Ambil reminder

data_led+1, A data_led, B

start: ; Inisialisasi data ke 0h init_led mov data_ptr, #0h

R0, #data_led+data_len

; Inisialisasi nilai masukan dac mov mov adc_count, #0 P0, adc_count

; Interrupt setting mov setb setb setb IE, #0h ET0 EX0 EA ; disable all interrupts ; Aktifkan interrupt timer ; Aktifkan interrupt EX0

;; Inisialisasi Timer0 mov mov TMOD, #03h TL0, #185d ; Mode 3 timer: separated timer 8-bit ; 200us timer at 11.059MHz

; 12*TL0/11.059M setb call TR0 ; Turn on Timer0 ; Initiate ADC conversion

start_conversion

sjmp

main

main: jmp main

; Main loop

;------------; Program End ;------------end

Anda mungkin juga menyukai