Anda di halaman 1dari 12

MODUL V

ANALOG TO DIGITAL CONVERTER


Epran Pratama Ginting (119130004)
Asisten : Yogi Candra (13117070)
Tanggal Percobaan : 08/05/2021
EL2109 Praktikum Sistem Mikroprosesor
Laboratorium Teknik Elektro
Institut Teknologi Sumatera

Abstrak—Pada modul V ini berjudul Analog To Digital mengecek kondisi dari rangkaian yang akan dibuat. Pada
Converter yang bertujuan untuk praktikan mampu pembuatan simulasi suatu rangkaian elektronika ini dapat
membuat program yang menggunakan ADC pada AVR digunakan suatu program yang dapat memberikan fasilitas
ATMEGA 8535 untuk mengkonversi input tegangan analog dalam perancangan suatu rangkaian yaitu
menjadi nilai digital serta praktikan mampu membuat program proteus.7 dan CVAVR untuk pembuatan program
program untuk mengubah hasil konversi dalam satuan
yang dibutuhkan oleh rangkaian yang kita buat.
biner menjadi satuan BCD dan dikirimkan ke PC melalui
komunikasi USART. Dalam praktikum ini menggunakan
mikroprosesor ATMEGA8535, sensor LDR, sensor suhu
Adapun tujuan dari percobaan modul 1 ini ialah :
LM35DZ, capasitor, resistor, crystal. Konsep pada
praktikum ini merupakan merubah analog menjadi digital
1. Praktikan mampu membuat program yang menggunakan
dalam artian merubah intensitas menjadi satuan biner dan
ADC pada AVR ATMEGA8535 untuk mengkonversi
dikonversi menjadi satuan BCD dan dikirimkan ke PC agar
input tegangan analog menjadi nilai digital.
output dapat diipahami oleh user. Praktikum tersebut
2. Praktikan mampu membuat program untuk mengubah
dilakukan secara online sehingga praktikan menggunakan
hasil konversi dalam satuan biner menjadi satuan BCD
software proteus untuk merakit rangkaian dan software
dan dikirimkan ke PC melalui komunikasi serial USART
CVAVR untuk mengupload program pada ATMEGA8535.

Kata Kunci : ATMEGA8535, LDR, Proteus, CVAVR


II. LANDASAN TEORI
I. PENDAHULUAN
LDR (Light Dependent Resistant)
Pada umunya dalam dunia elektronika dan instrumentasi
LDR (Light Dependent Resistant) merupakan suatu jenis
hanya ada 2 macam mikrokontroller yang dikenal. Pembagian
resistor yang nilai resistansinya berubah-ubah karena adanya
mikrokontroler ini didasarkan pada kompleksitas instruksi-
intensitas cahaya yang diserap. LDR dibentuk dari Cadium
instruksi yang dapat diterapkan pada mikrokontroler tersebut. Sulfide (CDS) yang mana Cadium Sulfide dihasilkan dari
Adapun dua jenis dari mikrokontroler itu adalah RISC dan serbuk keramik. Prinsip kerja LDR ini pada saat mendapatkan
CISC. RISC merupakan kepanjangan dari Reduced Instruction cahaya maka tahanannya turun, sehingga pada saat LDR
Set Computer. Instruksi yang dimiliki terbatas, tetapi memiliki mendapatkan kuat cahaya terbesar maka tegangan yang
fasilitas yang lebih banyak Sebaliknya, CISC kepanjangan dihasilkan adalah tertinggi. Pada saat gelap atau cahaya redup,
dari Complex Instruction Set Computer. Pada jenis bahan dari cakram pada LDR menghasilkan elektron bebas
mikrokontroler ini Instruksi bisa dikatakan lebih lengkap dengan jumlah yang relatif kecil. Sehingga hanya ada sedikit
dibandingkan dengan RISC tapi CISC memiliki fasilitas elektron untuk mengangkut muatan elektrik. Artinya pada saat
secukupnya. Masing-masing dari jenis mikrokontroler ini cahaya redup LDR menjadi pengantar arus yang kurang baik,
mempunyai keturunan atau keluarga sendiri-sendiri. atau bisa disebut juga LDR memiliki resistansi yang besar pada
Dalam dunia elektronika, penggunaan mikrokontroler saat gelap atau cahaya redup. Pada saat cahaya terang, ada lebih
banyak elektron yang lepas dari bahan semikonduktor tersebut.
dalam pembuatan rangkaian-rangkaian elektronika tidaklah
Sehingga akan ada lebih banyak elektron untuk mengangkut
sulit dalam pengaplikasiannya karna dalam perancangan suatu muatan elektrik. Artinya pada saat cahaya terang LDR menjadi
rangkaian elektronika tidak langsung dibuat dalam bentuk konduktor atau bisa disebut juga LDR memilki resistansi yang
hardwere melainkan dapat dibuat simulasi terlebih dahulu. kecil pada saat cahaya terang. Simbol LDR seperti ditunjukan
Proses pembuatan simulasi ini dilakukan bertujuan untuk pada Gambar 2.1, sedangkan Gambar 2.2 menunjukkan grafik
hubungan antara resistansi dan intensitas cahaya. Karakteristik ke dalam register buffer. Dengan demikian, output digital akan
LDR terdiri dari dua macam yaitu Respon Spektral dan Laju tetap tersimpan sekalipun akan dimulai siklus konversi yang
RecoveryIC Op Amp 741. LDR digunakan untuk mengubah baru.[2]
energi cahaya menjadi energi listrik. Saklar cahaya otomatis
adalah salah satu contoh alat yang menggunakan LDR. Akan
tetapi karena responsnya terhadap cahaya cukup lambat, LDR
tidak digunakan pada situasi dimana intesitas cahaya berubah III. METODOLOGI
secara drastis. [1]
Alat dan Bahan

