Ana içeriğe atla

Arduino'da Dış Kesme ( External Interrupt ) Kullanımı


EXTERNAL INTERRUPT

     Interrupt'lar kelime olarak '' kesme '' anlamına gelir. Arduino gibi tek işlemcili mikrodenetleyicilerde kodlar yukarından aşağıya doğru okunur ve işlemler bu şekilde gerçekleştirilir. Normal şartlar altında bu sıra asla değiştirilmez. Ancak uzun yazılım içeren ve yüksek bekleme süresine sahip bazı durumlarda hızlı tepki süresi istediğimiz bir kod için interrupt'lar devreye girer. Interrupt'lar tetiklendiğinde ana döngünün akışı kesilir ve kesme anında istenilen işlemler devreye sokulur.

     Bu konuyu bir örnekle açıklamak gerekirse ders anında hocanın dersi anlatması normal gidişattır. Yalnız bölüm başkanı kapıyı çalıp bir duyuru yapmak isterse hoca ders anlatmayı bir süreliğine bırakmak zorundadır. Bölüm başkanı duyurusunu yaptıktan sonra hoca derse kaldığı yerden devam eder. İşte bu günlük hayattan bir interrupt örneğidir. :)

     Arduino'da iki çeşit interrupt vardır. Bunlardan birincisi dış kesmeler ( external interrupt ) diğeri ise zaman kesmesi'dir ( timer interrupt ).  Biz ilk olarak dış kesmelere ( external interrupt ) değineceğiz. Dış kesmeler özellikle buton kullanılan programlarda oldukça işe yarar. Mesela bir butona basıldığında arduino'nun normal akışından çıkıp farklı bir veri göndermesini istiyorsunuz. Arduino'yu interrupt kullanmadan programladığınız zaman sürekli butona basılıp basılmadığı kontrol edilmelidir. External interrupt kullanıldığında ise butona basıldığı anda buton bilgisi Arduino'ya gider ve istenilen işlemler devreye sokulur. Peki external interrupt kullanılır ? Gelin şimdi ona bakalım.

     Dış kesmeler Arduino'nun özel pinlerindeki voltaj değişimlerine göre devreye girerler. Bu özel pinler farklı devre kartları için şunlardır ; 



     Yukarıda görüldüğü  gib Arduino Uno gibi atmega - 328 işlemcisi içeren Arduino'ların 2 ve 3 numaralı pinleri interrupt pinleridir. 

     attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);

    attach interruptlarını devreye sokmak yukarıdaki komut kullanılır. Bu komutta digitalPinToInterrupt ile hangi interrupt pininin kullanıldığı yazılır. 2 numaralı pinse 0, 3 numaralı pin ise (pin) yerine 1 yazılır. ISR ise interrupt anında gidilecek fonksiyonu gösterir. Mode kısmında ise hangi durumda interruptın devreye gireceğiz yazılır. Daha önce dış kesmeler voltaj değişimlerinde devreye girdiğini söylemiştik. Yani 2 veya 3. pinlerin girişinde bir değişim olması gerekiyor. Bu değişimler şunlardır ;

  •  LOW – Dijital pindeki gerilim 0 olduğunda kesmeye girer 
  •  CHANGE – Belirli dijital pinde oluşacak her gerilim değişiminde kesmeye girer. Yani pindeki gerilim 0’dan 5’e yükseldiğinde veya 5’ten 0’a düştüğünde kesmeye girer.
  • RISING – Yükselen kenar olduğunda kesmeye girer. Yani dijital pindeki gerilim 0’dan 5  Volta çıktığında kesmeye girer.
  • FALLING – Düşen kenar olduğunda kesmeye girer. Yani dijital pindeki gereilim 5’dan 0 Volta çıktığında kesmeye girer. 
     Not 1 :  Interrupt içerisinde delay() ve millis() komutları döndürülümez.
     Not 2 :  Yükselen kenar Arduino Uno gibi 5V ile çalışan kartlar için 2.5 V ve üzeridir. Due gibi 3.3 V ile çalışan kartlarda ise 1.65 V ve üzeridir.


     Gömülü sistem programlamayı öğrenmenin en iyi yolu kart üzerinde denemek olduğu için örnek bir uygulama gerçekleştirmeye çalışalım. Bu uygulamızda sarı led 1 sn aralıklara yanıp sönsün kırmızı led ise butona basıldığı sürece yansın aksi taktirde yanmasın.

     Kodlar ; 



   


     Bu programda butonu 2. pine bağladık. Bu şekilde interrupt pinini kullanmış olduk ve yükselen kenarda kırmızı ledin yanmasını sağladık. Kırmızı led yandıktan sonra sürekli yanmaması için ise ikinci bir interrruptı devreye soktuk bu da düşen kenarda ( FALLING ) ledi_sondur fonksiyonuna giderek led'e verilen enerjiyi kesti.




