Praktikum Teknik Interface Dan Peripheral Modul #4: Antarmuka ADC
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
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.
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"
org jmp
03h EX0_int
; External0 vector
org sjmp
0Bh T0_int
; Interrupt vector - T0
;; 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
; 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
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
;; 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
extract_num: ; ekstrak ratusan mov mov div mov A, adc_data B, #100d AB data_led+2, A
; ekstrak puluhan
A, B B, #10d AB
; Ambil reminder
data_led+1, A data_led, B
R0, #data_led+data_len
; 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
start_conversion
sjmp
main
; Main loop