Anda di halaman 1dari 12

FATMA

Senin, 05 Desember 2016

laporan mikrokontroler menggunakan


ADC
BAB I
PENDAHULUAN
A.    TUJUAN
         Mengetahui dan memahami cara menggunakan ADC yang ada di dalam mikrokontroler.
         Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk mengonversi data
analog menjadi data digital.

B.     DASAR TEORI
1.      Pengeritan ADC (Analog to Digital Converter)
Penggunaan ADC sebagai pengonversi data analog menjadi data digital merupakan
sesuatu hal yang diperlukan jika data yang masuk ke dalam mikrokontroler, biasanya data dari
sensor berupa sinyal analog.
Fitur ADC dalam ATMega8535 adalah sebagai berikut:
 Resolusi 10 bit.
 Waktu konversi 65-260 μs.
 Input 8 kanal.
 Input ADC 0-5Vcc.
 3 Mode pemilihan tegangan referensi.
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.
Rangkaian yang digunakan untuk mempelajari ADC dapat dilihat dalam Gambar dibawah.
Rangkaian ini merupakan rangkaian pembagi tegangan dimana tegangan keluaran dapat dihitung
dengan rumus:
Vout =   R2 x Vcc
                 R1+R2
C.    ALAT DAN BAHAN YANG DIGUNAKAN
Pada praktikum mikrokontroler dengan LED membutuhkan alat dan bahan sebagai berikut :
         1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
         1 buah catu daya DC +5V
         1 buah multimeter
         1 buah ISP Downloader AVR
         1 buah sistem minimum AVR
         1 buah I/O
         1 buah kabel printer USB
         2 buah kabel pita hitam
         1 buah potensiometer

D.    PROSEDUR
1.      Rangkailah peralatan yang diperlukan seperti dalam Gambar diatas. Hubungkan soket jumper
PORTC pada minimum system dengan soket jumper pada OUTPUT LED. Vout pada rangkaian
potensiometer dihubungkan pada PORTA.0 (ADC channel 0).
2.      Buka program Code Vision AVR
3.      Buat program dengan menggunakan aplikasi Code Vision AVR
4.      Buatlah file project (.prj) kemudian pilih IC yang digunakan (ATmega8535) dan atur clock
4.000 Mhz. (seperti praktikum sebelumnya)
5.      Buatlah file source (.c) kemudian hubungkan file project dengan file source seperti pada
praktikum sebelumnya.
6.      Tambahkan file header
7.      Program berikut merupakan deklarasi variabel hasil konversi ADC. Tuliskan variabel berikut di
luar program utama.
8.      Buatlah program utama dan inisialisasikan PORT C sebagai output dengan kondisi awal LOW.
9.      Tuliskan inisialisasi ADC berikut di dalam program utama.
10.  Perhatikan blok program berikut. Arti dari blok instruksi tersebut adalah setting ADC di PORTA
dan inisialisasi ADC. Tuliskan fungsi berikut di luar program utama.
11.  Tuliskan program berikut dalam program utama tepatnya di dalam while(1).
12.  Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex
menggunakan Khanzama AVR Programer. Klik auto program.
13.  Hubungkan output potensiometer pada PORTA.0.
14.  Ukur tegangan potensiometer (kaki tengah) sebesar 0-5V (sesuai tabel).
15.  Lepas probe AVO Meter lalu perhatikan dan catat nyala LED dan konversi nilai dalam desimal.

16.  Hitung perhitungan nilai digital dalam desimal dengan rumus berikut:


Vdigital = Vukur / Vcc *255
Contoh: misal tegangan analog yang diukur 1 V, maka tegangan digital adalah:
V = 1/5 *255 = 51 desimal, atau 33H atau 00110011B
BAB II
DATA HASIL PERCOBAAN DAN ANALISA

2.1 Percobaan ADC Untuk Data Analog dari Potensiometer


     Percobaan ADC dengan input potensiometer diprogram melalui CVAVR menggunakan script
