Anda di halaman 1dari 18

LAPORAN

PRAKTIKUM MIKROKONTROLLER
ADC (POTENTIOMETER)

Oleh :
Achmad Rivaldi Akbar Rozy
1541160002
D4 JTD 2B

JARINGAN TELEKOMUNIKASI DIGITAL


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI MALANG
2016
Praktikum 2
ADC Potentiometer menggunakan ATMega 16 Mikrokontroller

I. Tujuan
1. Mahasiswa mengetahui rangkaian yang digunakan pada ADC Potentiometer
Mikrokontroller
2. Mahasiswa mampu menyusun algoritma, flowchart, dan menuliskan script pada code
vision avr untuk ADC Potentiometer mikrokontroller
3. Mahasiswa mampu mempraktikkan mikrokontroller tentang ADC Potentiometer
II. Alat dan Bahan
1. Code Vision AVR (Software)
2. Progisp (Software)
3. ISP Downloader : 1 Unit
4. Modul Rangkaian : 1 Unit
5. ATMega 16 : 1 Unit
6. Kabel Penghubung : Secukupnya
III. Gambar Rangkaian
1. Script Code Vision AVR
int x,adc;
unsigned char nama[5]={0xC1,0x88,0xC7,0xC0,0xF9};
unsigned char nim[10]={0xCF,0x92,0x99,0xCF,0xCF,0x82,0xC0,0xC0,0xC0,0xA4};
unsigned char tlhr[10]={0xCF,0x92,0xBF,0xC0,0x99,0xBF,0xCF,0x90,0x90,0xF8};
unsigned char nokls[9]={0xC0,0xF9,0xBF,0xA4,0x83,0xBF,0xF1,0x87,0xA1};
while (1) if (adc>153 && adc<=204)
{ {
// Place your code here for (x=0;x<=9;x++)
adc=read_adc(0); {
if (adc<=102) PORTD=tlhr[x];
{ delay_ms(50);
for (x=0;x<=4;x++) PORTD=0xFF;
{ delay_ms(10);
PORTD=nama[x]; }
delay_ms(50);
PORTD=0xFF; }
delay_ms(10);
}
}

if (adc>102 && adc<=153) if (adc>204)


{
for (x=0;x<=9;x++) {
{ for (x=0;x<=8;x++)
PORTD=nim[x]; {
delay_ms(50); PORTD=nokls[x];
PORTD=0xFF; delay_ms(50);
delay_ms(10); PORTD=0xFF;
} delay_ms(10);
} }
}
}
Flow Chart Program

Gambar Flow Chart Project 2


2. Modul Rangkaian
IV. Teori Dasar
ADC (Analog Digital Converter)
ADC (Analog to Digital Converter) merupakan sebuah system yang berupa
rangkaian elektronik dengan fungsi untuk mengubah sinyal/tegangan analog menjadi
sinyal atau data -data digital. Pengubahan ini bertujuan untuk mendapatkan data-data
digital berupa hexa atau biner, sehingga mikroprosesor dapat mengolah data tersebut.
Data data digital hasil pengubahan ADC merupakan representasi dari masukan yang
berupa data tegangan analog.
ADC dalam pembahasan kali ini focus pada ADC yang dimiliki mikrokontroller
keluarga AVR. ADC mikrokontroller keluarga AVR yang dimiliki merupakan ADC 8bit
dan 10bit. Dengan tegangan referensi yang dapat diatur oleh keinginan programmer.
Setiap tipe mikrokontroller AVR dengan seri ATMega xxxx memiliki fasilitas ADC yang
dapat programmer digunakan. Setiap tipe memiliki jumlah ADC yang berbeda (lihat
pada data sheet), akan tetapi memiliki resolusi yang sama yaitu 8bit. Berikut ilustrasi
dari ADC mikro yang ada didalam IC menjadi satu dengan system;

Gambar Fasilitas konfigurasi ADC pada Mikrokontroller ATMega16


Gambar Blok Konfigurasi Internal ADC Mikrokontroller