Yorumlar

En çok okunanlar ;

PLC Zamanlayıcı ( Timer ) Komutu Uygulamaları ve Simülasyonu

SIEMENS S7 - 200  PLC TİMER KOMUTU UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugünkü yazıda PLC'de timer komutunun kullanımını öğreneceğiz ve bu komutun simülasyon üzerinde uygulamalarını gerçekleştireceğiz. Timerler PLC'de oldukça öneme sahip komutlardır. S7 - 200 PLC'de 3 çeşit zamanlayacı bulunmaktadır ;      1 ) Çekmede Gecikmeli Zaman Rölesi ( TON ) : Bu zamanlayıcı '' enable '' girişine ait komutlar doğru ise zamanlayıcı zaman süresini saymaya başlar. Bu anda zamanlayıcının zaman biti 0'dır. Zamanlayıcı'nın saydığı zaman değeri '' Present Value '' değerine eşit olduğu zaman, zamanlayıcı biti 1 olur. Enable girişi 0 olduğunda ise zaman rölesi sıfırlanır.         T32 - T96                                            >>> 1 ms        T33 - .... - T36 ve T97 - ... - T100      >>> 10 ms        T37 - .... - T63 ve T101 - .... - T255   >>> 100ms         Present Time ( PT ) değeri ola

PLC Mühürleme, Set - Reset Komutları ve Elektronik Kilitleme

SIEMENS S7 - 200 PLC  STEP 7 MICROWIN 4.0 PROGRAMI İLE MÜHÜRLEME,SET-RESET,ELEKTRONİK KİLİTLEME UYGULAMALARI ve SİMÜLASYONU      Merhaba, bugün daha önce anlattığımız konulardan daha temel ve kolay olan mühürleme, set - reset , elektronik kilitleme gibi konulara kısaca değineceğiz. Öğrenilmesi her ne kadar daha basit olsa da içerdiği önem oldukça fazladır. Bu yüzden bu konuları öğrenmeden PLC eğitimi gerçekleştirilmiş olamaz.       İlk olarak mühürleme işleminin ne olduğu ile başlayalım. Örnek verecek olursak siz start butonuna basıldığı zaman herhangi bir devre elemanının ( lamba, motor, kompresör vb. ) çalışmasını istiyorsunuz. Start butonu olarak ise normalde açık ( NO ) buton kullanmanız gerekir. Bu yüzden sizin sürekli çıkışı aktif hale getirebilmek için butona sürekli basmanız gerekir. Bu ise pek mümkün olabilecek bir şey değil. İşte bu noktada mühürleme işlemine gerek duyarız. Gelin önce mühürlemenin ladder diyagramını çizelim ve diyagram üzerinde konuyu kav

3 Fazlı ASM'lere Yıldız / Üçgen Yol Verme Kumanda Devresi ve Simülasyonu

3 FAZLI ASENKRON MOTORLARA YILDIZ / ÜÇGEN YOL VERME KUMANDA DEVRESİ SİEMENS S7 -200 LADDER DİYAGRAMI VE SİMÜLASYONU      Merhaba, bu yazıda sanayide en çok kullanılan elektrikli motor olan 3 fazlı asenkron motorlara yıldız/üçgen yol verme yöntemi ile yol verilmesini STEP 7 MicroWİN programında gerçekleştirmeyi öğreneceğiz. PLC komutlarına geçmeden önce neden yol verme yöntemlerine ihtiyaç duyuyoruz, yıldız/üçgen yol vermek ne demektir, bize ne faydası olur gibi soruları cevaplamak gerektiğini düşünüyorum. Bu yüzden ilk olarak bu soruları cevaplamaya çalışacağız.         3 fazlı asenkron motorlar kalkış anında normal çalışma durumuna göre 5 ila 7 kat arasında daha fazla akım çeker. Bu durum ise pano elemanlarının ( kondaktör, termik röle, sigorta vb. ) daha çabuk yıpranmasına sebep olur. Bu yıpranmayı önlemek için ilk kalkış anında bazı yol verme yöntemleri geliştirilmiştir. Bunlardan en çok kullanılanı ise yıldız / üçgen yol verme yöntemidir.      Yıldız/Üçgen yol verm