6 Ekim 2026 Salı

 Analog Karşılaştırıcı

Analog karşılaştırıcı, iki giriş sinyalinin voltaj seviyelerini karşılaştıran ve bunların göreceli büyüklüklerine dayalı bir çıkış üreten elektronik bir cihazdır. Atmega328p’de analog sinyal karşılaştırma özelliği vardır. Bunun için AIN0 ve AIN1 olmak üzere 2 adet pin vardır. AIN0; Atmega328 mikrodenetleyicisinin 12’inci, Arduino’nun ise 6’ıncı pinidir. AIN1 ise; Atmega328 mikrodenetleyicisinin 13’üncü, Arduino’nun ise 7’nci pinidir. Analog karşılaştırıcı mikroişlemciden ayrı bir birim olup mikroişlemciden bağımsız olarak çalışır. Bütün analog ölçme ve karşılaştırma işlemini kendi içinde yürütür. Yürüttüğü kesmelerle mikroişlemciye müdahale eder. Mikro denetleyicinin erişimi ise çıkış biti olan ACO bitini okumakla olur.





Analog karşılaştırıcıda; AIN0 pozitif giriş, AIN1 negatif giriştir. Negatif giriş pini bizim referans voltajımızdır. Karşılaştırıcının pozitif pini üzerinde ki gerilim, negatif pini üzerindeki gerilimden daha fazla ise analog karşılaştırıcı çıkışı ACO biti 1 olur. Aksi durumlarda bu bit 0’dır. Karşılaştırıcının çıkışı olan ACO; Timer1 zamanlayıcısında giriş yakalama işlemi için de kullanılabilir. Bu özelliğin olması bu çıkışın sayma işleminde kullanılmasına olanak sağlar. Ayrıca karşılaştırıcı ayrı bir kesme yürütür. Analog karşılaştırıcı için özel bir kesmenin olmasının bize faydası dokunacaktır. Böylece karşılaştırıcı çıkışının yükselmesi, düşmesi veya geçişinde kesmeye gidilmesi sağlanır.

Analog karşılaştırıcıda; dâhili referans voltajı özelliği de vardır. Yukarıdaki şekil üzerinde görünen “Bandgap Referance” dâhili referans voltajıdır. Bunu seçtiğimizde analog karşılaştırıcının pozitif girişine dâhili referans voltajı uygulanır. Bu voltaj yaklaşık 1,1V’dur. Fakat karşılaştırıcıda referans voltajı yine AIN1’den gelen voltajdır. Bandgap voltajı AIN1’den büyük olduğunda ACO çıkışı 1, Bandgap voltajı AIN1’den küçük olduğunda ACO çıkışı 0 olur.

Bandgap Referance seçilmediğinde ise analog karşılaştırıcının pozitif girişine AIN0 pininden gelen voltaj uygulanır.

  • Analog Karşılaştırıcı Kontrolü İçin Kullanılan Kayıtçılar

















NOT: Kayıtçıların bitlerinde değişiklik yapmak için: “|=” (veya eşit), “&=” (ve eşit),”=” (eşit) şeklindeki bitsel operatörler kullanılabilir. Kayıtçıdaki herhangi bir biti 1 yapmak için; “|=” i, 0 yapmak için; “&=” i kullanabiliriz. Bu bitsel operatörler kullanıldığında, kayıtçıdaki 0 yapılacak bitler önce, 1 yapılacak bitler ise en son ayarlanmalıdır. Çünkü bazı kayıtçılarda bu operatörlerle bir bit sıfır yapıldığında, tüm kayıtçıyı sıfırladığı görüldü.  Bu nedenlerden dolayı bu operatörler yerine kayıtçı_adı=0b10010001 şeklinde ya da bitSet() ve bitClear() komutlarının kullanımı daha sağlıklı olmaktadır.


  • Analog Comparator Multiplexed Input (Analog Karşılaştırıcı Çoklanmış Giriş)

Analog karşılaştırıcının AIN1 negatif giriş pini yerine Analog Digital Converter giriş pinleri olan A0….A7 pinlerinden herhangi birini seçmek mümkündür. Bunun için “ADC”nin kapatılması ve “Analog Karşılaştırıcı Çoklayıcı”nın etkinleştirmesi gerekmektedir. Ardından ADMUX(ADC Multiplexer Selection) kayıtçısının MUX bitlerini ayarlayarak analog karşılaştırıcının negatif giriş pinini belirleyebiliriz.

Analog Comparator Multiplexed Input


