Anda di halaman 1dari 16

MODUL 8

MENGGUNAKAN FITUR ADC DALAM


MIKROKONTROLER AVR

Pertemuan ke : 9-10
Topik : 1. Perbedaan antara sinyal analog dan digital.
2. Ilustrasi proses ADC.
3. Menilai kualitas ADC menggunakan ukuran sampling rate, level
kuantisasi, jumlah bit yang digunakan untuk enkoding, dan
dynamic range.
4. Register yang digunakan untuk konfigurasi ADC.
5. Langkah-langkah menggunakan ADC dalam mikrokontroler
AVR.
6. Program mikrokontroler untuk fungsi ADC.
Alokasi Waktu : 4 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan perbedaan antara sinyal analog
dan digital.
2. Mahasiswa mampu mengilustrasikan proses ADC.
3. Mahasiswa mampu menilai kualitas ADC menggunakan ukuran
sampling rate, level kuantisasi, jumlah bit yang digunakan untuk
enkoding, dan dynamic range
4. Mahasiswa mampu menjelaskan register yang digunakan untuk
konfigurasi ADC.
5. Mahasiswa mampu mendeskripsikan langkah-langkah
menggunakan ADC dalam mikrokontroler AVR.
6. Mahasiswa mampu memrogram mikrokontroler untuk fungsi
ADC.
Pendahuluan
Dalam bab ini akan dijelaskan tentang perbedaan antara sinyal analog dan digital,
proses ADC, menilai kualitas ADC menggunakan ukuran sampling rate, level kuantisasi,
jumlah bit yang digunakan untuk enkoding, dan dynamic range, register yang digunakan
untuk konfigurasi ADC, langkah-langkah menggunakan ADC dalam mikrokontroler AVR,
memrogram mikrokontroler untuk fungsi ADC.

Mikrokontroler digunakan untuk memroses informasi dari dunia luar, membuat


keputusan berdasarkan informasi yang dikumpulkan, kemudian mengeluarkan sinyal
kontrol untuk melaksanakan keputusan tersebut. Karena infromasi dari dunia luar pada
umumnya berbentuk analog atau kontinyu, sedangkan mikrokontroler adalah pemroses
berbasis digital atau diskrit, diperlukan metode untuk mengonversi sebuah sinyal analog
menjadi sinyal digital. Sebuah sistem ADC (Analog to Digital Converter) melakukan hal
ini, sedangkan DAC (Digital to Analog Converter) melakukan hal yang sebaliknya.

A. Teori Konversi Analog ke Digital