• Software CVAVR
• Software Proteus
• PC/Laptop

Langkah Kerja

1. Menghitung suhu pada LM35Z

Siapkan alat dan bahan yang digunakan (starter-kit AVR


DT-Combo,USBasp, PC/Laptop).
Konversi analog ke digital

Analog to Digital Converter (ADC) adalah sebuah piranti yang


dirancang untuk mengubah sinyal-sinyal analog menjadi
bentuk sinyal digital. IC ADC 0804 dianggap dapat memenuhi
kebutuhan dari rangkaian yang akan dibuat. IC jenis ini bekerja Buka software yang digunakan
secara cermat dengan menambahkan sedikit komponen sesuai
dengan spesifikasi yang harus diberikan dan dapat
mengkonversikan secara cepat suatu masukan tegangan. Hal-
hal yang juga perlu diperhatikan dalam penggunaan ADC ini
adalah tegangan maksimum yang dapat dikonversikan oleh
ADC dari rangkaian pengkondisi sinyal, resolusi, pewaktu Pastikan semua sambungan sudah terkoneksi
eksternal ADC, tipe keluaran, ketepatan dan waktu
konversinya. Ada banyak cara yang dapat digunakan untuk
mengubah sinyal analog menjadi sinyal digital yang nilainya
proposional. Jenis ADC yang biasa digunakan dalam
perancangan adalah jenis Successive Approximation Insatl driver USB pada laptop
Convertion (SAR) atau pendekatan bertingkat yang memiliki
waktu konversi jauh lebih singkat dan tidak tergantung pada
nilai masukan analognya atau sinyal yang akan diubah.
Sambungkan driver USB asp pada avr dan hubungkan
ke laptop

Lakukan panduan praktikum dengan hati hati

