Anda di halaman 1dari 14

LAPORAN PRAKTIKUM

LAB PTE-3

MENGGUNAKAN ANALOG TO DIGITAL CONVERTER (ADC)


DALAM MIKROKONTROLLER ATMEGA8535

Disusun untuk Memenuhi Matakuliah Lab-PTE-03


Yang Dibimbing oleh ibu Dyah Lestari, S.T.,M.Eng

Kelompok 7 :
1. Dwi Adi Putra M. R. (160534611635)
2. Izzulfi Wahyu Ramadhan (160534611662)
3. Nafalia Kurniawati (160534611621)
4. Rama Deyanto (160534611671)

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK ELEKTRO
Oktober 2017
MENGGUNAKAN ANALOG TO DIGITAL CONVERTER (ADC)
DALAM MIKROKONTROLLER ATMEGA8535

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. Analog to Digitan Converter (ADC)
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:
o Resolusi 10 bit.
o Waktu konversi 65-260 s.
o Input 8 kanal.
o Input ADC 0-5Vcc.
o 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. LEMBAR PRAKTIKUM

1. Alat dan Bahan


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
1 buah kabel pita hitam
1 buah potensiometer

2. 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).
Kabel Kabel hitam
Kabel USB downloader Minimum I/O
ISP Downloader
system AVR

Potensio
meter

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

D. DATA HASIL PERCOBAAN

Tabel ADC
Tegangan Tampilan LED Nilai digital Nilai digital Nilai digital
No analog (bit7-bit0) LED perhitungan LCD (volt)
(0-5V) (decimal) (desimal)
1 0 0 0 0.0
2 0.5 31 29 0.5
3 1 63 59 1
4 1.5 85 87 1.5
5 2 115 118 1.996
6 2.5 143 146 2.499
7 3 171 177 2.99
8 3.5 207 207 3.5
9 4 231 232 4.00
10 4.38 255 255 4.38
11 5 255 255 5

E. HASIL PRAKTIKUM

Script Program LED:


#include <mega8535.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60

float adcdt;
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

void main(void)
{
PORTB=0x00;
DDRB=0x00;

ACSR=0x80;
SFIOR=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;


ADCSRA=0xA7;
SFIOR&=0x0F;

SPCR=0x00;

TWCR=0x00;

while (1)
{
// Place your code here
adcdt=read_adc(0);
PORTC=adcdt;
}
}

Tampilan LED:

Nilai digital perhitungan


Gambar
(Vdigital = Vukur / Vcc *255)
0V

0/4.38*255 = 0

0.5V

0.5/4.38*255 =29
1V

1/4.38*255 =59

1.5V

1.5/4.38*255 =87

2V

2/4.38*255 =118

2.5V

2.5/4.38*255 =146

3V

3/4.38*255 =177
3.5V

3.5/4.38*255 =207

4V

4/4.38*255 =232

4.38

4.38/4.38*255 =255

Script Program LCD:


#include <mega8535.h>
#include <delay.h>
#include <alcd.h>
#include <stdlib.h>
#define ADC_VREF_TYPE 0x60

int adcdt;
float a;
char tamp[];
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void main(void)
{
PORTB=0x00;
DDRB=0xff;

ACSR=0x80;
SFIOR=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;


ADCSRA=0xA7;
SFIOR&=0x0F;

SPCR=0x00;

TWCR=0x00;

while (1)
{
// Place your code here
adcdt=read_adc(0);
a=(float)adcdt/255*5;
ftoa(adcdt,1,tamp);
lcd_gotoxy(0,0);
lcd_puts(tamp);
lcd_putsf(" V");
delay_ms(5);
}
}

Tampilan LCD:

Besar tegangan 5 volt