1. Sinyal Analog Versus Sinyal Digital
Sebuah sinyal merupakan kumpulan nilai yang merepresentasikan kondisi variabel
fisik. Kumpulan nilai tersebut dapat berupa satu nilai saja, sedikit, atau banyak tergantung
data yang dibutuhkan. Dalam bidang teknik, biasanya kita menyusun nilai-nilai tersebut
secara urut, misalnya sebagai fungsi waktu atau ruang untuk menampilkan informasi.
Variabel waktu atau ruang disebut variabel bebas, karena tidak terpengaruh oleh variabel
fisik. Sebagai contoh, suhu yang berubah setiap waktu. Suhu yang terukur tidak
bergantung pada waktu, ataupun sebaliknya. Sinyal digital juga penting karena semua
sinyal yang digunakan dalam sistem digital, komputer, dan mikrokontroler adalah dalam
bentuk digital. Yang paling penting adalah bagaimana merepresentasikan sinyal analog
menggunakan sinyal digital. Sebagai contoh, suara manusia harus dikonversi menjadi
sinyal digital yang sesuai sebelum diteruskan ke rangkaian switching digital dalam sistem
komunikasi telepon. Dengan cara yang sama, komando suara ke robot harus dikonversi ke
bentuk digital supaya robot dapat memahami komando tersebut. Hal ini menunjukkan
bahwa ADC sangat penting dalam sistem digital yang berinteraksi dengan dunia analog.
2. Sampling, Quantization, dan Encoding
Dalam bagian ini akan dijelaskan tiga proses penting yang berhubungan dengan
ADC. Proses yang pertama adalah sampling. Bayangkan kita sebagai fotografer di stadion
Olimpiade. Tugas kita adalah mengurutkan gambar-gambar untuk mengonstruksi gerakan
setiap penyelam. Urutan gambar-gambar tersebut menyusun gerakan penyelam tersebut.
Jika seorang penyelam melakukan gerakan yang komplek dan kita ingin mengonstruksi
gerakan tersebut, maka kita harus mengambil sejumlah gambar yang cukup mulai dari
awal menyelam sampai akhir menyelam. Jika penyelam tersebut melakukan gerakan yang
umum, maka kita hanya perlu mengambil beberapa gambar selama periode menyelamnya.
Dua gerakan berbeda tersebut dapat dilihat dalam Gambar 8.1. Jeda waktu yang sama
digunakan untuk menangkap kedua gerakan tersebut. Seperti yang terlihat dalam Gambar
8.1, dalam frame (a) gerakan tidak dapat direkonstruksi dari sampel yang ada, sedangkan
gerakan dalam frame (b) dapat dengan jelas direkonstruksi dari jumlah sampel yang sama
untuk menangkap kedua gerakan tersebut.

Gambar 8.1 Dua penyelam melompat dari platform: (a) gerakan cepat dan (b) gerakan
lambat.

ktu. Secara
alami, ketika kita menyampel sebuah sinyal, kita ingin menyampel secara maksimal
supaya kita dapat menangkap sinyal tersebut. Dengan kata lain, kita ingin meminimalisir
jumlah sampel yang digunakan untuk merekonstruksi sinyal aslinya. Kesimpulannya,
kecepatan perubahan sinyal akan menentukan jumlah sampel yang dibutuhkan untuk
merekonstruksi sinyal tersebut. Sampling sangat penting karena ketika kita akan
merepresentasikan sinyal analog ke sinyal digital, seperti komputer, kita harus
menggunakan kecepatan sampling yang sesuai untuk menangkap sinyal analog yang
sesungguhnya supaya bisa direpresentasikan dalam sistem digital.

Gambar 8.2 Kuantisasi

Proses yang kedua adalah kuantisasi (quantization). Setiap sistem digital


mempunyai sejumlah bit, yang digunakan untuk merepresentasikan data. Bit adalah satuan
dasar ketika menggunakan informasi dalam bentuk biner, 1 atau 0. Nibble disusun dari 4
bit biner, sedangkan byte disusun dari 8 bit biner. Ketika sebuah sinyal disampel, sistem
digital diperlukan untuk merepresentasikan sampel yang diambil. Kuantisasi sebuah sinyal
sampel adalah bagaimana sinyal tersebut merepresentasikan satu level kuantisasi. Misalnya
kita punya satu bit saja untuk merepresentasikan sebuah sinyal, maka kita hanya punya 2
macam angka, yaitu 0 dan 1. Jika kita mempunyai 2 bit representasi sinyal, maka kita dapat
merepresentasikan sinyal menjadi empat level yang berbeda, yaitu 00, 01, 10, dan 11. Jika
kita mempunyai 3 bit representasi sinyal, maka kita dapat merepresentasikan sinyal
menjadi delapan level yang berbeda, yaitu 000, 001, 010, 011, 100, 101, 110, dan 111.
Dapat disimpulkan bahwa dengan mempunyai n bit, maka kita mempunyai 2n level yang
berbeda. Gambar 8.2 menunjukkan bahwa n bit dapat menguantisasi berbagai range nilai.
Dalam sistem digital, sinyal yang masuk adalah tegangan yang diperoleh dari sinyal fisik
dengan bantuan transduser, seperti mikrofon, sensor sudut, dan sensor infrared. Tegangan
tersebut kemudian dikondisikan untuk dipetakan ke dalam sistem digital, yaitu mulai 0 V
5 V. Dalam Gambar 8.2, n bit dapat membuat kita membagi sinyal input menjadi sistem
digital menjadi 2n level kuantisasi yang berbeda. Seperti yang terlihat dalam Gambar 8.2,
semakin tinggi level kuantisasi, semakin bagus pemetaan sinyal input sehingga bisa
mendekati nilai sebenarnya.