program berikut:
#include <mega8535.h> // header program chip ATmega8535
#include <delay.h> //header program delay
#define ADC_VREF_TYPE 0x60 Mendefinisikan type ADC
unsigned char read_adc(unsigned char adc_input) //mendeklarasikan variabel
red_adc
{
ADMUX=adc_input|(ADC_VREF_TYPE&0xff); //Setting register ADMUX
delay_us(10); //tunda 10us
ADCSRA|=0x40; //Setting register ADCSRA
while((ADCSRA&0x10)==0); //perulangan untuk mengecek logika ADCRA
ADCSRA|=0x10; //set ADCSRA 0x10
return ADCH; //pengembalian nilai ADCH
}
unsigned char adcdt; //deklarasi variabel adcdt
void main (void) //fungsi main
{
DDRC=0xff; //set PORTC sebagai output
PORTC=0x00; //PORTC aktif High
ADMUX=ADC_VREF_TYPE&0xff; //Inisialisasi register ADMUX
ADCSRA=0xA7; //nisialisasi register ADCSRA
SFIOR&=0x0f; //Inisialisasi flag pada register SFIOR
while(1)
{
adcdt=read_adc(0); //nilai adcdt mengikuti nilai input tegangan
PORTC=adcdt; //output PORTC sama dengan hasil konversi pada adcdt
}
}

Analisi Program:
Untuk menampilkan hail konversi ADC pada bit LED maka harus didefinisikan terlebih dahulu
tipe ADC yang akan digunakan melalui deklarasi #define ADC_VREF_TYPE
0x60 selanjutnya  program akan membuat array untuk menampung hasil pembacaan data analog
pada variabel adcdt. Untuk menggunakan ADC maka harus melakukan setting register-
registernya yaitu setting ADMUX, ADCSRA, dan SFIOR. Hasil setting yang digunakan pada
program diatas menjadikan ADC bekerja secara free running, frekuensi clocknya sebesar 31.250
kHz dan nilai tegangan referensinya diperoleh dari pin AVCC. Untuk menampilkan data hasil
konversi terlebih dahulu program harus menentukan PORT yang akan menjadi output ke LED
yaitu PORTC. Kemudian program akan melakukan pembacaan data analog pada tegangan
referensi melalui perintah adcdt=read_adc(0);. Kemudian nilai hasil pembacaan data analog
tersebut akan disimpan pada variabel adcdt yang akan dikeluarkan melalui PORTC yang
terhubung ke LED yang menentukan nyalanya agar sesuai dengan hasil konversi ADC.
  Hasil dari script program diatas dapat digambarkan dalam tabel nyala LED 2.1
ADC

Teganga Desim Perhitunga


Lampu LED berdasarkan butiran
n al n
0 0 0
0.5 25 25.5
1 51 51
1.5 77 76.5
2 103 102
2.5 128 127.5
3 154 153
3.5 175 178.5
4 204 204
4.5 229 229.5
5 255 255

Tabel 2.1 Nyala LED praktikum ADC dengan input potensiometer

2.1.1 Analisa Data Percobaan ADC dengan input potensiometer


          Pada percobaan konversi ADC digunakan tegangan refensi dari VCC sebesar 5 volt.artinya
range data analog yang dimiliki berkisar dari 0-5 volt. Karena tipe ADC yang digunakan adalah
ADC 8 bit artinya range data digital yang dimiliki adalah dari 0-255. Artinya 1 bit data digital
akan mewakili 0,0196 volt data analog. Pada percobaan pertama  digunakan input data analog
sebesar 0 volt yang menyebabkan nilai hasil konversi yang ditunjukkan LED adalah 00000000
artinya semua LED akan padam dengan kondisi input analog sebesar 0 volt. Pada percobaan
kedua dengan input data analog sebesar 0,5 volt maka diperoleh hasil konversi secara teoritis
sebesar 0,5/0,0196 atau 25,5 data digital. Dari percobaan ini diperoleh LED yang menyala
dengan konfigurasi biner 00011001 sehingga led yang menyala adalah LED pada bit 0, 3, dan 4.
Konfigurasi nyala LED tersebut apabila dikonversi kedalam bilangan decimal diperoleh nilai 25.
Artinya terdapat selisih antara teori konversi dengan hasil konversi sebesar 0,5. Selisih tersebut
masih dalam batas resolusi ADC.       

     Pada percobaan ketiga dengan input data analog sebesar 1 volt maka diperoleh hasil konversi