Berdasarkan gambar diatas terdapat terminal yang penting dan harus diperhatikan
dalam menggunakan fasilitas ADC. Terminal/PIN/Kaki IC tersebut diberikan nama
AVCC dan ARef. AVCC merupakan tegangan yang digunakan untuk kerja rangkaian
ADC yang ada didalam mikrokontroler. Pin tersebut agar dapat bekerja secara
makasimal diberikan tegangan +5VDC. Sedangkan pin ARef merupakan tegangan
referensi yang digunakan sebagi tegangan pembanding dan acuan ADC mikro dalam
mengkonversi tegangan analog menjadi digital. Tegangan Aref dapat disesuikan dengan
kebutuhan akan kerapatan data dalam pengkonversiannya. Semakin kecil tegangan
referensi maka resolusi pembacaan ADC semakin rapat. Berikut ilustrasi pengubahan
Analog ke Digital;

Gambar Grafik Ilustrasi Pengubahan Tegangan Analog menjadi Data Digital


Penjelasan gambar diatas terdiri dari dua bentuk sinyal, yaitu sinyal analog dengan
sinyal discreet yang nanti dijadikan data hasil konversi digital. Pengubahan tegangan
masukan analog menjadi digital memperhatikan beberapa variabel, seperti V/Aref yang
menetukan kerapatan resolusi (tinggi step discreet) dan tipe kemampuan pengolahan
ADC yang digunakan. Tipe ADC pada keluarga AVR mikrokontroler seperti diatas telah
dijelaskan yaitu ADC 8bit. Guna menghitung kerapatan pengubahan sinyal discrit perlu
memperhatikan dua factor tersebut, misalkan terdapat beberapa contoh sebagai berikut:
ADC 8bit ATMega 16 menggunakan tegangan referensi (ARef) sebesar +5VDC,
berapa resolusinya?
Jawaban dari pertanyaan seperti itu adalah:
V 5V
= =20 mV
n 255

Sehingga besarnya step discreet terjadi perubahan pembacaan data digital setiap
kelipatan 20mV, seperti pada gambar diatas. Setiap kenaikan tegangan masukan
20mV akan mengubah data digital satu tingkat lebih tinggi.
Apabila terdapat tegangan masukan ADC sebesar 3,4V maka berapa pembacaan
data ADC mikrokontroler?
Jawaban dari pertanyaannya adalah
3,5
x 255=173
5

Data ADC sebesar 173 merupakan pembacaan mikrokontroller terhadap masukan


tegangan analog sebesar 3,4 V.
Tegangan referensi (ARef) sebesar +5V DC digunakan apabila untuk pembacaan
tegangan masukan ADC dengan range dan jangkauan yang tinggi. Sedangkan apabila
dibutuhkan resolusi pembacaan ADC yang lebih kecil, dapat dilakukan perubahan
tegangan referensi yang lebih kecil. Sebagai contoh berikut ini:
Jika terdapat sensor suhu LM35 dengan perubahan tegangan 10mV/C, maka agar
suhu dapat dibaca akurat perlu diberikan tegangan referensi sebagai berikut;
255 x 10 mV =2,5 V

Sehingga agar dapat membaca perubahan suhu /C maka perlu dipasang tegangan
referensi sebesar 2,5V. Berikut skematik yang dapat diterapkan agar mendapatkan
tegangan referensi 2,5V:

Gambar Skematik Aref dengan tegangan 2,5V


Secara rangkaian elektronik dan pengubahan ADC telah dijelaskan diatas, sedangkan
dalam pemrograman perlu dilakukan pengaturan pada CodeWizard AVR sebagai berikut;
Gambar Konfigurasi CodeWizard AVR dalam mengaktifkan penggunaan fasilitas
ADC
Tampilan Seven Segment
Tampilan seven segmen merupakan sebuah tampilan yang terdiri dari tujuh segmen
LED yang disusun untuk menampilkan angka 0 sampai 9 Seperti yang ditunjukkan
dalam Gambar 3.2. Dan untuk setiap segmen diberi kode dengan huruf a, b, c, d, e, f, g
dan d.p. Ada dua jenis seven segmen yaitu common anoda (CA) dan common katoda
(CC). Untuk common anoda (CA), karena yang dijadikan satu adalah anoda maka CA
dihubungkan dengan Vcc, sehingga untuk menyalakan segmen maka pin dari segemen
tersebut diberi logika 0 atau 0 Volt, sedang untuk common katode (CC), karena yang
dijadikan satu adalah Ground maka untuk menyalakan segmen pin dari segmen tersebut
diberi logika 1 atau 5 Volt.
Salah satu contoh data yang digunakan untuk menampilkan 0 sampai 9 melalui Port C
ditunjukkan dalam Tabel 3.2 dengan menggunakan 7 segmen common anoda.
Gambar Seven Segmen Common Cathode dan Common Anode