Gambar 8.3 Kuantisasi dengan sedikit bit

Yang terakhir adalah proses encoding yang mengonversi sinyal terkuantisasi menjadi
bilangan biner. Misalkan kita menggunakan 8 bit untuk kuantisasi sinyal analog. Level
kuantisasi ditentukan oleh 8 bit tersebut, sehingga setiap sampel sinyal dikuantisasi sebagai
salah satu dari 256 level. Lihatlah contoh dalam Gambar 8.3. Sampel pertama dipetakan
menjadi kuantisasi level 2 dan sinyal kedua dikuantisasi menjadi level 198. Dalam Gambar
8.3 ditunjukkan masing-masing sampel tersebut mempunyai error tertentu.Dengan
membandingkan Gambar 8.3 dan 8.4, dapat dilihat bahwa, error kuantisasi berbanding
terbalik dengan jumlah bit yang digunakan untuk menguantisasi sinyal. Ketika sebuah
sinyal dikuantisasi, proses encoding mencakup merepresentasikan level kuantisasi dengan
bit yang ada. Sehingga, untuk sampel pertama, nilai sampel terkode yaitu 00000001,
sedangkan nilai sampel terkode untuk sampel kedua adalah 11000110. Sebagai hasil proses
encoding, sinyal analog sampel sekarang direpresentasikan dengan sederetan bilangan
biner.

Gambar 8.4 Enkoding

3. Resolusi dan Data Rate


Resolusi adalah ukuran yang digunakan untuk menguantisasi sinyal analog.
Misalnya kita mempunyai range 5 V dan 1 bit untuk merepresentasikan sinyal analog.
Resolusi dalam kasus ini adalah 2.5 V, sebuah resolusi yang buruk. Error maksimum, atau
yang disebut error resolusinya adalah 2,5 V, yaitu 50% dari total range sinyal input.
Misalkan kita punya 4 bit untuk merepresentasikan level kuantisasi, maka resolusinya
sekarang menjadi 1,25 V atau 25% dari range input. Misalkan kita punya 20 bit untuk level
kuantisasinya, maka resolusinya sekarang menjadi 4,77 × 10 6, atau 9,54 × 10 5% dari
range total. Contoh di atas menunjukkan bahwa jika kita meningkatkan jumlah level
kuantisasinya, maka jarak antara level yang berdekatan berkurang, mengurangi error
kuantisasi dari sinyal sampel, sehingga representasi sinyal analog tersampel semakin
akurat.
Sekarang kita diskusikan tentang data rate. Definisi data rate adalah jumlah data
yang dibangkitkan oleh sistem per satuan waktu. Secara umum, jumlah bit atau byte per
detik digunakan sebagai satuan data rate. Dapat dilihat bahwa semakin banyak bit yang
digunakan dalam level kuantisasi, maka semakin akurat sinyal analog dapat
direpresentasikan.

B. Proses Konversi Analog ke Digital


Tujuan proses ADC adalah untuk merepresentasikan sinyal analog ke sinyal digital
dengan akurat. Langkah pertama proses ADC adalah menyampel sinyal analog. Setelah
sinyal analog telah disampel, maka terjadilah proses kuantisasi. Jika level kuantisasi sudah
ditentukan, maka kita dapat mengkodekan menggunakan bit yang sudah dipilih.

C. Teknologi Konversi ADC


