• Tidak ada hasil yang ditemukan

MODUL 8 Analog Digital Converter (ADC)

N/A
N/A
Protected

Academic year: 2021

Membagikan "MODUL 8 Analog Digital Converter (ADC)"

Copied!
8
0
0

Teks penuh

(1)

1 | P o l i t e k n i k J a m b i

MODUL 8

Analog Digital Converter (ADC)

AVR ATMega16 merupakan tipe AVR yang telah dilengkapi dengan 8 saluran ADC internal dengan resolusi 10 bit. Dalam mode operasinya, ADC dapatdi konfigurasi, baik single ended input maupun differential input. Selain itu, ADC ATMega16 memiliki konfigurasi pewaktuan, tegangan referensi, mode operasi, dan kemampuan filter derau (noise) yang amat fleksibel sehingga dapat dengan mudah disesuaikan dengan kebutuhan dari ADC itu sendiri. ADC pada ATMega16 memiliki fitur-fitu rantara lain :

• Resolusi mencapai 10-bit • Akurasi mencapai •} 2 LSB • Waktu konversi 13-260μs

• 8 saluran ADC dapat digunakan secara bergantian

• Jangkauan tegangan input ADC bernilai dari 0 hingga VCC • Disediakan 2,56V tegangan referensi internal ADC

• Mode konversi kontinyu atau mode konversi tunggal • Interupsi ADC complete

• Sleep Mode Noise canceler

Proses inisialisasi ADC meliputi proses penentuan clock, tegangan referensi, formal data keluaran, dan modus pembacaan. Register-register yang perlu diatur adalah sebagai berikut: Register Terkait ADC

ADC Control and Status Register A – ADCSRA ADCSRA

ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

R/W R/W R/W R/W R/W R/W R/W R/W 0 0 0 0 0 0 0 0 R/W Initial Value Keterangan

ADEN: ADC Enable

1 = adc enable, 0 = adc disable ADSC: ADC Start Conversion

1 = mulai konversi, 0 = konversi belum dilakukan ADATE: ADC Auto Trigger Enable

1 = auto trigger diaktifkan, trigger berasal dari sinyal yang dipilih

(2)

2 | P o l i t e k n i k J a m b i ADIF: ADC Interrupt Flag

disetke 1, jika konversi ADC selesai dan data register ter-update. ADIF akan diset 1 secara hardware jika Interrupt ADC atau bit ADIE di aktifkan.

ADIE: ADC Interrupt Enable

diset 1 dan Interrupt ADC akan aktif jika Bit I (Interrupt Enable) pada register SREG diaktifkan atau dapat menggunakan subrutinsei() untuk meng-enablekan Interrupt.

ADPS2:0: ADC Prescaler Select Bits

Bit pengatur clock ADC, faktorpembagi 0 … 7 = 2, 4, 8, 16, 32, 64, 128. ADPS2 ADPS1 ADPS0 Division Factor

0 0 0 1 0 0 1 2 0 1 0 4 0 1 1 8 1 0 0 16 1 0 1 32 1 1 0 64 1 1 1 128

ADMUX (ADC Multiplexer)

ADMUX

REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

R/W R/W R/W R/W R/W R/W R/W R/W

0 0 0 0 0 0 0 0

R/W Initial Value

REFS1:0: Reference Selection Bits

REFS1 REFS2 Voltage Reference Selection 0 0 AREF, Internal Vref Turned Off

0 1 VCC with external capacitor at AREF Pin 1 0 Reserved

1 1 Internal 2.56 V Voltage Reference With External Capasitor at Aref

ADLAR: ADC Left Adjust Result

Untuk setting format data hasil konversi ADC. ADLAR = 0

- - - ADC9 ADC8 ADCH

ADCL ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0

(3)

3 | P o l i t e k n i k J a m b i ADLAR = 1

ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCH ADCL

ADC1 ADC0 - - -

-MUX4:0: ADC Channel Selection

Special Function IO Register-SFIOR

SFIOR merupakan register 8 bit pengatur sumber picu konversi ADC,

