PIC16F628 Karşılatırıcı (Comparator) Modülü

Bu yazımda, PIC16F628 ile karşılaştırıcı modülünün nasıl kullanıldığını paylaşacağım. PIC16F628’in Data Sheet’inden 10. Bölümünde Comparator Module kısmından yararlanacağız. Bu yazıda 2.5 Volt referans almak için CMCON ve VRCON register’larının kullanımı göstereceğim daha sonraki yazımda CNY70 sensörünü kullanarak bir örnek yapacağım.

PIC16F628 karşılaştırıcı modülü 2 adet analog karşılaştırıcı içerir. CMCON Register’ı 8 bitliktir.

CMCON Comparators

 

  • CMCON Register’ının son 3 biti karşılaştırma modunun seçimi için kullanılır bunu seçerken data sheet içinden seçeriz.Aşağıdaki resimde de gördüğünüz gibi 8 farklı seçenek var benim için uygun olan “010” olduğu için onu seçiyorum çünkü dahili olarak bir referans değer kullanacağım.Comparator select
  • 3.Biti yani CIS biti ile bağlanacak portların seçimine karar verilir. Ben “0” seçerek RA0 ve RA1 portlarını tercih ediyorum.
  • 4.Bit (C1INV) “1” olarak tercih ettiğimiz durumda giriş değeri alacağımız referans değerinden küçük olduğu durumda “1” değeri verir bize diğer durumda “0” verir.
  • 5.Bit (C2INV) buda 4.Bitteki mantıkla aynı.
  • 6.Bit “0” yapılarak VREF’in sadece dahili olarak kullanılması sağlanır.
  • 7.Bit “1” yapılarak VREF aktif hale getirilir.

Sonuç olarak  kodumuzu yazarken CMCON bitimize “10110010” değerini atamamız gerekecek.

Şimdi VRCON registerından bahsedeyim. İlk önce beslememizin 5V olduğunu düşünerek alacağımız referans değerini nasıl hesaplayacağımızı göstereceğim.

VREF=(VR<3:0>/24) x VDD (5V)

Örneğin 2.5 Volt alacak olursak ((5/2) / 5) x 24 işlemiyle VR < 3:0 > = 12  lojik olarak “1100” karşılık gelir.

Ayarlarken VRCON Registerını da son 4 biti bulduğumuz değeri yazmak üzere diğer bitleri yukarıda verdiğim bilgilere göre yazılır. Sadece 4.bit unimplemented bit, read as 0 olarak geçtiğinden 4.biti 0 yazıyoruz. Sonuç olarak VRCON=”10101100″