ATmega8535 menggunakan teknik successive approximation converter untuk
mengonversi sampel menjadi representasi digital 10-bit. Teknologi untuk mengonversi
terbagi menjadi dua yaitu konversi langsung dan konversi tidak langsung. Successive
approximation conversion, counter-based conversion, dan parallel conversion
menggunakan teknik mengonversi sinyal input analog menjadi digital secara langsung.
Metode integrasi menggunakan waktu konversi artinya secara tidak langsung mengukur
besarnya sinyal analog. Gambar 8.5 menunjukkan berbagai macam metode konversi
tersebut.

1. Successive Approximation
Teknik successive approximation menggunakan DAC, kontroler, dan komparator
untuk melakukan proses ADC. Mulai dari MSB ke LSB, kontroler mengubah setiap bit
pada satu waktu dan membangkitkan sinyal analog, dengan bantuan DAC, dibandingkan
dengan sinyal analog input yang asli. Berdasarkan hasil pembandingan, kontroler
mengubah atau membiarkan bit tersebut dan berpindah ke bit MSB berikutnya. Proses
tersebut berlanjut sampai keputusan untuk setiap bit diambil. Metode successive
approximation bekerja dengan cara MSB digunakan untuk membagi range input ADC
menjadi setengahnya, MSB kedua membagi ½ menjadi 2/4, dan seterusnya. Gambar 8.5
(a) menunjukkan arsitektur konverter tipe successive approximation. Kelebihan teknik ini
adalah waktu konversi sama untuk semua input, tetapi kekurangannya adalah, teknologi ini
memerlukan perangkat keras yang kompleks dalam implementasinya.

Gambar 8.5 Empat teknologi yang digunakan untuk mengonversi sinyal analog ke sinyal
digital: (a) successive approximation converter, (b) integration-based converter, (c) counter-
based converter, and (d) parallel
2. Integration
Teknik integrasi menggunakan integrator, komparator, dan kontroler untuk
mengonversi sinyal analog menjadi sinyal digital. Sampel sinyal analog diintegrasi selama
periode yang tetap, misalnya n siklus clock sistem digital. Sinyal referensi yang tetap
lainnya diintegrasi setiap waktu dan dibandingkan dengan sinyal input analog yang sudah
diintegrasi. Meskipun nilai sinyal referensi lebih kecil dari sinyal analog input, sinyal
referensi secara kontinyu diintegrasi, dan waktu intuk mengintegrasi diukur. Ketika kedua
nilai terintegrasi sama, waktu yang terukur dikonversi menjadi nilai digital. Gambar 8.5 (b)
menunjukkan komponen sistem konverter jenis ini. Kekurangan teknik ini adalah waktu
untuk proses konversi yang bervariasi. Nilai analog yang kecil akan memerlukan waktu
yang lebih sedikit dibandingkan dengan nilai yang besar.

3. Counter-Based Conversion
Teknik ketiga adalah mengonversi sinyal analog menjadi snyal digital berbasis
pada counter-based conversion. Konversi jenis ini dilakukan dengan bantuan counter,
DAC, dan komparator. Counter mulai dari 0 dan menghitung naik. Ketika counter
menghitung naik, nilai yang sesuai dikonversi menjadi nilai analog dan dibandingkan
dengan sinyal analog input. Selama sinyal analog input lebih besar daripada sinyal yang
dibangkitkan oleh DAC, counter terus menghitung dan proses terus berjalan. Ketika
komparator mendeteksi bahwa sinyal dari DAC lebih besar daripada sinyal analog input,
nilai counter akan dikonversi menjadi nilai digital yang merepresentasikan sampel sinyal
analog. Gambar 8.5 (c) menunjukkan arsitektur keseluruhan dari konverter jenis ini. Mirip
dengan konverter yang berbasis prinsip integrasi, kekurangan konverter jenis ini adala
waktu konversi yang bervariasi.

