7. Akses Analog Comparator
7. Akses Analog Comparator

Pendahuluan

ATmega16/32/8535 memiliki 2 pin komparator tegangan analog yaitu pin AIN0 dan AIN1. Pin AIN0 adalah input positif sementara AIN1 adalah input negative. Saat tegangan pada pin positif AIN0 > pin negatif AIN1 maka bit ACO pada register ACSR bernilai = ‘1’

Anda dapat menggunakan kanal ADC (PA0 sampai PA7) sebagai input negative pengganti pin AIN1. Register ADC Multiplexer (ADMUX) digunakan untuk memilih kanal ADC yang akan digunakan. Fitur ADC harus dimatikan jika input negative komparator analog diambil dari kanal ADC. Ini menunjukkan bahwa anda dapat membandingkan 9 sinyal input analog negative dengan 1 sinyal input analog positif secara berurutan (bukan bersamaan). Keluaran Komparator Analog dapat digunakan untuk memicu fungsi Timer/Counter Input Capture dan perangkat interupsi.


Register SFIOR

SFIOR: Special Function IO Register

Bit 3 – ACME: Analog Comparator Multiplexer Enable. Saat bit ini = ‘1’ dan fitur ADC dimatikan, multiplekser ADC memilih input yang terhubung dengan kanal ADC sebagai input negative komparator analog dan pin AIN1 tidak digunakan sebagai input negative. Saat bit ACME = ‘0’ maka pin AIN1 berperan sebagai input negative.


Register ACSR

ACSR: Analog Comparator Control and Status Register

  • Bit 7 – ACD: Analog Comparator Disable. Saat bit ACD = ‘1’ maka daya yang terhubung dengan komparator analog dimatikan. Sehingga komparator analog tidak aktif
  • Bit 6 – ACBG: Analog Comparator Bandgap Select. Saat bit ACBG = ‘1’ maka tegangan Bandgap menggantikan tegangan input positif komparator analog. Saat bit ACBG = ‘0’ maka pin AIN0 digunakan pada input positif komparator analog. Bandgap (tegangan referensi yang tidak terpengaruh dengan perubahan temperature). Biasanya digunakan di dalam IC. VBG pada ATMEGA16  umumnya = 1,23V)
  • Bit 5 – ACO: Analog Comparator Output. Bit ini merupakan output komparator, jika tegangan AIN0 > tegangan input negative maka bit ACO = ‘1’, jika sebaliknya maka ACO = ‘0’
  • Bit 4 – ACI: Analog Comparator Interrupt Flag. Bit ini diset oleh perangkat keras. Ketika event pada keluaran komparator memberikan trigger maka mode interupsi ditentukan oleh bit ACIS1 dan ACIS0. Rutin interupsi komparator Analog dieksekusi jika bit ACIE berlogika high dan bit I pada register SREG juga berlogika high. Bit ACI di-clear oleh hardware ketika mengeksekusi vektor interupsi yang bersesuaian.
  • Bit 3 – ACIE: Analog Comparator Interrupt Enable. Ketika bit ACIE ini diberikan logika high dan bit I pada register SREG juga berlogika high, maka interupsi Pembanding Analog diaktifkan.
  • Bit 2 – ACIC: Analog Comparator Input Capture Enable. Ketika bit ACIC ini dijadikan high, maka bit ini mengaktifkan fungsi Input Capture pada Timer/Counter1 untuk dipicu oleh Komparator Analog. Ketika bit ACIC ini diberikan logika low, maka tidak ada koneksi antara antara Komparator Analog dan fungsi Input Capture. Untuk membuat Komparator Analog memicu interupsi Timer/Counter1 Input Capture, bit TICIE1 dalam Timer Interrupt Mask Register (TIMSK) harus diberikan logika high.
  • Bit 1, 0 - ACIS1, ACISO: Analog Comparator Interrupt Mode Select. Bit ACIS1 dan ACIS0 menetapkan kejadian/event Komparator yang memicu ACI (Analog Comparator Interrupt).

Ketika mengubah bit ACIS1/ACIS0, bit ACI Analog Comparator Interrupt harus di – nonaktifkan dengan meng-clear bit ACIE Analog Comparator Interrupt Enable pada register ACSR.


Analog Comparator Multiplexed Input

Keberadaan Analog Comparator Multiplexed Input memungkinkan untuk memilih pin mana saja dari ADC7 sampai ADC0 untuk menggantikan masukan inverting/input negatif ke Komparator Analog. Multiplexer ADC digunakan untuk memilih masukan ini dan akibatnya fitur ADC harus dimatikan dan tidak dapat digunakan. Jika bit ACME pada register SFIOR berlogika high dan ADC dinonaktifkan (bit ADEN pada register ADCSRA berlogika low), MUX2...0 pada register ADMUX memilih pin masukan untuk menggantikan masukan inverting ke Komparator Analog.


Program Komparator Analog

Circuit diagram

  • Pada rangkaian di samping, 2 sinyal input terhubung  dengan AIN0 & AIN1 pada PORTB
  • Output komparator ditunjukkan oleh LED yang terhubung dengan PC7
  • Saat tegangan pada pin AIN0 > AIN1 maka LED menyala, sebaliknya LED akan mati

.

Langkah-langkah pemrograman komparator analog dengan input negative dari pin AIN1:

  1. Aktifkan AIN1 sebagai input negative dengan cara membuat bit ACME = ‘0’ pada register SFIOR
  2. Nolkan register ACSR
  3. Pantau bit ACO pada register ACSR dan buat keputusan yang seuai dengan status bit ACO

Program:

.

#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>

int main()
{
	DDRC |= 0x80;		/* Make pin 7 of PORTC is output */
	SFIOR &= (1<<ACME);	/* Enable AIN1 for -ve input */
	ACSR &= 0x00;		/* Clear ACSR register */
	
	while(1)
	{
		if (ACSR & (1<<ACO))/* Check ACO bit of ACSR register */
		PORTC = 0x80;	/* Turn ON PC7 pin */
		else		/* If ACO bit is zero */
		PORTC = 0x00;	/* Then	turn OFF PC7 pin */
	}
}

Video Demo:


.

Langkah-langkah pemrograman komparator analog dengan input negative dari kanal ADC:

  1. Matikan fitur ADC dengan membuat bit ADEN pada register ADCSRA = ‘0’
  2. Pilih kanal/pin ADC dengan mengatur register ADMUX
  3. Aktifkan kanal ADC sebagai input negative komparator dengan mengatur bit ACME pada register SFIOR = ‘1’
  4. Nolkan register ACSR
  5. Pantau bit ACO pada register ACSR dan buat keputusan yang seuai dengan status bit ACO

Program:

.

#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>

int main()
{
	DDRC |= 0x80;		/* Make pin 7 of PORTC as output */
	ADCSRA &= ~(1<<ADEN);	/* Disable ADC */
	ADMUX = 0x00;		/* Select ADC0 as a -ve pin of comparator. 0X07 UTK CH 7 */ 
	SFIOR |= (1<<ACME);	/* Enable analog comparator */
	ACSR = 0x00;		/* Clear ACSR resister */
	
	while(1)
	{
		if (ACSR & (1<<ACO))/* Check ACO bit of ACSR register */
		PORTC = 0x80;	/* Turn ON PC7 pin */
		else		/* If ACO bit is zero */
		PORTC = 0x00;	/* Then	turn OFF PC7 pin */
	}

}

.

Video Demo:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *