Wednesday, December 3, 2008

Mengenal ADC (1)

ADC (Analog to Digital Converter) adalah fitur paling populer dari ATmega 8535. Dengan adanya fitur ini kita tidak perlu menggunakan ADC0804 untuk membaca sinyal analog. ATmega 8535 memiliki 8 channel input ADC. Hasil pembacaan ADC beresolusi maksimum 10 bit (hmmm... cukup presisi. Biasanya saya hanya menggunakan 8 bit biar gak bingung ngitungnya.. He3...)

Register-Register yang mempengaruhi ADC:

Berikut adalah daftar register untuk menentukan setting ADC

Register ADMUX

Register ADMUX digunakan untuk:

menentukan tegangan referensi dari ADC

menentukan format data hasil konversi ADC

menentukan channel ADC yg akan digunakan (Ingat!! ATmega 8535 memiliki 8 channel ADC )

Berikut isi dari register ADMUX:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0

 

Bit 7 (REFS1) dan bit 6(REFS0) digunakan untuk menentukan tegangan referensi ADC.

Bit 7 Bit 6 Tegangan Referensi
0 0

pin AREF, internal Vref di matikan (off)

0 1

pin AVCC, dengan kapasitor eksternal pada  pin AREF

1 0 tidak digunakan

1

1

tegangan referensi internal 2,56 V dengan kapasitor eksternal pada pin AREF

 

Bit 5 (ADLAR) digunakan untuk menentukan format data hasil konversi.

Isi bit ini dengan 1 (ADLAR=1)jika menggunakan resolusi 8 bit

 

Bit 3..0 (MUX3..0) digunakan untuk menentukan channel ADC

 

Bit 3 Bit 2 Bit 1 Bit 0 Channel ADC
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7

 

Contoh:

 

      tegangan referensi  ADC menggunakan AVCC,  mode 10 bit, membaca channel 1

 

image

maka programnya:

       ADMUX=0x41;

 

    

Register ADCSRA

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0

 

Bit 7 (ADEN) untuk mengaktifkan ADC. ADEN=0 disable / ADEN=1 enable

 

Bit 6 (ADSC) untuk memulai (start) pembacaan ADC.

 

Bit 5 (ADFR)  jika ADFR=1 free running mode , ADFR=0 single conversion

 

Bit 4 (ADIF) bit penanda interupsi. Bernilai 1 saat konversi ADC selesai.

 

Bit 3 (ADIE) berfungsi untuk mengaktifkan interupsi ADC. ADIE=1 enable / ADIE=0 disable

 

Bit 2..0(ADPS2..0) menentukan clock ADC

  Bit 2 Bit 1 Bit 0 Clock
  0 0 0 XTAL / 2
  0 0 1 XTAL / 2
  0 1 0 XTAL / 4
  0 1 1 XTAL / 8
  1 0 0 XTAL /16
  1 0 1 XTAL / 32
  1 1 0 XTAL / 64
  1 1 1 XTAL / 128

 

 

Register ADCL dan ADCH

 

merupakan 2 register tempat menampung hasil pembacaan ADC

 

untuk mengambil nilai nya gunakan ADCW(mode 10 bit) dan ADCH (mode 8 bit)

 

misal:

      adc_data=ADCH; //memasukkan nilai ADC mode 8bit ke variable adc_data

 

 

Saat akan menggunakan ADC, hal yang pertama harus di lakukan adalah ADC initialization / inisialisasi ADC (menentukan mode ADC).

contoh inisialisasi ADC:

// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=0x40;
ADCSRA=0x85;
SFIOR&=0xEF;

nyampe sini dulu ya  kenalan ma ADCnya,,,  ntar dismbung lagi ...  ngantuk berat nwech.....^_^

 

any questions?? post comment on this blog: http:\\avrku.blogspot.com

or send email to: zigan@ymail.com

CodeVisionAVR C Compiler is copyright by Pavel Haiduc, HP InfoTech s.r.l.
AVR is a registered trademark of Atmel Corporation

 

 

 

No comments:

Post a Comment