Kasım 02, 2013

MikroC ile C Programlama Dersleri 5

Bu yazımda mikrodenetleyicimizin giriş pinlerini nasıl dijital veya anolog giriş olarak kullanacağımızı öğreneceğiz. Öncesinde Analog to Digital Converter (ADC)'yi biraz inceleyelim. Kullandığımız MikroC programının ADC kütüphanesini kullanarak yazılmış örnekte yazımızda.




Bizim için Analog Nedir?

Analog büyüklük, herhangi iki noktası arasına sınırsız sayıda değer alabilen büyüklüktür. Örneğin 25 derece sıcaklık ile 27 derece sıcaklık arasını sonsuz parçalara bölebiliriz. Örnek olarak 25.067 derece veya 26.99 derece gibi. Kullandığımız Isı, Ses, Işık, Zaman gibi büyüklüklerin hepsi analog büyüklüklerdir. Bizim bu büyüklükleri mikroişlemciler ile algılayabilmemiz için bu büyüklüklerin dijital büyüklüklere dönüştürülmesi gerekir.

Bu dönüştürmeyi yapan modüllere ise ADC modülleri denir. Analog-Dijital Converter, modülü çoğu mikrodenetleyicide dahili olarak bulunmaktadır. ADC birimi bulunmayan mikrodenetleyiciler için ise harici olarak seri veya paralel çıkış üretebilen ADC entegreleri kullanılır.

ADC, birimlerinin en önemli özellikleri bit sayılarıdır. 10 bitlik ADC modülüne sahip bir mikrodenetleyici 0 ile 1023 arasında, 8 bitlik bir mikrodenetleyici ise 0 ile 255 arasında değerler alabilmektedir. ADC biriminin bit sayısı arttıkça çözünürlüğü de artmaktadır.

Şöyle diyelim ki elimizde çıkış voltajı 0-5V arasında değişen bir uzaklık sensörümüz var ve 10 bitlik bir mikrodenetleyicimiz. O halde 5V/1023=0.0048875855327468 gibi bir değer elde ederiz. Bu değer bizim ADC modülümüzün hassasiyetidir. ADC birimimiz her bir 4.8mV değerindeki voltaj değişimlerini hissedebilmektedir. Eğer ADC birimimizden okuduğumuz değer 50 ise ADC biriminin girişinde bulunan voltaj değeri 50*0.0048875855327468=~0.2443792766373400V’dur.


MikroC, Anolog-Dijital Çeviricinin okunmasını ADC kütüphanesi ile çok basit hale getirmiş. “ADC_read(analog kanal)” komutu ile istediğimiz analog kanaldan ADC'yi gerçekleştirebiliyoruz. Ama öncesinde giriş, çıkış ve referans ayarlarını yapmak gerekiyor. Bunun için de PIC mikrodenetleyicilerin, kataloglarındaki A/D Modül kısmını incelemeniz yeterli. Çünkü her mikrodenetleyicide benzer fakat bazı değişikler var.

ADC Modülüne Örnek Proje

Şimdi öğrendiğimiz bu bilgileri kullanarak örnek bir kod yazalım. Kodumuzda 0V 0'a karşılık gelirken 5V 1023'e karşılık gelecek şekilde çalışacak. Mikro denetleyici olarak ise P18F2550 kullanacağız. Örneğimizde potansiyometreden gelen değeri 10-bitlik olarak 10 adet LED'e aktaran bir devre kuralım ve kodumuzu yazalım.




unsigned int adc_deger; // değişken tanımlandı

void main(){

 ADCON0=0b00000001; // A/D modülü aktif edildi
 ADCON1=0b00001110; // Anolog pinler giriş olarak ayarlandı
 CMCON =7; // Karşılaştırıcılar pasif edildi

 TRISA=1; // A portu giriş ayarlandı
 TRISB=0; // B portu çıkış ayarlandı
 TRISC=0; // C portu çıkış ayarlandı

 PORTA=0; // A portu temizlendi
 PORTB=0; // B portu temizlendi
 PORTC=0; // C portu temizlendi

 while(1) // Sonsuz döngüye girildi
  {
   adc_deger= ADC_Read(0); // okunan analog deger değişkene kaydedildi
   PORTB=adc_deger; // LSB 8-bit B portuna kaydedildi
   PORTC=adc_deger>>8; // MSB 2-bit C portuna kadedildi
  }
}

Hiç yorum yok:

Yorum Gönder