secara teoritis sebesar 1/0,0196 atau 51 data digital. Dari percobaan ini diperoleh LED yang
menyala dengan konfigurasi biner 00110011 sehingga led yang menyala adalah LED pada bit
0,1,4,dan 5. Konfigurasi nyala LED tersebut apabila dikonversi kedalam bilangan decimal
diperoleh nilai 52. Artinya ADC mengkonversi dengan presisi karena tidak terdapat perbedaan
antara hasil teori konversi dengan hasil konversinya. Pada percobaan keempat dengan input data
analog sebesar 1,5 volt maka diperoleh hasil konversi secara teoritis sebesar 1,5/0,0196 atau 76,5
data digital. Dari percobaan ini diperoleh LED yang menyala dengan konfigurasi biner 01001101
sehingga led yang menyala adalah LED pada bit 0,2,3,dan 6 . Konfigurasi nyala LED tersebut
apabila dikonversi kedalam bilangan decimal diperoleh nilai 77. Artinya terdapat selisih antara
teori konversi dengan hasil konversi sebesar 0,5. Selisih tersebut masih dalam batas resolusi
ADC. Pada percobaan kelima dengan input data analog sebesar 2 volt maka diperoleh hasil
konversi secara teoritis sebesar 2/0,0196 atau 102 data digital. Dari percobaan ini diperoleh LED
yang menyala dengan konfigurasi biner 01100111 sehingga led yang menyala adalah LED pada
bit 0,1,2,5,dan 6. Konfigurasi nyala LED tersebut apabila dikonversi kedalam bilangan decimal
diperoleh nilai 103. Artinya terdapat selisih antara teori konversi dengan hasil konversi sebesar
1. Selisih tersebut masih dalam batas resolusi ADC. Pada percobaan keenam dengan input data
analog sebesar 2,5 volt maka diperoleh hasil konversi secara teoritis sebesar 2,5/0,0196 atau
127,5 data digital. Dari percobaan ini diperoleh LED yang menyala dengan konfigurasi biner
10000000 sehingga led yang menyala adalah LED pada bit 7. Konfigurasi nyala LED tersebut
apabila dikonversi kedalam bilangan decimal diperoleh nilai 128. Artinya terdapat selisih antara
teori konversi dengan hasil konversi sebesar 0,5. Selisih tersebut masih dalam batas resolusi
ADC. Pada percobaan ketujuh dengan input data analog sebesar 3 volt maka diperoleh hasil
konversi secara teoritis sebesar 3/0,0196 atau 153 data digital. Dari percobaan ini diperoleh LED
yang menyala dengan konfigurasi biner 10011010 sehingga led yang menyala adalah LED pada
bit 1,3,4,dan 7. Konfigurasi nyala LED tersebut apabila dikonversi kedalam bilangan decimal
diperoleh nilai 154. Artinya terdapat selisih antara teori konversi dengan hasil konversi sebesar
1. Selisih tersebut masih dalam batas resolusi ADC.  Pada percobaan kedelapan dengan input
data analog sebesar 3,5 volt maka diperoleh hasil konversi secara teoritis sebesar 3,5/0,0196 atau
178,5 data digital. Dari percobaan ini diperoleh LED yang menyala dengan konfigurasi biner
10101011 sehingga led yang menyala adalah LED pada bit 0,1,3,5,dan 7. Konfigurasi nyala LED
tersebut apabila dikonversi kedalam bilangan decimal diperoleh nilai 175. Artinya terdapat
selisih antara teori konversi dengan hasil konversi sebesar 3,5. Selisih tersebut sudah di luar
batas resolusi ADC sehingga terdapat kesalahan hasil konversi. Pada percobaan kesembilan
dengan input data analog sebesar 4 volt maka diperoleh hasil konversi secara teoritis sebesar
4/0,0196 atau 204 data digital. Dari percobaan ini diperoleh LED yang menyala dengan
konfigurasi biner 11001100 sehingga led yang menyala adalah LED pada bit 2,3,6,dan 7.
Konfigurasi nyala LED tersebut apabila dikonversi kedalam bilangan decimal diperoleh nilai
204. Artinya terdapat selisih antara teori konversi dengan hasil konversi sebesar 0.Pada
percobaan kesepuluh dengan input data analog sebesar 4,5 volt maka diperoleh hasil konversi
secara teoritis sebesar 4,5/0,0196 atau 229,5 data digital. Dari percobaan ini diperoleh LED yang
menyala dengan konfigurasi biner 11011001 sehingga led yang menyala adalah LED pada bit
0,2,5,6,dan 7. Konfigurasi nyala LED tersebut apabila dikonversi kedalam bilangan decimal
diperoleh nilai 229. Artinya terdapat selisih antara teori konversi dengan hasil konversi sebesar
0,5. Pada percobaan kesebelas dengan input data analog sebesar 5 volt maka diperoleh hasil
konversi secara teoritis sebesar 5/0,0196 atau 255 data digital. Dari percobaan ini diperoleh LED
yang menyala dengan konfigurasi biner 11111111 sehingga led yang menyala adalah semua bit
LED. Konfigurasi nyala LED tersebut apabila dikonversi kedalam bilangan decimal diperoleh
nilai 255. Artinya terdapat selisih antara teori konversi dengan hasil konversi sebesar 0.