Apakah dari sumber picu eksternal atau dari sumber picu internal, susunannya seperti yang terlihat pada gambar berikut:

ADTS2 ADTS1 ADTS0 ADHSM ACME PUD PSR2 PSR10

ADTS[0...2] : Pemilihan trigger (pengatur picu) untuk konversi ADC, bit-bit ini akan berfungsi jika bit ADATE pada register ADCSRA bernilai 1. Konfigurasi bit ADTS[0...2] dapat dilihat pada table berikut:

(4)

4 | P o l i t e k n i k J a m b i

ADTS2 ADTS1 ADTS0 Trigger Source

0 0 0 Free Running (manual) 0 0 1 Analog Comparator

0 1 0 External Interrupr Request 0 0 1 1 Timer/Counter0 Compare Match 1 0 0 Timer/Counter0 Overflow

1 0 1 Timer/Counter Compare Match B 1 1 0 Timer/Counter1 Overflow

1 1 1 Timer/Counter1 Capture Event Register ADCW

merupakan register data yang menyimpan data hasil konversi ADC.

Untuk memilih channel ADC mana yang digunakan(single ended atau diferensial),dapat dilakukan dengan mengatur nilai MUX4 :0. Misalnya channel ADC0 sebagai input ADC, makaMUX4 :0 diberinilai 00000B, informasi lebih lengkap dapat

di lihat pada datasheet.

Tegangan referensi ADC dapat dipilih antara lain pada pin AREF, pin AVCC atau menggunakan tegangan referensi internal sebesar 2.56V.

Setelah konversi selesai (ADIF high), hasil konversi dapat diperoleh pada register hasil (ADCL, ADCH). Untuk konversi single ended, hasilnya ialah

Dimana VIN ialah tegangan pada input yang dipilih dan VREF merupakan tegangan referensi. Jika hasil ADC =000H, maka menunjukkan tegangan input sebesar 0V, jika hasil ADC=3FFH

menunjukkan tegangan input sebesar tegangan referensi dikurangi 1 LSB.

Sebagai contoh, jika diberikan VIN sebesar 0.2V dengan VREF 5V, makahasil konversi ADC ialah 41

(5)

5 | P o l i t e k n i k J a m b i

AplikasiVoltmeter Digital dan Display LCD

Komponen Yang Digunakan :

(6)

6 | P o l i t e k n i k J a m b i

Program Aplikasi ADC - Voltmeter Digital

#include <mega16.h> #include <delay.h> #include <stdlib.h> #include <string.h>

typedef unsigned char ubyte; typedef unsigned int uint; ubyte adc_channel = 0; ubyte RS0E0 = 0b00000000; ubyte RS0E1 = 0b00000100; ubyte RS1E0 = 0b00000001; ubyte RS1E1 = 0b00000101; ubyte str_adc[16]; float vin; float vref = 5; uint read_adc(); void init_port(); void init_lcd(); void init_adc(); void kirim_karakter(ubyte); void kirim_instruksi(ubyte); void main() { Uint adc =0; ubyte i = 0; init_port(); init_lcd(); init_adc(); while(1){ adc = read_adc();

vin = (float)adc * vref/1024; ftoa(vin,2,str_adc); kirim_instruksi (0x01); kirim_instruksi (0x80); for(i = 0; i <strlen(str_adc);i++){ if (str_adc[i]!=0){ kirim_karakter(str_adc[i]); } } kirim_karakter(' '); kirim_karakter('v'); kirim_karakter('o'); kirim_karakter('l'); kirim_karakter('t'); delay_ms(100); } }

(7)

