Laporan Analog Comparator
Laporan Analog Comparator
LAPORAN
PRAKTIKUM KOMPARATOR ANALOG DALAM MIKROKONTROLER
ATmega8535
Oleh
OFFERING C
TUJUAN
Mahasiswa dapat menjelaskan cara menggunakan Komparator Analog dalam
mikrokontroler ATmega8535.
Mahasiswa dapat mempraktekkan pembandingan data analog dengan Komparator
Analog dalam mikrokontroler ATmega 8535.
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
PROSEDUR
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.
4. Kemudian simpanlah file tersebut sehingga pada program bagian inisialisasi terlihat
sebagai berikut:
// Port C initialization
PORTC=0x00;
DDRC=0xFF;
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.
5
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;
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.
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;
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.
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.
7
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
ACSR=0x40;
SFIOR=0x00;
while (1)
{
if(ACSR&(1<<ACO))
PORTC=0XF0;
else
PORTC=0X0F;
}
}
2.
Tabel 2.3 Komparator Analog dengan Bandgap Reference
No Tegangan AIN0 (V) Tegangan AIN1 (V) Nyala LED
1
0.850 V 0.1 mV
0xF0
2
0.771 V 0.1 mV
0x0F
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
ACSR=0x40;
SFIOR=0x08;
ADMUX=0X00;
while (1)
{
if(ACSR&(1<<ACO))
8
PORTC=0XF0;
else
PORTC=0X0F;
}
}
4.
Tabel 2.4 Komparator Analog dengan Bandgap Reference dan ADC Multiplexer
No Tegangan AIN0 (V) Tegangan ADC0 (V) Nyala LED
1
0.511 V 0.3 mV
0xF0
2
0.434 V 0.2 mV
0x0F
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
ACSR=0x0B;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
PORTC=0X0F;
}
}
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
ACSR=0x0A;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
PORTC=0X0F;
}
}
c) Output Toggle
#include <mega8535.h>
#include <delay.h>
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
ACSR=0x08;
SFIOR=0x00;
while (1)
{
PORTC=0X0F;
}
}
6.
Tabel 2.5 Pengukuran Tegangan
Tegangan ketika Tegangan
Tegangan ketika
sensor tidak referensi/potensiometer
sensor terhalang (V)
terhalang (V) (V)
258,4 V 4,87 V 2,5 V
ANALISIS DATA