2.2 Percobaan Menampilkan hasil konversi ADC pada LCD     


      Percobaan ADC dengan input potensiometer diprogram melalui CVAVR menggunakan
script program berikut:
#include <mega8535.h> //Header program chip ATmega8535
#include <delay.h> //header program untuk delay
#include <alcd.h> //header program untuk lcd
unsigned char temp[16]; //deklarasi variable array temp
float balik,adcdt; Delarasi variabel balik dan adcdt tipe float
#define ADC_VREFF_TYPE 0x60//Mendefinisikan type ADC

unsigned char read_adc(unsigned char adc_input) //mendeklarasikan variabel


red_adc

{
ADMUX=adc_input|(ADC_VREFF_TYPE & 0xff); //Setting register ADMUX
delay_us(10); //tunda 10us
ADCSR|=0x40; //Setting register ADCSRA

while((ADCSRA&0x10)==0); //perulangan untuk mengecek logika ADCRA


ADCSRA|=0x10; //set ADCSRA 0x10
return ADCH; //pengembalian nilai ADCH
}
void main(void) //fungsi main
{
PORTC=0x00; //PORTC aktif High
DDRC=0xff; //set PORTC sebagai output

//ADC initialization
//ADC clock frequency: 31.250 kHz
//ADC votlage Referance: AVCC pin
//ADC high speed Mode: off
//ADC auto trigger source free running
//only the 8 most significant bits off
//the AD conversion result are used

ADMUX=ADC_VREF_TYPE&0xff; //Inisialisasi register ADMUX


ADCSRA=0xA7; //nisialisasi register ADCSRA
SFIOR&=0x0f; //Inisialisasi
lcd_init (16);//set kolom lcd 16
while(1)
{
adcdt=read_adc(0);//membaca adc didalam bit
PORTC=adcdt; //output PORTC sama dengan hasil konversi pada adcdt
balik=adcdt/51;//
sprintf(temp,"volt %0.2f",balik); //
lcd_gotoxy(0,0); //Pindahkan kursor ke kolom 0 baris 0
lcd_puts(temp); //tampilkan nilai dalam array temp
delay_ms(100); //Tunda 100ms
}

2.1.1 Analisa Program Menampilkan Konversi ADC pada LCD


          Untuk mengunakan LCD maka pada header program digunakan #include
<alcd.h> selanjutnya  program akan membuat array untuk menampung hasil pembacaan data
analog pada variabel temp. Untuk menggunakan ADC maka harus melakukan setting register-
registernya yaitu setting ADMUX, ADCSRA, dan SFIOR. Hasil setting yang digunakan pada
program diatas menjadikan ADC bekerja secara free running, frekuensi clocknya sebesar 31.250
kHz dan nilai tegangan referensinya diperoleh dari pin AVCC. Untuk menampilkan data hasil
konversi terlebih dahulu program harus menentukan PORT yang akan menjadi output ke LCD
yaitu PORTC. Kemudian program akan melakukan pembacaan data analog pada tegangan
referensi melalui perintah adcdt=read_adc(0);. Kemudian nilai hasil pembacaan data analog
tersebut akan disimpan pada variabel adcdt yang kemudian dijadikan sebagai penentu nilai
variabel balik yang merupakan hasil konversi digitalnya . Untuk menampilkan hasil konversinya,
program membaca perintah lcd_puts(temp); perintah tersebut berfungsiuntuk menampilkan
data nilai konversi yang tersimpan dalam array temp ke LCD.

BAB III
KESIMPULAN DAN PENUTUP

Dari hasil praktikum antarmuka mikrokontroler ATmega8535 diperoleh kesimpulan sebagai


berikut:
a)      ADC merupakan fitur yang ada dalam mikrokontroller dan berfungsi sebagai piranti
pengkonversi data analog menjadi data digital.
b)      Dalam mikrokontroller ATmega8535 terdapat 2 jenis ADC yaitu ADC 8 bit dan ADC 10 bit.
c)      Keunggulan ADC dalam ATmega8535 adalah resolusi tinggi sebesar 10 bit,  waktu konversi
yang singkat yaitu 65-260us dengan input 8 kanal serta memiliki 3 mode pemilihan tegangan
referensi.
d)     ADC pada ATmega8535 memiliki 3 register utama yaitu ADMUX, ADCSRA, dan SFIOR ..
DAFTAR PUSTAKA
Andrianto, Heri. 2007. Pemrograman Mikrokontroler AVR Atmega 16. Jakarta: Informatika.
Atmel Corporation. Atmega 8535 Datasheet (Complete).
Gadre, Dhananjay V. 2001. Programming and Customizing the AVR Microcontroller. New York: Mc
Graw Hill.
Heryanto, M Ary. 2007. Pemrograman Bahasa C untuk Mikrokontroler Atmega 8535. Yogyakarta;
Penerbit Andi.
Ibrahim, Dogan. 2002. Microcontroller Based Temperature Monitoring & Control.Newnes

