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.

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
Yorum Gönder