4. Parallel Conversion
Teknik terakhir yang mempunyai waktu konversi paling cepat dibandingkan
dengan teknik yang lain adalah parallel conversion. Konverter paralel menggunakan
sejumlah komparator dan rangkaian untuk secara simultan mengukur sinyal input dan
mengonversinya menjadi nilai digital. Kekurangan teknik ini adalah biaya yang digunakan
untuk membangun rangkaiannya. Gambar 8.5 (d) memperlihatkan arsitektur konverter
jenis ini.
D. Sistem ADC ATmega8535
Mikrokontroler ATmega8535 dilengkapi dengan sistem ADC yang mempunyai
fitur sebagai berikut:
resolusi 10-bit
ketelitian absolut ±2 LSB
waktu konversi 13 ADC siklus clock
8 multiplexed single-ended input channels,
pilihan right or left result justification
ADC input voltage range 0 to Vcc.
Resolusi didefinisikan sebagai:
resolution = (VRH VRL)/2b.
Dimana: VRH dan VRL adalah tegangan referensi ADC high dan low
b adalah jumlah bit yang digunakan untuk konversi
Untuk ATmega8535, tegangan referensi adalah 5 VDC, 0 VDC, serta tersedia pilihan
konversi 10 bit dan 8 bit, sehingga resolusi tertinggi adalah 4.88 mV.
Ketelitian absolut dispesifikasikan ±2 LSB, artinya ±9.76 mV pada resolusi 10 bit.
ADC ini memerlukan 13 sikus clock untuk mengonversi sinyal analog ke sinyal digital.
Akan tetapi sistem ADC dapat menggunakan frekuensi clock yang lebih rendah daripada
sumber clock mikrokontroler. Sumber clock mikrokontroler dibagi oleh bit ADC Prescaler
Select (ADPS[2:0]) dalam ADC Control and Status Register A (ADCSRA).
ADC dilengkapi dengan single successive approximation converter. Hanya satu kanal
ADC dapat dikonversi dalam satu waktu. Input ADC dilengkapi dengan multilekser 8
input analog. Input analog yang dikonversi dipilih melalui bit MUX[4:0] dalam ADC
Multiplexer Selection Register (ADMUX).
Hasil proses konversi 8-bit atau 10 bit diletakkan di ADC Data Registers, ADCH
dan ADCL. Kedua register ini menyediakan 16 bits untuk hasil 10 bit. Hasil konversi bisa
ditata rata kiri dengan mengeset bit ADLAR (ADC Left Adjust Result) dalam register
ADMUX. Rata kanan dapat diperoleh dengan membuat bit ini berlogika 0.
Tegangan input analog harus berada diantara 0 dan Vcc V. Jika tidak, maka harus
ditambahkan rangkaian di luarnya supaya tegangan input analog berada dala range
tersebut.
1. Block Diagram
Diagram blok ADC dalam mikrokontroler ATmega8535 dapat dilihat dalam
Gambar 8.6. Bagian sisi kiri diagram memperlihatkan hubungan eksternal ke pin
mikrokontroler untuk mengakses ADC. Delapan kanal input analog terletak di ADC[7:0],
dan tegangan referensi ADC terletak di AREF dan AVCC.

Gambar 8.6 Blok diagram ADC

2. Register
Ada beberapa langkah yang harus dilakukan untuk inisialisasi ADC, yaitu penentuan
clock, tegangan referensi, format data output dan mode pembacaan. Inisialisasi ini dilakukan
pada register-register berikut:
ADMUX (ADC Multiplexer Selection Register)
ADMUX merupakan register yang mengatur tegangan referensi yang digunakan
ADC, format data output dan saluran ADC.

REFS0-1 (Reference Selection Bits)


REFS0-1 adalah bit-bit pengatur mode tegangan referensi ADC.

ADLAR (ADC Left Adjust Result)