Tabel 3.2. Nilai Port C untuk menampilkan angka 0 sampai 9


V. Prosedur Praktikum
1. Menulis program melalui code vision AVR dengan cara sebagai berikut :
a. Mengklik File > New > Project

b. Memilih Yes untuk konfirmasi menggunakan AGP CodeWizardAVR

c. Memilih tipe chip yang akan digunakan pada codevision

d. Windows CodeWizard AVR digunakan untuk pengaturan PORT dan fasilitas


sesuai dengan fungsi yang diinginkan

Menu Chip

Pengaturan Chip

Pengaturan X_Tal

Pengaturan ADC
e. Memilih File Generate, Save and Exit
(Catatan : peemberian nama file sebanyak 3x, dengan nama file yang sama,
hindari kalimat yang panjang, capital, dan spasi)
f. Selesai pemberian nama file, akan muncul window utama editor program seperti
berikut

g. Mengisi script ADC seperti Gambar Rangkaian Script CodeVisionAVR


h. Mengklik Build All Project File
i. Memastikan bahwa script tidak ada error

Skrip tidak ada


yang error

2. Memasukkan Program ke Modul Rangkaian Menggunakan Progisp


a. Menghubungkan modul rangkaian dengan isp downloader
b. Membuka Software progisp

c. Mengunduh file program dari komputer ke modul mikro


Mengklik Load Flash Memilih file

d. Mengklik Auto
3. Menguji Modul Rangkaian
a. Menghubungkan kabel penghubung seperti gambar rangkaian di bawah ini

b. Menghubungkan dengan isp downloader


c. Menguji rangkaian dengan cara memutar potentiometer dan melihat hasil output
pada 7 segmen

ADC Potensiometer

PORT D 7-Segment

I. Hasil Praktikum

Button 1 nama[5] (VALDI) Button 2 nim[10] (1541160002)


Button 3 tlhr[10] (15-04-1997) Button 4 nokls[9] (01-2b-jtd)

II. Analisis Data


