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/