Selesai
Prinsip kerja dari konverter A/D adalah semua bit-bit diset
kemudian diuji, dan bilamana perlu sesuai dengan kondisi yang
telah ditentukan. Dengan rangkaian yang paling cepat, konversi Untuk percoban kedua dna ketiga dilakukan hal yang sama .
akan diselesaikan sesudah 8 clock, dan keluaran D/A
merupakan nilai analog yang ekivalen dengan nilai register
SAR. Apabila konversi telah dilaksanakan, rangkaian kembali
mengirim sinyal selesai konversi yang berlogika rendah. Sisi
turun sinyal ini akan menghasilkan data digital yang ekivalen
IV. HASIL DAN ANALISIS (4MHz)
UCSRA=0x00;
Rangkaian Penguat Non-Inverting UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
#include <mega8535.h> UBRRL=0x19;
#include <delay.h> while (1)
#include <string.h> {
#include <stdio.h> for (i=0; i<= strlenf(string)-1; i++)
unsigned long int hasil; {
//Fungsi untuk mengubah input biner menjadi bentuk BCD temp=string[i];
unsigned long int bin2BCD (unsigned int input) putchar(temp); //Kirim temp ke USART
{ }
hasil=((input/10000)*65536)+ hasil=read_adc(adc_input); //Baca tegangan pada pin ADC1
(((input%10000)/1000)*4096)+ hasil=hasil*49; //Hasil pembacaan dikalikan
((((input%10000)%1000)/100)*256)+ dengan 1 LSB
(((((input%10000)%1000)%100)/10)*16)+ hasil=bin2BCD(hasil); //Konversi hasil ADC ke format BCD
((((input%10000)%1000)%100)%10); temp=(hasil>>16 & 0x0F)+0x30; //Ubah format BCD ke
return(hasil); ASCII
} putchar(temp);
6 putchar(',');
//Tegangan referensi : pin AREF //Kiirim ASCII ke USART
//Hasil konversi ADC : right adjusted 7
#define ADC_VREF_TYPE 0x00 temp=(hasil>>12 & 0x0F)+0x30;
//Fungsi untuk membaca tegangan input ADC (konversi ADC) putchar(temp);
unsigned int read_adc (unsigned char adc_input) temp=(hasil>>8 & 0x0F)+0x30;
{ putchar(temp);
unsigned char temp; putchar(' ');
unsigned int data_adc; putchar('V');
ADMUX=adc_input|ADC_VREF_TYPE; temp=(hasil>>4 & 0x0F)+0x30;
//Start konversi ADC temp=(hasil & 0x0F)+0x30;
ADCSRA|=0x40; //ADCSRA di-OR-kan dengan 40H putchar(0x0D); //Kirim ENTER pada terminal untuk baris
(ADCSRA=ADCSRA|0x40) baru
//Tunggu sampai konversi ADC selesai (flag ADIF) putchar(0x0A);
while ((ADCSRA & 0x10)==0); delay_ms(1000);
ADCSRA|=0x10; //Clear flag ADIF }
data_adc=0x0000; }
temp=ADCL;
data_adc=ADCH; Analisis
//Baca ADC Data Register LOW Pada percobaan ini hasil yang ditampilkan di ADC 0 sebesar
//Baca ADC Data Register HIGH 27,44 derajat celcius Ketika push button ditekan maka hasilnya
data_adc<<=8; //Geser data_adc HIGH ke kiri 8 kali akan berenti dan Ketika push button dilepas maka hasilnya akan
data_adc|=temp; terus berjalan seiring perubahan suhu.
xxxx
return data_adc; MENGUKUR TEGANGAN OUTPUT LDR
//Hasil konversi ADC= 0000 00xx xxxx
//Right adjusted #include
} #include
flash unsigned char string[]= {"Hasil pada ADC1 : "}; #include
void main(void) #include
{ <mega8535.h>
unsigned char i,temp,adc_input=0x01; <delay.h>
DDRA=0x00; <string.h>
//Tegangan referensi ADC : pin AREF <stdio.h>
ADMUX=ADC_VREF_TYPE; unsigned long int hasil;
//Inisialisai ADC (Enable ADC) //Fungsi untuk mengubah input biner menjadi bentuk BCD
//Frekuensi clock ADC : 31.250 kHz (4MHz/128) unsigned long int bin2BCD (unsigned int input)
ADCSRA=0x87; {
SFIOR&=0xEF; //Sumber trigger : Free Running mode hasil=((input/10000)*65536)+
// Inisialisasi USART 8-N-1 dengan baud rate 9600 bps (((input%10000)/1000)*4096)+
((((input%10000)%1000)/100)*256)+ dengan 1 LSB
(((((input%10000)%1000)%100)/10)*16)+ hasil=bin2BCD(hasil); //Konversi hasil ADC ke format BCD
((((input%10000)%1000)%100)%10); temp=(hasil>>16 & 0x0F)+0x30; //Ubah format BCD ke
return(hasil); ASCII
} putchar(temp);
6 putchar(',');
//Tegangan referensi : pin AREF //Kiirim ASCII ke USART
//Hasil konversi ADC : right adjusted 7
#define ADC_VREF_TYPE 0x00 temp=(hasil>>12 & 0x0F)+0x30;
//Fungsi untuk membaca tegangan input ADC (konversi ADC) putchar(temp);
unsigned int read_adc (unsigned char adc_input) temp=(hasil>>8 & 0x0F)+0x30;
{ putchar(temp);
unsigned char temp; putchar(' ');
unsigned int data_adc; putchar('V');
ADMUX=adc_input|ADC_VREF_TYPE; temp=(hasil>>4 & 0x0F)+0x30;
//Start konversi ADC temp=(hasil & 0x0F)+0x30;
ADCSRA|=0x40; //ADCSRA di-OR-kan dengan 40H putchar(0x0D); //Kirim ENTER pada terminal untuk baris
(ADCSRA=ADCSRA|0x40) baru
//Tunggu sampai konversi ADC selesai (flag ADIF) putchar(0x0A);
while ((ADCSRA & 0x10)==0); delay_ms(1000);
ADCSRA|=0x10; //Clear flag ADIF }
data_adc=0x0000; }
temp=ADCL;
data_adc=ADCH; Analisis
//Baca ADC Data Register LOW Pada percobaan ini hasilnya ada di ADC 1 sebesar 4,65 volt jika
//Baca ADC Data Register HIGH push button ditekan maka hasilnya akan berhenti dan jika push
data_adc<<=8; //Geser data_adc HIGH ke kiri 8 kali button dilepas maka hasilnya akan terus berjalan mengupdate
data_adc|=temp; data
xxxx
return data_adc; Kombinasi Percobaan 1 dan 2
//Hasil konversi ADC= 0000 00xx xxxx
//Right adjusted #include <mega8535.h>
} #include <delay.h>
flash unsigned char string[]= {"Hasil pada ADC1 : "}; #include <string.h>
void main(void) #include <stdio.h>
{ unsigned long int hasil1;
unsigned char i,temp,adc_input=0x01; unsigned long int bin2BCD1 (unsigned int input1)
DDRA=0x00; {
//Tegangan referensi ADC : pin AREF hasil1=((input1/10000)*65536)+(((input1%10000)/1000)*409
ADMUX=ADC_VREF_TYPE; 6)+((((input1%10000)%1000)/100)*256)+(((((input1%10000)
//Inisialisai ADC (Enable ADC) %1000)%100)/10)*16)+((((input1%10000)%1000)%100)%10
//Frekuensi clock ADC : 31.250 kHz (4MHz/128) );
ADCSRA=0x87; return(hasil1);
SFIOR&=0xEF; //Sumber trigger : Free Running mode }
// Inisialisasi USART 8-N-1 dengan baud rate 9600 bps unsigned long int hasil;
(4MHz) //Fungsi untuk mengubah input biner menjadi bentuk BCD
UCSRA=0x00; unsigned long int bin2BCD (unsigned int input)
UCSRB=0x18; {
UCSRC=0x86; hasil=((input/10000)*65536)+(((input%10000)/1000)*4096)+
UBRRH=0x00; ((((input%10000)%1000)/100)*256)+(((((input%10000)%100
UBRRL=0x19; 0)%100)/10)*16)+((((input%10000)%1000)%100)%10);
while (1) return(hasil);
{ }
for (i=0; i<= strlenf(string)-1; i++) //Tegangan referensi : pin AREF
{ //Hasil konversi ADC : right adjusted
temp=string[i]; #define ADC_VREF_TYPE 0x00
putchar(temp); //Kirim temp ke USART #define ADC_VREF_TYPE1 0x00
} //Fungsi untuk membaca tegangan input ADC (konversi ADC)
hasil=read_adc(adc_input); //Baca tegangan pada pin ADC1 unsigned int read_adc (unsigned char adc_input)
hasil=hasil*49; //Hasil pembacaan dikalikan {
unsigned char temp; {
unsigned int data_adc; temp=string[i];
ADMUX=adc_input|ADC_VREF_TYPE; putchar(temp); //Kirim temp ke USART
//Start konversi ADC }
ADCSRA|=0x40; hasil=read_adc(adc_input); //Baca tegangan pada pin ADC0
//Tunggu sampai konversi ADC selesai (flag ADIF) hasil=hasil*49; //Hasil pembacaan dikalikan dengan 1 LSB
while ((ADCSRA & 0x10)==0); hasil=bin2BCD(hasil); //Konversi hasil ADC ke format BCD
ADCSRA|=0x10; //Clear flag ADIF temp=(hasil>>16 & 0x0F)+0x30; //Ubah format BCD ke
data_adc=0x0000; ASCII
temp=ADCL; //Baca ADC Data Register LOW temp=(hasil>>12 & 0x0F)+0x30;
data_adc=ADCH;//Baca ADC Data Register HIGH putchar(temp); //Kiirim ASCII ke USART
data_adc<<=8; //Geser data_adc HIGH ke kiri 8 kali temp=(hasil>>8 & 0x0F)+0x30;
data_adc|=temp; //Hasil konversi ADC= 0000 00xx xxxx xxxx putchar(temp);
return data_adc; //Right adjusted putchar(',');
} temp=(hasil>>4 & 0x0F)+0x30;
unsigned int read_adc1 (unsigned char adc_input1) putchar(temp);
{ temp=(hasil & 0x0F)+0x30;
unsigned char temp1; putchar(temp);
unsigned int data_adc1; putchar(' ');
ADMUX=adc_input1|ADC_VREF_TYPE1; putchar('C');
//Start konversi ADC putchar(0x0D);//Kirim ENTER pada terminal untuk baris baru
ADCSRA|=0x40; //ADCSRA di-OR-kan dengan 40H putchar(0x0A);
(ADCSRA=ADCSRA|0x40); delay_ms(1000);
//Tunggu sampai konversi ADC selesai (flag ADIF) for (j=0; j<= strlenf(string1)-1; j++)
while ((ADCSRA & 0x10)==0); {
ADCSRA|=0x10; //Clear flag ADIF temp1=string1[j];
data_adc1=0x0000; putchar(temp1); //Kirim temp ke USART
temp1=ADCL; }
data_adc1=ADCH; hasil1=read_adc1(adc_input1); //Baca tegangan pada pin
//Baca ADC Data Register LOW ADC1
//Baca ADC Data Register HIGH hasil1=hasil1*49; //Hasil pembacaan dikalikandengan 1 LSB
data_adc1<<=8; //Geser data_adc HIGH ke kiri 8 kali hasil1=bin2BCD1(hasil1); //Konversi hasil ADC ke format
data_adc1|=temp1; BCD
return data_adc1; temp1=(hasil1>>16 & 0x0F)+0x30; //Ubah format BCD
//Hasil konversi ADC= 0000 00xx xxxx keASCII
//Right adjusted putchar(temp1);
} putchar(',');
flash unsigned char string[]= {"Hasil pada ADC0 : "}; temp1=(hasil1>>12 & 0x0F)+0x30;
flash unsigned char string1[]= {"Hasil pada ADC1 : "}; putchar(temp1);
void main(void) temp1=(hasil1>>8 & 0x0F)+0x30;
{ putchar(temp1);
unsigned char i,temp,adc_input=0x00; putchar(' ');
unsigned char j,temp1,adc_input1=0x01; putchar('V');
DDRA=0x00; temp1=(hasil1>>4 & 0x0F)+0x30;
//Tegangan referensi ADC : pin AREF temp1=(hasil1 & 0x0F)+0x30;
ADMUX=ADC_VREF_TYPE; putchar(0x0D); //Kirim ENTER pada terminal untuk barisbaru
ADMUX=ADC_VREF_TYPE1; putchar(0x0A);
//Inisialisai ADC (Enable ADC) delay_ms(1000);
//Frekuensi clock ADC : 31.250 kHz (4MHz/128) }
ADCSRA=0x87; }
SFIOR&=0xEF; //Sumber trigger : Free Running mode
// Inisialisasi USART 8-N-1 dengan baud rate 9600 bps(4MHz) Analisis
UCSRA=0x00; Pada percobaan ini akan mengeluarkan hasil ADC 0 dan ADC
UCSRB=0x18; 1 secara bersamaan dan jika push button ditekan maka hasil
UCSRC=0x86; akan berhenti mengupdate hasil, jika push button dilepas, maka
UBRRH=0x00; hasil akan terus di update.
UBRRL=0x19;
while (1)
{
for (i=0; i<= strlenf(string)-1; i++)
V. SIMPULAN

1. Pada percobaan ini satuan biner dikonversi menjadi satuan


BCD
2. Penggunaan ADC dan AVR pada modul ini digunakan
untuk mengkonversi nilai suhu dan tegangan
3. ADC merupakan adalah sebuah piranti yang dirancang
untuk mengubah sinyal-sinyal analog menjadi bentuk
sinyal digital

VI. REFERENSI

[1] Subandono, “Perangkat Elektronika”, PEDC Bandung,


1985
[2] Setiawan, Iwan, “Buku Ajar Sensor Dan Transduser”,
Universitas Diponegoro, 2009.
Lampiran
Link_video:
https://drive.google.com/drive/folders/1SowoGaL4BwhopBZ_f05C69hZ3dAU_hdD?usp=sharing

Anda mungkin juga menyukai