7 | P o l i t e k n i k J a m b i uintread_adc() {

delay_ms(5);

// Start the AD conversion ADCSRA|=0b01000000;

// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);

ADCSRA|=0b00010000; //ADIF diset1 , conversion stop return ADCW; } voidinit_port(){ DDRB = 0xFF; DDRC = 0xFF; DDRD = 0xFF; DDRA = 0x00; } voidinit_adc(){ ADMUX = 0b00000000 | adc_channel ; ADCSRA = 0b10000011; } voidinit_lcd(){ kirim_instruksi(0x01); kirim_instruksi(0x38); kirim_instruksi(0x06); kirim_instruksi(0x0C); kirim_instruksi(0x80); } voidkirim_karakter(ubyte karakter){ PORTC = RS1E0; PORTD = karakter; delay_ms(1); PORTC = RS1E1; delay_ms(1); PORTC = RS1E0; } voidkirim_instruksi(ubyte instruksi){ PORTC = RS0E0; PORTD = instruksi; delay_ms(1); PORTC = RS0E1; delay_ms(1); PORTC = RS0E0; }

(8)

8 | P o l i t e k n i k J a m b i

Langkah-langkah membaca data ADC (mode free running channel 0) :

1. Atur register ADMUX = 0x00sebagai proses inisialisasi ADC

REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

0 0 0 0 0 0 0 0

REFS1 =0 dan REFS0 = 0

Voltage Reference :AREF, Internal Vref Turned Off ADLAR = 0

- - - ADC9 ADC8 ADCH

ADCL

ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0

MUX4:MUX0 = 00000

ADC single Ended Input ADC channel 0

2. Kemudian atur nilai register ADCSRA = 0b10000011

ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

1 0 0 0 0 0 1 1

ADEN: 1 => ADC Enable

ADSC: 0 =>KonversiBelumdilakukan ADATE: 0 => Auto Trigger disable

ADIF: 0 =>Konversibelumdilakukanflag status masih 0 ADIE: 0 =>ADC Interrupt Disable

ADPS2-0: 011 =>ADC Prescalerfactor pembagi clock = 8

3. Atur bit ADSC (bit 6)pada register ADCSRA menjadi logika “1” untuk memulai

konversi data ADC , proses ini dilakukan menggunakan perintahberikut :

ADCSRA |= 0b01000000 ( register ADCSRA di-OR kandengan 0b01000000)

4. Tunggu sampai bit ADIF (bit 4) berubah menjadi logika “1” sebagai tanda konversi

data ADC selesai.

5. Setelah itu set bit ADIF(bit 4) ke logika “1” agar konversi data berhenti (stop).

Proses ini dilakukan dengan perintahberikut:

ADCSRA |= 0b00010000 ( register ADCSRA di-OR kandengan 0b00010000) 6. Kemudian data hasil konversi (10 bit) akan tersimpan pada register ADCW 7. Nilaitegangan analog dapat diperoleh dengan menggunakan rumus berikut:

( )

Referensi

Dokumen terkait

memahami pokok bahasan Lingkaran yaitu: (1) Sebagian besar siswa tidak. dapat mengenali dan menggunakan hubungan antar ide-ide

Berdasarkan Tabel 2.4 diketahui bahwa montmorillonit merupakan jenis lempung yang sangat baik digunakan untuk filler anorganik dalam pembuatan membran komposit karena

Analisis ICRA Indonesia atas perusahaan farmasi mencakup pengetahuan prospek di pasar utama dimana perusahaan beroperasi (atau berencana untuk beroperasi), kemampuan

Setelah membaca teks dan melakukan percobaan, siswa mampu menulis laporan tentang cara membuat larutan anti nyamuk sebagai salah satu upaya pencegahan penyakit menular dengan

Pada kasus tersebut prinsip etika profesi yang dilanggar adalah tanggung jawab prolesi, dimana seharusnya melakukan pertanggung jawaban sebagai profesional yang

Kekasaran permukaan resin komposit ditentukan oleh ukuran, kekerasan dan jumlah partikel filler, yang juga mempengaruhi sifat mekanik bahan.. Parameter luas kekasaran permukaan

Sasaran Peningkatan aksesibilitas masyarakat terhadap peradilan (acces to justice) pada tahun 2015 secara keseluruhan telah tercapai dengan baik sesuai dengan

Positioning perusahaan dari laporan rugi laba dan laporan neraca tahun 2015- 2016 pada PT INKA Multi Solusi Trading Madiun berada pada kondisi likuid dan solvable,