Analisa data dari tabel hasil praktikum:
Pada praktikum ANALOG TO DIGITAL CONVERTER (ADC) menggunakan
ATmega8535 yang telah kelompok 7 lakukan dapat kita peroleh bahwa nilai tegangan
dari VCC yaitu sebesar 0-5 volt. Yang berarti range data analog yang dimiliki sekitar 0-
5 volt namun pada praktikum yang kelompok 7 lakukan tegangan input maksimalnya
yaitu sebesar 4.38 karena pada tegangan tersebut lampu LED menyala semua dan pada
praktikum yang kami lakukan di pengaruhi oleh keadaan LED yang tidak stabil atau
LED eror, pada tipe ADC yang digunakan untuk praktikum adalah ADC 8 bit yang
artinya range data digital yang dimiliki adalah 0-255. Contohnya pada percobaan
pertama menggunakan input data analog sebesar 0 volt yang menghasilkan LED
00000000 atau LED mati semua dengan terjadinya konversi. 00000000 mempunyai arti
bahwa semua LED akan pada kondisi input analog yaitu sebesar 0 volt dengan nilai
digitalnya sebesar 0 dan dari hasil perhitungan digitalnya juga sebesar 0. Untuk hasil
konversi data tersebut menggunakan rumus Vdigital = Vukur / Vcc *255. Dan pada
percobaan kedua yaitu pada tegangan 0.5 volt telah dikonversi maka akan menghasilkan
nyala lampu pada LED 00011111 dengan nilai digitalnya yaitu sebesar 31 dan nilai dari
perhitungan digitalnya yaitu sebesar 29. Pada percobaan ketiga dengan tegangan sebesar
1V yang telah dikonversikan dapat menghasilkan nyala lampu LED 00111111 dengan
nilai digital LED nya yaitu sebesar 63 dan nilai dari tegangan digital perhitungan yaitu
sebesar 59. Dalam hal ini terjadi perbedaan antara nilai digital LED dengan nilai digital
perhitungannya dan adanya selisih antara nilai decimal dan perhitungan nilai
desimalmua yaitu sebesar 3. Pada percobaan keempat dengan tegangan sebesar 1.5 volt
yang telah di konversi dapat menghasilkan nyala lampu LED 01010101 dengan nilai
digital LED nya yaitu sebesar 85 dan nilai dari tegangan digital perhitungannya yaitu
sebesar 87 dan adanya selisih antara nilai decimal dan perhitungan nilai desimalnya
yaitu sebesar 2. Pada percobaan ke lima dengan tegangan sebesar 2 volt yang telah di
konversi dapat menghasilkan nyala lampu LED 01110011 dengan nilai digital LED nya
yaitu sebesar 115 dan nilai dari tegangan digital perhitungannya yaitu sebesar 118 dan
adanya selisih antara nilai decimal dan perhitungan nilai desimalnya yaitu sebesar 3.
Pada percobaan ke enam dengan tegangan sebesar 2.5 volt yang telah di konversi dapat
menghasilkan nyala lampu LED 10001111 dengan nilai digital LED nya yaitu sebesar
143 dan nilai dari tegangan digital perhitungannya yaitu sebesar 146 dan adanya selisih
antara nilai decimal dan perhitungan nilai desimalnya yaitu sebesar 3. Pada percobaan
ke tujuh dengan tegangan sebesar 3 volt yang telah di konversi dapat menghasilkan
nyala lampu LED 10101011 dengan nilai digital LED nya yaitu sebesar 171 dan nilai
dari tegangan digital perhitungannya yaitu sebesar 177 dan adanya selisih antara nilai
decimal dan perhitungan nilai desimalnya yaitu sebesar 6. Pada percobaan ke delapan
dengan tegangan sebesar 3.5 volt yang telah di konversi dapat menghasilkan nyala
lampu LED 11001111 dengan nilai digital LED nya yaitu sebesar 207 dan nilai dari
tegangan digital perhitungannya yaitu sebesar 207 dan adanya selisih antara nilai
decimal dan perhitungan nilai desimalnya sama yang berarti teori dengan hasil konversi
yaitu sebesar 0. Pada percobaan ke sembilan dengan tegangan sebesar 4 volt yang telah
di konversi dapat menghasilkan nyala lampu LED 11100111 dengan nilai digital LED
nya yaitu sebesar 231 dan nilai dari tegangan digital perhitungannya yaitu sebesar 232
dan adanya selisih antara nilai decimal dan perhitungan nilai desimalnya yaitu sebesar
1. Pada percobaan ke sepuluh dengan tegangan sebesar 4.38 volt yaitu tegangan
maksimal dari percobaan yang kami lakukan tegangan 4.38 volt ini yang telah di
konversi dapat menghasilkan nyala lampu LED 11111111 dengan nilai digital LED nya
yaitu sebesar 255 dan nilai dari tegangan digital perhitungannya yaitu sebesar 255 dan
adanya selisih antara nilai decimal dan perhitungan nilai desimalnya yaitu sama yang
berarti teori dengan hasil konversi yaitu sebesar 0. Dari teori yang seharusnya nyala
lampu LED pada tegangan 5volt LED akan menyala semua namun dari hasil praktikum
yang kelompok 7 lakukan ketika tegangan 4.38 LED sudah menyala semua dikarenakan
tegangannya berkurang.

F. KESIMPULAN
Pada pengguaan ADC sebagai pengkonversi data dari analog menjadi data yang
digital, hal ini merupakan hal yang diperlukan jika data yang masuk kedalam
mikrokontroler biasanya data dari sensor berupa sinyal analog. Ada beberapa langkah
yang harus dilakukan untuk inisialisasi ADC, yaitu penentuan clock, tegangan referensi,
format data output dan mode pembacaan. Inisialisasi register pada ADC (Analog to
Digital converter) ialah ADMUX (ADC Multiplexer Selection Register), ADCSRA
(ADC Control and Status Register A), dan SFIOR (Special Function IO Register).
Danrumus untuk pehitungan nilai digital dalam bentuk decimal dapa dihitung dengan
rumus sebagai berikut: Vdigital = Vukur / Vcc *255.

G. DAFTAR PUSTAKA
1. Tim AsistenDosen. Modul 6 Menggunakan Analog to Digital Converter dalam
Mikrokontroler ATmega 8535.2017.

Anda mungkin juga menyukai