ADLAR adalah bit keluaran ADC. Jika ADC telah selesai konversi, maka data ADC
akan diletakkan di 2 register, yaitu ADCH dan ADCL dengan format sesuai ADLAR.
Format data ADC jika ADLAR=0

Format data ADC jika ADLAR=1


MUX0-4 (Analog Channel and Gain Selection Bits)
MUX0-4 adalah bit-bit pemilih saluran pembacaan ADC.

ADCSRA (ADC Control and Status Register A)


ADCSRA adalah register 8 bit yang berfungsi untuk melakukan manajemen sinyal
kontrol dan status ADC.

ADEN (ADC Enable)


ADEN merupakan bit pengatur aktivasi ADC. Jika bernilai 1 maka ADC akan aktif.
ADCS (ADC Start Conversion)
ADCS merupakan bit penanda dimulainya konversi ADC. Selama konversi
berlogika 1 dan akan berlogika 0 jika selesai konversi.
ADATE (ADC Auto Trigger Enable)
ADATE merupakan bit pengatur aktivasi picu otomatis. Jika bernilai 1 maka
konversi ADC akan dimulai pada saat tepi positif pada sinyal trigger yang digunakan.
ADIF (ADC Interrupt Flag)
ADIF merupakan bit penanda akhir konversi ADC. Jika bernilai 1 konversi ADC
pada suatu saluran telah selesai dan siap diakses.
ADIE (ADC Interrupt Enable)
ADIE merupakan bit pengatur aktivasi interupsi. Jika bernilai 1 maka interupsi
penandaan telah selesai. Konversi ADC diaktifkan.
ADPS0-2 (ADC Prescaler Select Bit)
ADPS0-2 merupakan bit pengatur clock ADC.

SFIOR (Special Function IO Register)


SFIOR adalah register 8 bit yang mengatur sumber pemicu ADC. Jika bit ADATE
pada register ADCSRA bernilai 0 maka ADTS0-2 tidak berfungsi.
3. Programming the ADC
Di bawah ini dijelaskan dua fungsi untuk mengoperasikan ADC.
initADC()
Yaitu menginisialisasi ADC dengan menentukan clock, tegangan referensi, format
data output dan mode pembacaan. Contoh inisialisasi ADC pada CodeVision:

readADC(unsigned char)
Yaitu membaca tegangan analog dari kanal ADC dan dikonversi menjadi sinyal
digital. Contoh readADC pada CodeVision:
Rangkuman
Dalam bab ini telah dijelaskan tentang perbedaan antara sinyal analog dan digital,
proses ADC, menilai kualitas ADC menggunakan ukuran sampling rate, level kuantisasi,
jumlah bit yang digunakan untuk enkoding, dan dynamic range, register yang digunakan
untuk konfigurasi ADC, langkah-langkah menggunakan ADC dalam mikrokontroler AVR,
memrogram mikrokontroler untuk fungsi ADC. Dalam bab selanjutnya akan dijelaskan
bagaimana menggunakan fitur Timer/Counter dalam mikrokontroler AVR.

Soal Latihan
1. Jika sebuah sinusoida dengan frekuensi 500 HZ, berapa frekuensi sampling minimum
untuk ADC supaya dapat merekonstruksi sinyal analog setelah dikonversi?
2. Jika 12 bit digunakan untuk menguantisasi sinyal sapel, berapa junlah level
kuantisasinya? Berapakan resolusinya jika input range ADCnya 10 V.
3. Jika range input ADC 12 V dan resolusi yang diinginkan 0.125 V, berapa jumlah bit
yang digunakan untuk konversi?
4. Jika sinyal analog dikonversi oleh ADC menjadi representasi biner dan kemudian
dikembalikan ke tegangan analog menggunakan DAC, apakah tegangan input analog
yang asli bisa sama dengan tegangan output yang dihasilkan? Jelaskan.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Anda mungkin juga menyukai