1. Pendeklarasian Variabel
int x,adc;
unsigned char nama[5]={0xC1,0x88,0xC7,0xC0,0xF9};
unsigned char nim[10]={0xCF,0x92,0x99,0xCF,0xCF,0x82,0xC0,0xC0,0xC0,0xA4};
unsigned char tlhr[10]={0xCF,0x92,0xBF,0xC0,0x99,0xBF,0xCF,0x90,0x90,0xF8};
unsigned char nokls[9]={0xC0,0xF9,0xBF,0xA4,0x83,0xBF,0xF1,0x87,0xA1};
Semuanya menggunakan unsigned char, variabel x, adc, nama[x], nim[x], tlhr[x],
dan nokls[x]. Variabel adc digunakan untuk menyimpan nilai read_adc pada
potensiometer. Diberi Nilai x pada array tergantung pada banyaknya data, contoh
nama[5] didalamnya terdapat 5 data array yaitu {0xC1,0x88,0xC7,0xC0,0xF9}.
Begitu juga dengan nim[10], tlhr[10], dan nokls[9]. Hasil pada output seven segment,
nama[5] menghasilkan VALDI, nim[10] menghasilkan 1541160002, tlhr[10]
ADC
menghasilkan 15-04-1997, dan tegangan
nokls[9] dibawah 2V
menghasilkan menggunakan PINA.0, if
01-2b-jtd.
2. Program didalam While(1){(adc<=102){statement} artinya ketika nilai pada adc
adc=read_adc(0); bernilai 102 maka ATMega16 akan mengeksekusi
1. Tegangan < 2V program
read_adc for (x=0;x<=4;x++)
nilainya disimpan pada{statement} ini artinya
variabel adc
if (adc<=102) variabel x bernilai 0, dan batas akhir dari pengulangan
{ yaitu 4, jadi dalam for ini mengalami pengulangan
for (x=0;x<=4;x++)
sebanyak 5 pada nilai statement, PORTD=nama[x],
output yang digunakan yaitu PORTD dengan variabel
array nama[x] dengan delay_ms(50), sehingga output
pada seven segment mengikuti nilai pada nama[x]
yaitu VALDI.
{
PORTD=nama[x];
delay_ms(50);
PORTD=0xFF;
delay_ms(10);
}
}
2. Tegangan < 3V
if (adc>102 && adc<=153)
ADC tegangan dibawah 3V menggunakan
{
for (x=0;x<=9;x++) PINA.0, if (adc>102&&adc<=153){statement}
{ artinya ketika nilai pada adc bernilai lebih dari 102
PORTD=nim[x]; dan kurang dari 153 maka ATMega16 akan
delay_ms(50); mengeksekusi program for (x=0;x<=9;x++)
PORTD=0xFF; {statement} ini artinya variabel x bernilai 0, dan
delay_ms(10);
batas akhir dari pengulangan yaitu 9, jadi dalam
}
} for ini mengalami pengulangan sebanyak 10 pada
3. Tegangan < 4V nilai statement, PORTD=nim[x], output yang
if (adc>153 && adc<=204) digunakan yaitu PORTD dengan variabel array
{ ADC
nim[x] tegangan dibawah 4Vsehingga
dengan delay_ms(50), menggunakan
output
for (x=0;x<=9;x++) PINA.0, if (adc>153&&adc<=204){statement}
pada seven segment mengikuti nilai pada nim[x]
{ artinya ketika nilai pada adc bernilai lebih dari 153
yaitu 154116002.
PORTD=tlhr[x]; dan kurang dari 204 maka ATMega16 akan
delay_ms(50); batas akhir dari program
mengeksekusi pengulanganforyaitu 9, jadi dalam
(x=0;x<=9;x++)
PORTD=0xFF; for ini mengalami pengulangan
{statement}ini artinya variabel x sebanyak
bernilai 0,10
danpada
delay_ms(10); nilai statement, PORTD=tlhr[x], output yang
}
digunakan yaitu PORTD dengan variabel array
}
4. Tegangan < 5V tlhr[x] dengan delay_ms(50), sehingga output pada
if (adc>204) seven segment mengikuti nilai pada tlhr[x] yaitu
{ ADC tegangan dibawah 5V menggunakan
15-04-1997.
for (x=0;x<=8;x++) PINA.0, if (adc>204){statement} artinya ketika
{ nilai pada adc bernilai lebih dari 204 maka
PORTD=nokls[x]; ATMega16 akan mengeksekusi program for
delay_ms(50); (x=0;x<=8;x++) {statement} ini artinya variabel x
PORTD=0xFF; bernilai 0, dan batas akhir dari pengulangan yaitu
delay_ms(10);
8, jadi dalam for ini mengalami pengulangan
}
} sebanyak 9 pada nilai statement,
III. Kesimpulan PORTD=nokls[x], output yang digunakan yaitu
PORTDyaitu
Dari hasil praktikum didapatkan kesimpulan dengan
: variabel array nokls[x] dengan
1. Merangkai ADC Potensiometer pada Mikrokontroller
delay_ms(50), sehingga hanya tinggal
output menghubungkan
pada seven
segment mengikuti nilai pada nokls[x]
potensiometer pada port input yang akan digunakan. Kita juga harus mengetahui yaitu 01-
PIN
2b-jtd.
pada seven segment dan juga tipe pada seven segment (anoda atau katoda) agar nilai
seven segment yang dihasilkan sesuai dengan yang kita inginkan.
2. Sebelum menulis script pada CVAVR, kita harus mengetahui terlebih dahulu
algoritma dan flowchart dari ADC Potensiometer. Seperti pada gambar rangkaian
flowchart. Dan script yang dituliskan harus sudah benar, dan tidak mengandung error
didalamnya.
3. Untuk menampilkan hasil output pada modul mikrokontroller, tinggal memutar
potensiometer untuk mengubah nilai adcnya dengan hasil output yang kita inginkan.
Mulai dari Tegangan < 2V (nama), Tegangan < 3V (nim), Tegangan < 4V (tanggal
lahir), dan Tegangan < 5V (nomer absen dan kelas).

Anda mungkin juga menyukai