ADC Analog-to-Digital Converter Kuliah #9 TCK210 Teknik Interface dan Peripheral
Aplikasi ADC enterprise-europe.iwt.be maximintegrated.com cabonauts.com Sistem terkomputerisasi
Pokok Bahasan Konversi analog ke digital Arsitektur ADC di AVR Atmega8/16/32 Register Pemrograman Aplikasi Setelah mempelajari bab ini, mahasiswa akan mampu [C2] memahami prinsip ADC dan DAC [C5] mendesain mikrokomputer dengan antarmuka ADC untuk peripheral sensor suhu dan kelembaban udara [C5] mendesain mikrokomputer dengan antarmuka DAC untuk peripheral speaker
Pengolahan Sinyal
ADC dan DAC ADC SAMPLED AND QUANTIZED WAVEFORM DAC RECONSTRUCTED WAVEFORM
ADC: Konverter A/D REFERENCE INPUT RESOLUTION N BITS DIGITAL OUTPUT ANALOG INPUT Analog Input DIGITAL OUTPUT CODE = x (2N - 1) Reference Input Menghasilkan keluaran digital sesuai dengan nilai sinyal analog masukan relatif terhadap tegangan referensi Proses: sinyal analog --> digital Analog: amplitudo kontinyu, waktu kontinyu Digital: amplitudo diskrit, waktu diskrit Jumlah nilai diskrit terbatas: 2N, N=jumlah bit
Proses Konversi Proses konversi Pencuplikan (sampling) Kuantisasi Mengubah sinyal waktu kontinyu menjadi sinyal waktu diskrit Parameter: frekuensi sampling Mengubah sinyal amplitudo kontinyu menjadi sinyal amplitudo diskrit Parameter: jumlah representasi bit Pengkodean Mengkodekan sinyal diskrit dalam representasi binernya (digital)
1. Pencuplikan Merepresentasikan sinyal waktu kontinyu ke dalam waktu diskritnya Menentukan bandwidth sinyal tercuplik (kriteria Nyquist) Frekuensi sinyal Fs harus dari 1/2*Fsampling agar tidak terjadi aliasing y(t) y(n) y(n+1) AMPLITUDE QUANTIZATION t n-1 n n+1 n+3 DISCRETE TIME SAMPLING ts
Bandwidth Nyquist & Aliasing fsignal fsampling - fsignal fsampling + fsignal fsampling signal passband (FSIGNAL < ½ FSAMPLING) 1 MHz fsignal 3 MHz fsampling - fsignal 4 MHz 5 MHz fsampling + fsignal fsampling (FSIGNAL < ½ FSAMPLING) signal passband 1 MHz 3 MHz 4 MHz 5 MHz
2. Kuantisasi Merepresentasikan sebuah sinyal analog yang mempunyai resolusi tak terbatas (kontinyu) ke digital yang mempunyai resolusi terbatas 100 1LSB 11 10 01 00 0 1/4 1/2 3/4 1 = FS Analog Any Analog Input in this Range Gives the Same Digital Output Code
Relasi Ideal Konverter A/D DIGITAL OUTPUT 111 110 101 100 1 LSB 011 010 001 1/8 2/8 3/8 4/8 5/8 6/8 ANALOG INPUT 7/8
Spesifikasi DC Transisi kode ADC ideal tepat 1 LSB Untuk N-bit ADC, terdapat 2N kode A D C T r a n s f e r F u n c t io n ( Id e a l) 111 1 LSB = FS/2N Untuk ADC 3-bit, FS=1Volt, 1 LSB=1V/8 Tiap langkah berpusat di tiap 1/8 FS 110 Digital Output 1 LSB 101 100 011 010 001 000 0 1 /8 1 /4 3 /8 1 /2 5 /8 A n a lo g I n p u t 3 /4 7 /8
3. Pengkodean Digital Mentranslasikan nilai analog terkuantisasi menjadi kode digital a/fs = d/m a=nilai analog, FS=Vmax M=jumlah langkah=2 d=nilai digital N Vmax = 7.5V 1111 7.0V 1110 6.5V 1101 6.0V 1100 5.5V 1011 5.0V 1010 4.5V 1001 4.0V 1000 3.5V 0111 3.0V 0110 2.5V 0101 2.0V 0100 1.5V 0011 1.0V 0010 0.5V 0001 0V 0000
Metode Konversi Parallel converter Successive-approximation
Resolusi ADC Merupakan perubahan tegangan analog terkecil yang menghasilkan perubahan 1 bit (=1 LSB) Jarak antara 2 level kuantisasi yang berdekatan Resolusi ADC: r = FS / 2N Sering dinyatakan langsung dalam bit
ADC dan Sistem Sensor K dan B: rangkaian pengkondisi tranduser K = pengali tegangan skalar B = tegangan bias untuk menempatkan tegangan di Vmin dan Vmax ADC V2,max = (V1,max * K) + B V2,min = (V1,min * K) + B
Contoh Rangkaian Pengkondisi Sensor photodiode menyediakan tegangan 0V untuk intensitas cahaya terbesar dan -2.50V untuk intensitas cahaya terkecil. Hitung nilai K dan B untuk tranduser ini sehingga dapat mempunyai skala penuh di ADC dengan FS=5V dengan referensi ke GND.
ADC di AVR ATMega16/32 8 Channel ADC Multiplexed 8 Single-ended 2 Differential with Programmable Gain at 1x, 10x, or 200x 8/10 bit resolution Variable Clock Speed Various Reference Voltage Polling/Interrupt EOC
Fitur ADC di AVR 10-bit Resolution 0.5 LSB Integral Non-linearity ±2 LSB Absolute Accuracy 13-260 µs Conversion Time Up to 15 ksps at Maximum Resolution 8 Multiplexed Single Ended Input Channels 7 Differential Input Channels 2 Differential Input Channels with Optional Gain of 10x and 200x(1) Optional Left adjustment for ADC Result Readout 0 - VCC ADC Input Voltage Range Selectable 2.56V ADC Reference Voltage Free Running or Single Conversion Mode ADC Start Conversion by Auto Triggering on Interrupt Sources Interrupt on ADC Conversion Complete Sleep Mode Noise Canceler
Arsitektur ADC di AVR
Distribusi Clock di AVR ADC has a dedicated clock domain (clkadc) reduce noise generated by digital circuitry gives more accurate ADC conversion results
Arsitektur ADC
ADC Auto Trigger Logic
ADC Prescaler
Diagram Pewaktuan ADC (Konversi Pertama, Mode Tunggal) Waktu konversi: 25 cycle
Konversi Mode Tunggal Waktu Konversi: 13 cycle (single-ended)
Konversi Auto-Triggered Waktu konversi: 13.5 cycle
Free-Running Conversion
Masukan Analog dan Power
Hasil Konversi Setelah konversi selesai (ADIF=1), hasil konversi disimpan dalam register hasil (ADCL, dan ADCH) Single-ended conversion Differential conversion
ADMUX: Register Pemilihan MUX REFS[1:0]: memilih tegangan referensi ADLAR: ADC Left Adjust Result (1: left; 0:right)
MUX[4:0]: Pemilihan Kanal Input dan Gain Lihat tabel 22-4 di datasheet AVR8/16/32 untuk daftar lengkap
ADCSRA: Register Kontrol dan Status
Register Kontrol dan Status
ADPS[2:0]: ADC Prescaler Select Bit
SFIOR Special FunctionIO Register ADTS[2:0]: ADC Auto Trigger Source
Pemrograman ADC Hanya 1 kanal ADC yang bisa dikonversikan dalam 1 waktu Memilih Prescaler ADC (pembagi frekuensi): set ADPS[2:0] di register ADCSRA Memilih masukan analog MUX[4:0] di register ADMUX Memilih sumber tegangan referensi REFS[1:0] Mengeset ADLAR Membaca hasil konversi dari ADCH dan ADCL
Inisialisasi ADC //************************************************************* //InitADC: initialize analog-to-digital converter //************************************************************* void InitADC( void) { ADMUX = 0; //Select channel 0 ADCSRA = 0xC3; //Enable ADC & start 1st dummy conversion //Set ADC module prescalar to 8 critical for //accurate ADC results while (!(ADCSRA & 0x10)); //Check if conversation is ready ADCSRA = 0x10; //Clear conv rdy flag - set the bit }
Pembacaan Data ADC //************************************************************* //ReadADC: read analog voltage //************************************************************* unsigned int ReadADC(unsigned char chan) { unsigned int result, hvoltage, lvoltage; //weighted binary voltage ADMUX = channel; //Select channel ADCSRA = 0x43; // Start conversion, Set ADC module // prescalar to 8 critical for accurate results while (!(ADCSRA & 0x10)); //Check if converstion is ready ADCSRA = 0x10; //Clear Conv rdy flag set the bit hvoltage = ADCL; lvoltage = (ADCH << 8); } result = hvoltage lvoltage; return result;
Digital Termometer Sensor Temperatur LM35 http://extremeelectroni cs.co.in/avrtutorials/interfacingtemperature-sensorlm35/
Antarmuka Accelerometer 3 Sumbu ATMega32 + Accelerometer mma7260 + LCD http://extremeelectronics.co.in/avr-tutorials/interfacing-mma7260-triple-axis-accelerometer-withatmega32-avr-tutorial/
Antarmuka Accelerometer 3 Sumbu
ADC Graph http://extremeelectronics.c o.in/tools/visualize-adcdata-on-pc-screen-usingusart-avr-project/