harici buton kesmesi ve debouncing

Başlatan sedronjames, 18 Mart 2024, 14:25:36

sedronjames

forumdaşlar merhaba

stm32f070 işlemci üzerinde bir harici buton ile kesme içerisinde sayıcı değerini birer birer artırmak istiyorum.

tabiki butonlarda parazitten kaynaklı vs dalgalanma olduğu için bir debounce eklemesi gerekiyor.

*buton devresini fotoğraftaki gibi kurdum. butona bastığımda da dalga şeklini osiloskopta gözlemledi. o da ikinci fotoda.

fakat butona bastığımda 30'ar 50'şer 100'er kez artırıyor bu sayıcı değerini. saçmalıyor yani.

kapasitörü çıkarıyorum, buton düzgün çalışıyor. arada bir ikişer artırıyor o kadar.

yani kompanze etmesini beklediğim kapasitör tam tersi etki yapıyor.

hiçbir anlam veremedim. neyi yanlış yaptığımı da anlayamadım. tecrübelerinizle beni aydınlatır mısınız?




power20

2 tane 10k kullanıldığı için  muallak bir seviye elde edilmiş. Toprağa giden 10k yı sökünüz. Böyle çözülür

sedronjames

stm32 3.3v olduğu için 2.5volta düşürmek istedim 5 voltu.

Melih1802

Hardware olarak debonuce çok verimli olmuyor. Kaldı ki 470nF yüksek bir değer, sinyalde gecikmeye sebep olacaktır.
Bunun yerine yazılımsal olarak çözmeniz çok daha pratik olur.

power20

#4
 3.3 yerine  2.5Va düşmüş bu da sıkıntı olabilir.  10k üzerinden 5V uygulamak bence sorun olmaz. Buton yine algılanır.  (1Mohm üzerinden şebekeye bağlanan durumlar var. Zararı olmuyor)

SB7

Selamlar, şemayı görünce aklıma birşey takıldı. Kondansatörün uygun olup olmadığını anlamak için devrenin zaman sabitine bakılması gerekiyor. Aşina olduğumuz yapı seri RC devresi ancak burda seri RC yapısından farklı bir yapı var. Bu yapılarda devrenin zaman sabiti nasıl hesaplanıyor?

1.durum seri RC devresi, to=R*C=10k*1n=10us 5 to sürede dolduğu kabul edilirse 5*to=50us bu değer simülasyonda da doğru.



2.durum ??


3.durum ??


2 ve 3.durumlar için yorumlarınızı belirtir misiniz? İlave olarak MCU ya kapasiteden bağlantı olursa empedansı hesaplamalara nasıl dahil edilir?

Yorumlarınızı bekliyorum, şimdiden teşekkürler.
-SB7

Erol YILMAZ

Pinde dijital filtre yok ise (ki genellikle yoktur) pine sızan nS'lik bir parazit bile bir interrupt ateşleyebilir.
Bu sebepten interrupt ile buton okunursa sürekli problem çıkartacakmış gibi geliyor bana.

Ayrıca buton basma, nispeten yavaş bir işlemdir.
Pin durumu sorgulanarak okunsa, yazılımla kolayca kontrol altına alınabilir.


Okan AKÇA

Yazılımsal olarak okuma frekansi kurtarıyorsa pinin lojik durumu için high olma süresi gibi kod yazabilirsiniz. Donanımsal olarak bir üst mesajda gerekli bilgi verilmiş.
Ben donanımsal olarak çözmeye tercih ederim.

sedronjames

Alıntı yapılan: bc_esd - 19 Mart 2024, 14:55:04Belki faydası olur.

https://bariscincorop.blogspot.com/2016/01/atmel-avr-12-butonanahtar-ark-bounce-ve.html

çok faydası oldu. schmitt trigger kullanınca yazılımsal filtreye bile gerek kalmadı. çok teşekkür ederim.