Professional Documents
Culture Documents
sudah built-in dalam chip. Atmega8535 memiliki resolusi ADC 10-bit dengan 8channel input
dan mendukung 16macam penguat beda. ADC ini bekerja dengan teknik successive
approximation. Rangkaian internal ADC ini memiliki catu daya tersendiri yaitu pin AVCC.
Tegangan AVCC harus sama dengan VCC ± 0.3 Volt (datasheet pada lampiran 1).
Vin.1024
ADC=
Vref
dimana Vin adalah tegangan masukan pada pin yang dipilih sedangkan Vref adalah
ADC terdiri atas rangkaian Sample and Hold yang menjamin tegangan masukan ke ADC
di tahan pada level konstan saat konversi. Block diagram ADC terlihat di Gambar 2.45 berikut.
Inisialisasi ADC
Untuk menggunakan ADC, haruslah diinisialisasi terlebih dahulu. Proses inisialisasi ADC
meliputi proses penentuan clock, tegangan referensi, format output, dan mode pembacaan.
Register yang perlu diset nilainya adalah ADMUX (ADC Multiplexer Selection Register)
,ADCSRA ( ADC Control and Status Reister A), SFIOR ( Spesial Function IO Register).
Inisialisasi ADMUX
ADMUX merupakan register 8 bit yang berfungsi menentukan tegangan referensi ADC,
format data Output, dan saluran ADC yang digunakan. Konfigurasinya seperti gambar berikut.
Gambar Register ADMUX
A. REFS [1..0] merupakan bit pengatur teangan referensi ADC ATmega16 Memiliki nilai
awal 00 sehingga referensi teganan berasal dari pin AREF,jika nilai REFS 01 maka nilai
tegangan referensi diambil dari pin AVCC,jika nilai REFS 11 berarti nilai teganan
B. ADLAR merupakan bit pemilih mode data keluaran ADC. Bernilai awal 0 sehingga 2 bit
tertinggi data hasil konfersinya berada diregister ADCH dan 8bit sisanya berada di
register ADCL,seperti ditujukkan gambar 2.4(b) dan jika bernilai 1,maka hasilnya pada
gambar 2.4(c).
C. MUX [ 4..0] merupakan bit pemilih saluran pembacaan ADC. Bernilai awal 0000. Untuk
mode single ended input,MUX[4..0] bernilai dari 0000-00111. Berikut tabel konfigurasi
bit MUX
Tabel pemilihan bit saluran pembacaan ADC
Inisialisasi ADCSRA
ADCSRA merupakan register 8 bit yang berfungsi melakukan manajemen sinyal kontrol
a) ADEN merupakan bit pengatur aktivasi ADC. Berawal dari 0.Jika 1, maka ADC Aktif.
b) ADSC merupakan bit penanda mulainya konversi ADC. Bernilai awal 0,selama konvesi
c) ADATE merupakan bit pengatur aktivasi picu otomatis operasi ADC.Bernilai awal 0. Jika
1,operasi ADC akan dimulai pada saat transisi positif sinyal picu yang dipilih. Pemilihan
d) ADIF merupakan bit penanda akhir suatu konversi ADC. Bernilai awal 0. Jika bernilai
e) ADIE merupakan bit pengatur aktivasi interupsi yang berhubungan denan akhir konversi
f) ADPS[2..0] merupakan bit pengatur clock ADC. Bernilai awal 000. Detail nilai bit dapat
Register SFIOR (Special Function IO Register) merupakan register 8 bit pengatur sumber
picu konversi ADC, apakah dari picu internal atau dari picu eksternal. Susunannya sebagai
berikut :
ADTS[2..0] merupakan bit pengatur picu eksternal operasi ADC. Hanya berfungsi jika bit
ADATE pada register ADCSRA bernilai 1. Bernilai awal 000 sehingga ADC bekerja mode free
running dan tidak ada interupsi yang dihasilkan. Detailnya dapat ditujukkan tabet berikut.
Kali ini kita akan juga akan belajar menggunakan codeWizard CvAVR. Dengan
menggunakan codewizard ini mempermudah kita dalam pengaturan register pada program kita.
Atur micro dan clock yang digunakan, trus enable adc, ni di contoh qt pake adc 10bit, tapi uC
Lanjutnya, pilih file >> generate, save and exit >> save dah dulu gan
Bis tu jadi deh program kita, eitz belum selesei tapi.. ya tinggal gunain aja tu fungsi2nya.
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 4/24/2010
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega8535
Program type : Application
Clock frequency : 12.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
*****************************************************/
#include <mega8535.h>
#define ADC_VREF_TYPE 0x40
void main(void)
{
PORTA=0x00;
DDRA=0x00;
// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: On
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x84;
SFIOR&=0xEF;
SFIOR|=0x10;
while (1)
{
// Place your code here
};
}
ni ada contoh program baca adc n ditampilin di lcd. Dari program di atas Cuma dimasukin dan
diubah dikid
#include <mega8535.h>
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ; //PORTC
#endasm
#define ADC_VREF_TYPE 0x40
char lcd_buffer[33];
unsigned int dataADC;
void inisialisasi_LCD()
{// LCD module initialization
lcd_init (16);
lcd_gotoxy (0,0);
lcd_putsf (" Diploma ");
lcd_gotoxy (0,1);
lcd_putsf (" T.Elektro UGM ");
delay_ms (1000);
}
void inisialisasi_ADC()
{
// ADC initialization
// ADC Clock frequency: 750,000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: On
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x84;
SFIOR&=0xEF;
SFIOR|=0x10;
}
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
inisialisasi_ADC();
inisialisasi_LCD();
while(1)
{ dataADC=read_adc (0); //baca adc0 10bit (0-1024)
lcd_clear ();
lcd_gotoxy (0,0);
sprintf (lcd_buffer,"ADC0=%i",dataADC);
lcd_puts (lcd_buffer);
delayms (100);
};
}
ADC pada mikrokontroler ini diakses 10bit, maka resolusi setiap bitnya bila kita
Resolusi ADC = 1 x 5
2 10
Resolusi ADC = 4.88mV
Vin.1024
Hasil konversi =
Vref
Penjelasan program
inisialisasi_ADC
Listing berikut adalah inisialisasi_ADC. Program ini mengatur mode kerja ADC, yaitu
mengisi ADMUX dengan 0x20 yang berarti ADC bekerja dengan tegangan referensi yang
terhubung ke pin AVCC. Dan dengan format data ADCH-ADCL karna bit ADLAR=0. Berikut
void inisialisasi_ADC()
{
// ADC initialization
// ADC Clock frequency: 750,000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: On
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x84;
SFIOR&=0xEF;
SFIOR|=0x10;
}
Fungsi baca_adc
Berikut adalah fungsi pembacaan ADC 10bit. Fungsi ini adalah fungsi dengan nilai balik.
Sehingga saat fungsi ini dipanggil akan menghasilkan nilai balik sesuai dengan data pada
ADCW.
Pada fungsi ini, ADMUX diisikan dengan adc_input dan di-or-kan dengan
Materi micro club di upload di facebook >> kardono judin >> bagian catatan