MODUL
KOMPARATOR ANALOG DALAM MIKROKONTROLLER ATmega8535
TUJUAN
- Mahasiswa dapat menjelaskan cara menggunakan komparator analog dalam mikrokontroller atmega8535
- Mahasiswa dapat mempraktekkan pembandingan data analog dengan komparator analog dalam mikrokontroller atmega8535
EEPROM
Komparator Analog membandingkan input di kaki input positif AIN0 (PORTB.2) dan input negatif AIN1 (PORTB.3). Ketika tegangan input positif AIN0 lebih besar daripada tegangan input negatifi AIN1, maka output Analog Comparator-ACO akan berlogika 1. Keluaran komparator dapat memicu fungsi Timer/Counter 1 Input Capture. Selain itu, komparator analog dapat memicu interrupt yang sumbernya berasal dari output komparator. Keluaran komparator dapat membangkitkan interrupt jika logikanya falling edge, rising edge atau toggle.
Register yang digunakan untuk mengakses komparator analog ada 2, yaitu:
- SFIOR -Special Function IO Register
- ACSR - Analog Comparator Control and Status Register
SFIOR - Special Function IO Register
- Bit 3 - ACME: Analog Comparator Multiplexer Enable
Jika bit ini diberi logika 1 dan ADC tidak diaktifkan (ADEN
dan ADCSRA diberi logika 0), maka ADC multiplekser akan memilih input negatif
Komparator Analog. Jika bit ini diberi logika 0, AIN1 digunakan sebagai input
negatif Komparator Analog.
ADC0..7 dapat digunakan untuk menggantikan input negatif
komparator analog. Jika multiplekser ADC digunakan untuk memilih input tersebut,
maka sebagai konsekuensinya ADC harus dinonaktifkan. Jika bit ACME diaktifkan
dan ADC dinonaktifkan, maka MUX2..0 dalam ADMUX
akan memilih pin input untuk menggantikan input negatif komparator analog,
seperti dalam Tabel 2.1. Jika ACME diberi logika 0 atau ADEn diberi logika 1,
maka AIN1 mendapat masukan dari input negatif komparator analog.
Table 2.1. Analog Comparator Multiplexer Input
ACSR - Analog Comparator Control and Status Register
· Bit
7 – ACD: Analog Comparator Disable
Jika bit ini diberi logika
1,maka Komparator Analog dinonaktifkan. Ketika mengubah bit ADC, Interrupt
Komparator Analog harus dinonaktifkan dengan memberi logika 0 pada bit ACIE
supaya tidak terjadi interrupt ketika bit ini diubah.
·
Bit
6 – ACBG: Analog Comparator Bandgap Select
Jika bit ini di-set, tegangan referensi yang tetap akan
menggantikan input positif Komparator Analog. Jika di-clear maka AIN0 digunakan
sebagai input positif Komparator Analog.
·
Bit
5 – ACO: Analog Comparator Output
Output Komparator Analog disinkronkan dan terhubung ke
ACO.Sinkronisasi membutuhkan 1-2 siklus clock.
·
Bit
4 – ACI: Analog Comparator Interrupt Flag
Bit ini di-set oleh hardware jika output komparator memicu
mode interrupt yang didefinisakn oleh ACIS1 dan ACIS0. Rutin Analog Comparator
Interrupt dieksekusi jika bit ACIE dan bit I dalam SREG diset. ACI di-clear
oleh hardware ketika mengeksekusi interrupt tersebut atau dengan menulis logika
1 ke flag tersebut.
·
Bit
3 – ACIE: Analog Comparator Interrupt Enable
Jika bit ACIE dan Bit I dalam SREG diberi logika 1 maka
Analog Comparator Interrupt diaktifkan.
·
Bit
2 – ACIC: Analog Comparator Input Capture Enable
Jika diberi logika 1, maka bit ini akan mengaktifkan fungsi
Input Capture dalam Timer/Counter1 untuk ditrigger oleh Komparator Analog.
Outpur komparator secara langsung akan terhubung dengan logika Input Capture
dan membuat komparator menggunakan fitur
noise canceler dan pemilihan egde pada
interrupt Timer/Cpunter1 Input Capture. Untuk membuat komparator memicu
Timer/Counter1 Input Capture Interrupt, maka bit TICIE1 dalam register TIMSK
harus diset.
·
Bit
1,0 – ACIS1, ACIS0: Analog Comparator Interrupt Mode Select
Bit ini menentukan even komparator mana yang memicu Analog
Comparator Interrupt. Ketika bit ACIS1/ACIS0 diubah, Analog Comparator
interrupt harus dinonaktifkan dengan memberi logika 0 di bit Interrupt Enable
dalam register ACSR supaya tidak terjadi interrupt ketika bit tersebut diubah.
Tabel 2.2 Setting ACIS1 / ACIS0
- 1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
- 1 set modul praktikum mikrokontroler
- 1 buah multimeter digital
1.
Rangkailah peralatan yang
diperlukan seperti dalam Gambar 2.1. Hubungkan soket jumper PORTC pada minimum
system dengan soket jumper LED/OUTPUT pada I/O.
Gambar 2.1 Diagram antarmuka mikrokontroler dengan I/O.
2.
Buka program Code Vision AVR
3.
Buatlah project baru. Setelah
mengeset chip dan clock, set bagian PORTC sebagai output dengan output value =
0. Set juga pada tab Analog Comparator seperti berikut ini.
4.
Kemudian simpanlah file tersebut sehingga
pada program bagian inisialisasi terlihat sebagai berikut:
//
Port C initialization
PORTC=0x00;
DDRC=0xFF;
//
Analog Comparator initialization
//
Analog Comparator: On
// The
Analog Comparator's positive input is
//
connected to the Bandgap Voltage Reference
//
Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x40;
SFIOR=0x00;
5.
Buat program untuk menyalakan LED
dengan pola tertentu jika ACO (ACSR.5) berlogika 0 dan menyalakan LED dengan
pola yang lain jika ACO (ACSR.5) berlogika 1.
6.
Hubungkan AIN1 (PORTB.3) ke output
potensiometer. Ukur tegangan di AIN0 (PORTB.2) kemudian catat di Tabel 2.3.
Putar potensiometer supaya tegangan di AIN1 lebih kecil daripada AIN0. Lihat
nyala LED dan catat di Tabel 2.3.
7.
Putar potensiometer supaya
tegangan di AIN1 lebih besar daripada AIN0. Lihat nyala LED dan catat di Tabel
2.3.
8.
Buatlah project baru. Setelah
mengeset chip dan clock, set bagian PORTC sebagai output dengan output value =
0. Set juga pada tab Analog Comparator seperti berikut ini.
9.
Kemudian simpanlah file tersebut sehingga
pada program bagian inisialisasi terlihat sebagai berikut:
//
Port C initialization
PORTC=0x00;
DDRC=0xFF;
//
Analog Comparator initialization
//
Analog Comparator: On
// The
Analog Comparator's positive input is
//
connected to the Bandgap Voltage Reference
// The
Analog Comparator's negative input is
//
connected to the ADC multiplexer
//
Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x40;
SFIOR=0x08;
10. Tambahkan setting ADMUX untuk pemilihan input ADC Multiplexer:
ADMUX=0x00;
// input ADC dari PORTA.0(ADC channel 0)
11. Buat program untuk menyalakan LED dengan pola tertentu jika ACO
(ACSR.5) berlogika 0 dan menyalakan LED dengan pola yang lain jika ACO (ACSR.5)
berlogika 1.
12. Hubungkan ADC0 (PORTA.0) ke output potensiometer. Ukur tegangan di AIN0
(PORTB.2) kemudian catat di Tabel 2.4. Putar potensiometer supaya tegangan di ADC0
lebih kecil daripada AIN0. Lihat nyala LED dan catat di Tabel 2.4.
13. Putar potensiometer supaya tegangan di ADC0 lebih besar daripada AIN0.
Lihat nyala LED dan catat di Tabel 2.4.
14. Rakitlah rangkaian sensor optocoupler seperti dalam Gambar 2.2 di
project board. Hubungkan keluaran sensor ke input AIN0 (PORTB.2) dan hubungkan AIN1 (PORTB.3) ke output
potensiometer.
Gambar 2.2 Rangkaian sensor
optocoupler
15. Buatlah project baru. Setelah mengeset chip dan clock, set bagian PORTC
sebagai output dengan output value = 0. Set juga pada tab Analog Comparator
seperti berikut ini.
16. Kemudian simpanlah file tersebut sehingga pada program bagian
inisialisasi terlihat sebagai berikut:
//
Port B initialization
PORTB=0x00;
DDRB=0xFF;
//
Analog Comparator initialization
// Analog
Comparator: On
//
Interrupt on Rising Output Edge
//
Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x0B;
SFIOR=0x00;
17. Buat program utama untuk menyalakan LED dengan pola tertentu dan program
dalam Analog
Comparator interrupt service routine untuk menyalakan LED
dengan pola yang lain.
// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
// Place your code here
}
18. Ukur tegangan output sensor ketika sensor optocoupler terhalang dan
sensor optocoupler tidak terhalang kemudian catat di Tabel 2.5. Set tegangan
potensiometer supaya berada di antara kedua tegangan tersebut.
19. Lihat nyala LED ketika sensor optocoupler tidak terhalang, terhalang,
dan tidak terhalang, kemudian catat di
Tabel 2.6.
20. Ulangi langkah 14-18 untuk Mode Interrupt Falling Edge dan Toggle.
1.
Program Komparator Analog dengan Bandgap
Reference
2.
Tabel 2.3 Komparator Analog
dengan Bandgap Reference
No
|
Tegangan AIN0 (V)
|
Tegangan AIN1 (V)
|
Nyala LED
|
1
|
|||
2
|
3.
Program Komparator Analog dengan
Bandgap Reference dan ADC Multiplexer
4.
Tabel 2.4 Komparator Analog
dengan Bandgap Reference dan ADC Multiplexer
No
|
Tegangan AIN0 (V)
|
Tegangan ADC0 (V)
|
Nyala LED
|
1
|
|||
2
|
5.
Program Komparator Analog dengan Interrupt
6.
Tabel 2.5 Pengukuran Tegangan
Tegangan ketika sensor
tidak terhalang (V)
|
Tegangan ketika sensor
terhalang (V)
|
Tegangan
referensi/potensiometer (V)
|
Tabel 2.6 Komparator Analog
dengan Interrupt
No
|
Interrupt Mode
|
Kondisi sensor
|
Nyala LED
|
1
|
Rising
Output Edge
|
Tidak
terhalang
|
|
Terhalang
|
|||
Tidak
terhalang
|
|||
2
|
Falling
Output Edge
|
Tidak
terhalang
|
|
Terhalang
|
|||
Tidak
terhalang
|
|||
3
|
Output
Toggle
|
Tidak
terhalang
|
|
Terhalang
|
|||
Tidak
terhalang
|
1. Simpulkan prinsip kerja Komparator Analog yang ada di dalam mikrokontroler.
2. Sebutkan pilihan input Komparator Analog baik input positif maupun input negatif.
3. Simpulkan hasil praktikum yang tercantum dalam Tabel 2.6.
Sumber : elektro.um.ac.id