ATMEL PROGRAMLAMA 9 - Buton Bağlantıları








         

     Bu yazımda   genelde bir mikrodenetleyiciye,  özelde ise atmega 328p'ye  buton bağlantısının nasıl yapılacağını anlatacağım. Buton bağlantıları normal bir butonu temsil ettiği gibi aynı zamanda mikrodenetleyici girişindeki bir dijital sensoru veya girişteki kare dalga katarını temsil edebilir. 
    
 







https://cdn.sparkfun.com/assets/1/5/1/f/5/517afd67ce395f2f49000003.gif       Bir butona basıp bir led'i çalıştırmak için mikrodenetleyici gibi gelişmiş bir entegreye ihtiyacımız yok. Bunu basit bir elektrik devresi kurarak da yapabiliriz. Ancak burada ki maksat bir butona basıp bir led yansın mantığından daha ötedir. Amaç mikrodenetleyici girişindeki dijital formlu sinyali algılabilmektir.. Bu sinyal bir butona basma sinyali olabileceği gibi herhangi bir dijital sensorden alınan bilgi veya girişteki  kare dalga katarı da olabilir. 

     

     Peki butonu denetleyiciye nasıl bağlayacağız. Bunun için karşımıza  Pull-up ve Pull-down terimleri çıkıyor.  Şimdi bu terimlerin neyi ifade ettiğini anlamaya çalışalım.

        Bir mikrodenetleyicin herhangi bir Giriş/Çıkış pini için  üç durumda olabilir..

      1- HIGH, +5v, 1
      2- LOW, GND,0
      3- FLOATING (kararsız)

       Bu üç durumdan biri olabilir. Ancak 3.durum FLOATING istenmeyen bir durumdur. bu durum giriş  olarak tanımlanan bir pinin boşta olmasıdır.

 

       Pinin o an ne durumda olduğu bilinemez. Bu nedenle  özellikle giriş olarak ayarlanmış bir pin o an için ya HIGH (+5V,1) yada LOW (GND,0) olmalıdır. 

      Giriş pininin  o anki durumunu bilirsek  ve belli bir şekilde giriş gözlem altında tutulup, giriş durum değişikliği algınabilirse , girişteki bilgi okunabilir. Bu nedenle giriş ya HIGH yada LOW olmalıdır ki girişteki durum değişimi alılanabilsin. Bu amaçla giriş pinleri için Pull-up veya Pull-down bağlantıları yapılır. 

      Pull-up bağlantıda giriş pini devamlı olarak HIGH seviyededir. Butona basılınca (veya durum değişince ) giriş LOW olacaktır.



    Şekilde de görüldüğü gibi giriş pini R1 direnci üzerinden Vcc besleme gerilimine bağlanmıştır. Pin şu anda 1 yani HIGH durumundadır. Butona basılınca  Pin direkt olarak GND'ye bağlanacak, Vcc den gelen akım Gnd'ye akacak  ve pin  0  yani LOW durumuna dönüşecektir. Yazacağımız program bu dönüşümü algılayabilecek nitelikte olmalıdır.

    Peki R1 direncinin değeri ne olmalıdır.

    Aşağıdaki şekilde R2 direnci mikrodenetleyicinin giriş empedansını temsil eder. Mikrodenetleyicilerin giriş empedansı 100k-100MΩ (belki daha fazla- teorik olarak sonsuz )arasında değişebilir. Buna göre R1 direnci genel kabule göre yaklaşık 10K ~100KOhm  arasındadır. 

    1- R1 çok küçük seçilmemelidir. Çünkü küçük bir direnç fazla akım geçmesine neden olabilir.. Bu da  sistemin genel harcadığı gücü artırır.

   2- R1 direnci çok da büyük olmamalıdır. Aşağıdaki bağlantıya göre R1 direnci R2 direnci ile gerilim bölücü gibi davranır.çok büyük değerdeki R1 direnci R2 direnci ile Vcc'yi ortak paylaşır. örneğin Vcc 5v ise pin ucunda 2.5 v gibi bir gerilim oluşur. Bu gerilim seviyesi birçok mikrodenetleyici tarafından 1-HIGH olarak algılanmaz .


 


           Düşük Pull-up direnç değeri (daha fazla akım ) strong pull-up olarak, Yüksek pull-up direnç değeri (daha az akım )ise weak pull-up direnç olarak adlandırılır.

           Atmega 328p   Mikrodenetleyicisinin bütün portları  dahili pull-up dirençlerine sahiptirler (datasheet sayfa 76 ). Bunlar yazılımla aktif edilebilirler. Böylece harici pull up bağlantıya gerek kalmaz.

 


datasheet sayfa 304'te  bu pull-up direnç değerini bulabiliriz.

 





       Pull-down bağlantıda giriş pini devamlı olarak LOW  seviyededir. Butona basılınca (veya durum değişince ) giriş  HIGH olacaktır.



          Bu bağlantı şeklinde de R1 direnç değeri pull-up'ta olduğu gibidir.


Peki pull-up mı? pull-down mu?


   Bu sorunun cevabı kesin değildir.  Genellikle pull-up bağlantı daha sık kullanılır. Ancak kullanım yerine göre değişebilir.

   Örneğin  buton kullanacaksanız pull-up kullanmalısınız. Çünkü pull up bağlantı girişi devamlı HIGH seviyede tutar ve parazitten etkilenmeyi önler. Girişin  pull down olduğu ve butona basılmadığı durularda bile parazit yüzünden giriş HIGH olarak algılanabilir. Mikrodenetleyici butona basılmış gibi algılayabilir. Bunu engellemek için butonlar genelde pull-up bağlanmalıdır.

   Bazı dijital sensor çıkışları pull down bağlantıya uygundur. Çıkışları normalde LOW seviyededir. Sensor algılama yaptığında HIGH olacaktır. Bu bağlantıyı pull up yapamazsınız.  yada  74hc14 gibi bir Schmitt trigger buffer kullanarak LOW seviyeyi HIGH' a çevirmelisiniz.


 

Yorumlar