ACME

ADEN

MUX2…0

Analog Comparator Negative Input

0

X

XXX

AIN1

1

1

XXX

AIN1

1

0

000

A0

1

0

001

A1

1

0

010

A2

1

0

011

A3

1

0

100

A4

1

0

101

A5

1

0

110

A6

1

0

111

A7



Yukarıda yer alan kayıtçılar ile ADC’yi kapatmak için; ADCSRB kayıtçısındaki ACME🡪1, Analog Karşılaştırıcı Çoklayıcıyı etkinleştirmek için; ADCSRA kayıtçısındaki ADEN🡪0 yapılır. Ardından yukarıdaki tabloya bakılarak ADMUX kayıtçısının MUX2, MUX1, MUX0 bitlerinde yapılan ayar ile A0….A7 pinlerinden herhangi birini AIN1 negatif girişi olarak kullanılabilir.

ACME🡪0 ve ADEN🡪1 yapıldığında negatif giriş pini eski haline dönerek AIN1 pini olur.


  • Analog Karşılaştırıcı Çıkışı

Karşılaştırma işlemi gerçekleştiğinde ACSR kayıtçısındaki ACO biti 1 olur. Aksi durumlarda bu bit 0’dır demiştik. Analog karşılaştırıcının çıkışını bu bitten okuruz. Arada senkronizasyon işlemi olduğu için 1-2 saat çevirimi gecikmeli okunur.


  • Bandgap Referance Voltajı Seçimi

“Bandgap Referance” bant aralığı referans voltajıdır. Dâhili referans voltajı da denilebilir. Bunu seçtiğimizde analog karşılaştırıcının pozitif girişine dâhili referans voltajı uygulanır. Bu voltaj yaklaşık 1,1V’dur. Bandgap Referance seçilmediğinde ise analog karşılaştırıcının pozitif girişine AIN0 pininden gelen voltaj uygulanır. ACSR kayıtçısındaki ACBG biti 1 olduğunda, dâhili referans voltajı analog karşılaştırıcının pozitif girişine uygulanır. Bu bit 0 olduğunda ise, analog karşılaştırıcının pozitif girişine AIN0 pininden gelen voltaj uygulanır. Fakat karşılaştırıcıda referans voltajı yine AIN1’den gelen voltajdır. Bandgap Referance voltajı sabit 1.1V olduğu için AIN1’den gelen voltajın değeri değiştirilerek karşılaştırıcı çıkışı ACO bitinin 1 ya da 0 olması sağlanır.

Bandgap Voltajı(1,1V) > AIN1 ise; ACO = 1

Bandgap Voltajı(1,1V) < AIN1 ise; ACO = 0       olur.

Bandgap referance voltajı seçiminde voltajın sabitlenmesi belirli bir zaman alacaktır.


  • Analog Karşılaştırıcıyı Devre Dışı Bırakma

ACSR kayıtçısındaki ACD biti 1 olduğunda, analog karşılaştırıcıya giden güç kapatılır. Gücün kapatılması, aktif ve bekleme modunda güç tüketimini azaltacaktır. ACD biti değiştirilirken, ACSR'deki ACIE biti 0 yapılarak analog karşılaştırıcı kesmesi devre dışı bırakılmalıdır. Aksi takdirde ACD biti değiştirildiğinde bir kesme meydana gelebilir.


  • Analog Karşılaştırıcı Kesme Etkinleştirme

ACSR kayıtçısındaki ACIE biti 1 yapıldığında analog karşılaştırıcı kesmesi etkinleştirilir. 0 yapıldığında ise kesme devre dışı bırakılır. AIN0 pini voltajı, AIN1 pini voltajından büyük olduğunda karşılaştırma meydana gelir ve kesme oluşur. Kesme meydana geldiğinde program aşağıdaki fonksiyon içerisine girer:


ISR (ANALOG_COMP_vect)

{

//komutlar

}


  • Analog Karşılaştırıcı Kesme Modu Seçimi


ACIS1

ACIS0

Kesme Modu

0

0

Çıkış değişmesinde karşılaştırma kesmesi

0

1

Rezerve

1

0

Çıkışın düşen kenarında karşılaştırma kesmesi

1

1

Çıkışın yükselen kenarında karşılaştırma kesmesi



Tablodaki bu bitler, karşılaştırıcı kesme türünü yapılandırmak için kullanılır. Çıkışın düşen kenarında kesmeye gidilmesi; ACO bitinin 1’den 0’a değişmesi demektir. Çıkışın yükselen kenarında kesmeye gidilmesi; ACO bitinin 0’dan 1’e değişmesi demektir.

