Sorunu Anlamak:
* Kişi Geri Dönmesini Değiştir: Mekanik anahtarlar basıldığında veya bırakıldığında açık ve kapalı durumlar arasında anında geçiş yapmaz. Mekanik titreşimler ve temas kusurları nedeniyle birçok kez "sıçrıyorlar".
* Birden Çok Tetikleyici: Bu sıçrama, kullanıcının yalnızca tek bir basmayı amaçlamasına rağmen birden fazla elektrik sinyali üretebilir. Bu, özellikle zamanlamaya duyarlı devrelerde istenmeyen davranışlara neden olabilir.
Neden Geri Dönme?
* Doğru Sinyal Yorumlaması: Sahte sinyallerin devrenizin mantığını veya kontrol fonksiyonlarını etkilemesini önler.
* Güvenilir Çalışma: Devrenizin tek bir anahtar basımına yalnızca bir kez tepki vermesini sağlar.
Sıçrama Giderme Yöntemleri:
1. Donanım Geri Döndürme:
* RC Devresi: En yaygın yöntem. Anahtarın karşısına bir direnç (R) ve kapasitör (C) paralel olarak bağlanır. Kapasitör, hızlı sıçrayan sinyalleri filtreleyerek yavaşça şarj olur ve boşalır.
* Nasıl çalışır: Anahtar kapandığında kapasitör direnç üzerinden şarj olur. Sıçrama sinyalleri kapasitörü tamamen şarj edemeyecek kadar hızlı olduğundan yalnızca tek, temiz bir sinyal geçer.
* Diyot Tabanlı: Kapasitörün çok hızlı boşalmasını önlemek için bir diyot kullanır. Bu, sıçrama uzun sürse bile temiz bir sinyal sağlar.
2. Yazılımın Geri Döndürülmesi:
* Yazılım Zamanlayıcısı: Bir mikrodenetleyici, bir anahtara basıldıktan sonra kısa bir süre için giriş değişikliklerini göz ardı edecek şekilde programlanabilir. Bu süre içinde yapılan herhangi bir değişiklik geri dönüş olarak kabul edilir.
* Nasıl çalışır: Anahtara ilk basıldığında bir zamanlayıcı başlatılır. Zamanlayıcı süresi içindeki diğer değişiklikler göz ardı edilir. Zamanlayıcının süresi dolduktan sonra yeni anahtar durumu kabul edilir.
* Durum Makinesi: Anahtar durumunu izlemek için bir durum makinesi kullanır. Makine, sıçrayan sinyalleri filtreleyerek yalnızca bir gecikmeden sonra durumları değiştirir.
3. Özel Sıçrayan IC'ler:
* IC'lerin geri tepmesi: Güçlü ve güvenilir çözümler sunarak sinyalleri geri döndürmek için özel olarak tasarlanmıştır.
Doğru Yöntemi Seçmek:
* Donanımın Geri Döndürülmesi: Basit devreler için ve maliyet etkinliğinin önemli olduğu durumlar için en iyisidir.
* Yazılımın Geri Döndürülmesi: Daha fazla esneklik sunar ve daha karmaşık senaryoların üstesinden gelebilir.
* Özelleştirilmiş Sıçrayan IC'ler: Yüksek doğruluk, hız gerektiren veya alanın sınırlı olduğu uygulamalar için idealdir.
Önemli Hususlar:
* Sıçrama Süresi: Geri dönme için kullanılan gecikme veya zaman penceresi, anahtarın geri dönme süresinden daha uzun, ancak kullanıcının beklenen yanıt süresinden daha kısa olmalıdır.
* Devre Karmaşıklığı: Seçilen geri döndürme yöntemi devrenin karmaşıklığına ve mevcut kaynaklara uygun olmalıdır.
Örnek Kod (Arduino ile Yazılımın Geri Döndürülmesi):
```c++
const int switchPin =2; // Switch'e bağlı pin
int switchState =0; // Switch'in başlangıç durumu
unsigned long lastDebounceTime =0; // Anahtarın son durumu değiştirildiği zaman
const unsigned long debounceDelay =50; // Milisaniye cinsinden gecikme
geçersiz kurulum() {
pinMode(switchPin, INPUT_PULLUP); // Giriş için pini yapılandırıyoruz
Seri.begin(9600);
}
geçersiz döngü () {
int okuma =digitalRead(switchPin);
// Anahtar değiştiyse zamanlayıcıyı sıfırla
if (okunuyor !=switchState) {
lastDebounceTime =milis();
}
if ((millis() - lastDebounceTime)> debounceDelay) {
// Gecikme yeterince uzunsa değişikliği geçerli say
switchState =okuma;
// Anahtar durumunu işle
if (switchState ==DÜŞÜK) {
Serial.println("Anahtara basıldı!");
} başka {
Serial.println("Anahtar serbest bırakıldı!");
}
}
}
''''
Bu Arduino kodu, anahtar durumunu kontrol ederek ve önceki durumla karşılaştırarak yazılımın geri tepmesini uygular. Bir değişiklik tespit edilirse zamanlayıcıyı sıfırlar. Yalnızca belirli bir gecikmeden (debounceDelay) sonra değişiklik geçerli kabul edilir ve işlenir.