Diposting oleh Fatma Cahya di 20.57 


Kirimkan Ini lewat EmailBlogThis!Berbagi ke TwitterBerbagi ke FacebookBagikan ke Pinterest

Tidak ada komentar:


Posting Komentar
Posting Lebih BaruPosting LamaBeranda
Langganan: Posting Komentar (Atom)
Mengenai Saya

Fatma Cahya 
Lihat profil lengkapku

Tentang saya
saya fatma cahyaningrum, lahir pada 12 januari 1998. kuliah di Universitas Negeri Malang jurusan Teknik
Elekro tahun 2015. Hoby saya meneropong bintang. dengan mengikuti club- club astronomi yang ada di
indonesia. seprti MAC(malang Astronomi club), CASA (club astronomi santri asslaam) dan KAPELA
(komunitas pengamat langit UM).

ChatBox
Kunjungi juga tautan ini
 Elektro UM
 Universitas Negeri Malang

Arsip Blog
 ▼  2016 (5)
o ▼  Desember (5)
 antarmuka mikrokontroler dengan keypad
 antarmuka mikrokontroler dengan penampil LCD
 laporan komparator
 laporan mikrokontroler menggunakan ADC
 game sederhana tebak angka
Tema Tanda Air. Diberdayakan oleh Blogger.

Anda mungkin juga menyukai