ACSR kayıtçısındaki ACIS1/ACIS0 bitleri değiştirilirken, analog karşılaştırıcı kesmesini, ACSR kayıtçısındaki ACIE biti 0 yapılarak devre dışı bırakılmalıdır. Aksi takdirde bitler değiştirildiğinde bir kesme meydana gelebilir. 

  • Analog Karşılaştırıcıyı Kesme Bayrak Biti

ACSR kayıtçısındaki ACI biti, donanım tarafından analog karşılaştırıcı kesmesi yürütüldüğünde bir (1) konumuna getirilir. ACI biti kesme fonksiyonu yürütüldükten ya da üzerine bir (1) yazıldıktan sonra sıfırlanır.


  • Dijital Girişi Devre Dışı Bırakma


DIDR1 kayıtçısındaki AIN1D ve AIN0D bitleri 1 yapılırsa; AIN1 ve AIN0 pinlerindeki dijital giriş devre dışı bırakılır. Böylelikle analog sinyal uygulanan pinlerde dijital giriş tamponu devre dışı bırakılarak güç tasarrufu sağlanmış olur.


ATmega328P'nin Analog Karşılaştırıcısı Nasıl Yapılandırılır?

Normal çalışmada; karşılaştırıcının pozitif ve negatif uçlarına sırasıyla AIN0 ve AIN1 üzerinden sinyaller uygulandığında, kullanıcı programında yalnızca ACSR ve DIDR1 kayıtçılarının yapılandırılması gerekir. 

Karşılaştırıcının pozitif girişi için; harici giriş yerine bant aralığı referans voltajı(dâhili referans voltajı) kullanılabilir. Bant aralığı referans voltajı pozitif giriş olarak kullanıldığında, ACSR kayıtçısı yapılandırılmalıdır. ACSR kayıtçısı ayrıca karşılaştırıcının kesmesini, kesme modunu ve giriş yakalamasını da yapılandırmalıdır. 

Karşılaştırıcının negatif girişi için; analog giriş pinleri A0….A7 kullanılabilir. Harici analog giriş kaynağı A0….A7'yi negatif bir girişe ayarlamak için, ADCSRA, ADCSRB ve ADMUX kayıtçısı yapılandırılmalıdır. 

Her durumda; DIDR1 kayıtçısı karşılaştırıcının pozitif ve negatif girişi için dijital giriş tamponunu etkinleştirmek veya devre dışı bırakmak üzere yapılandırılabilir.


Yapılan Uygulamalar İle İlgili Notlar:

2. uygulamada ADCSRA kayıtçısına ait ADEN bitini 0 yapmak için “&=” (ve eşit) bitsel operatörünü kullandığımızda tüm kayıtçıyı sıfırladığını gördük. Bu 2. uygulamada kullandığımız diğer kayıtçılarda böyle bir sorun yaşamadık. Kayıtçının sıfırlanan diğer bitleri uygulamamızda kullanılmadığı için programın çalışmasında herhangi bir soruna neden olmadı. Fakat kayıtçıya ait diğer bitlerden herhangi birinin 1 olması gerekseydi, kayıtçı sıfırlandığı için sorun yaşanabilirdi. Bu durumun oluşmaması için önce sıfır yapılması gereken bitleri 0, sonra bir yapılması gereken bitleri 1 yapmamız gerekirdi. Kullandığımız bu bitsel operatörlerle ilgili bu sorunları yaşamamak için; kayıtçı_adı=0b10010001 şeklinde ya da bitSet() ve bitClear() komutlarının kullanımı çok daha doğru olur. Nitekim 3. uygulamanın aynısı olan 4. uygulamada(kesme uygulaması), bitSet() ve bitClear() komutlarını kullandık.

3. ve 4. uygulama olan kesme uygulamalarında; AIN0 ve AIN1 pinlerindeki karşılaştırma sonucu kesmeye gidilerek LED'in yakılması ve söndürülmesi sağlandı. Kesme modu yükselen kenar olarak ayarlandı. Ancak; fiziksel Arduino'da deneme yapılırken kullanılan potansiyometrede, dalgalanmalar ya da lineer olmayan voltaj değişimleri olması nedeniyle LED'de yanıp sönme ve düşen kenarda da kesmeye gidilme durumu oluştu. Proteus'ta yapılan simülasyonda uygulama doğru bir biçimde çalıştı.



0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com