Ini bukan sirkuit debounce yang bagus.
Satu masalah adalah (setidaknya idealnya) sakelar dan kabel penghubungnya memiliki ketahanan nol. Ini berarti bahwa kapasitor akan keluar secara instan ketika sakelar ditutup. (Dalam istilah praktis, juga, pelepasan cepat ini bahkan bisa berakibat buruk untuk kontak saklar atau kabel, jika ada tegangan yang cukup tinggi pada kapasitor dan memiliki kapasitas yang cukup tinggi.)
Debounce sakelar kapasitif harus secara perlahan mengisi kapasitor saat sakelar dalam satu kondisi, dan secara perlahan melepaskannya saat berada di kondisi lain. Konstanta RC tidak harus sama, tetapi harus sesuatu yang bukan nol. Rangkaian ini memiliki resistor yang mengontrol pengisian kapasitor; itu hanya membutuhkan resistor di loop switch untuk melepaskannya dengan anggun.
t =0
t= 0t = 0
Satu pertimbangan terakhir di sini adalah bahwa rangkaian hanya menyalakan LED, jadi bouncing switch pada dasarnya dapat diperdebatkan, kecuali LED bersinar pada beberapa detektor optik di mana switch bouncing berubah menjadi kesalahan pada sinyal. Jika tugas LED adalah memberikan cahaya yang cantik, maka mata Anda bahkan tidak akan cukup cepat untuk melihat sakelar memantul.
Berikut ini adalah simulasi domain waktu dari rangkaian (setelah mengubah V1 ke 3V). Apa yang diplot adalah arus LED. Penting: Parameter Lewati Awal diatur ke Ya, sehingga kita dapat melihat apa yang terjadi ketika kapasitor pada awalnya kosong dan sumber tegangan berenergi ke 3V. Ini semua dengan sakelar dalam keadaan terbuka.
Seperti yang Anda lihat, arus melonjak melalui LED dan kemudian mati. Jika maksud Anda adalah bahwa LED dikontrol secara ketat oleh operator melalui tombol push, maka desain Anda tidak mengimplementasikan maksud Anda seratus persen.
Berkenaan dengan komentar di bawah ini, anggaplah tujuannya adalah untuk benar-benar menggerakkan pin mikrokontroler (semuanya berjalan pada 5V). Pertama, kita dapat melakukannya tanpa kapasitansi dan menangani debouncing dalam perangkat lunak dengan mengambil sampel pin pada tingkat yang cukup rendah.
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Ketika sakelar terbuka output ditarik ke 0V oleh resistor pull-down. Ketika kami menutup sakelar, tegangan di bagian atas resistor naik ke 5V. Output ini dapat dianggap sebagai sinyal. Kami tertarik pada komponen frekuensi rendah dari sinyal: penekanan saklar yang relatif lambat. Kami ingin menolak frekuensi tinggi, seperti sakelar pantulan. Untuk tujuan itu, kita dapat menambahkan filter low-pass RC pasif satu kutub:
mensimulasikan rangkaian ini
Sekarang ketika sakelar ditutup, tegangan naik secara bertahap saat kapasitor diisi. Anda dapat melihat ini dalam simulasi domain waktu:
Ketika sakelar dibuka, kapasitor akan keluar melalui R1 dan R1, secara bertahap menjatuhkan tegangan kembali ke nol. Kapasitor pada dasarnya mengikuti tegangan R1, tetapi dengan lag karena harus mengisi melalui R1, dan pengosongan melalui R1 dan R2. (Perhatikan bahwa debit dua kali lebih lambat dari biaya!)
Input mikroprosesor merasakan tegangan dengan impedansi tinggi, sehingga kita dapat mengabaikan efek pembebanannya dan bahkan tidak menunjukkannya pada diagram. Kami tidak dapat melakukan ini dalam kasus LED karena membutuhkan arus yang harus disuplai oleh rangkaian kami. Arus itu mengalir melalui resistor kami dan mengembangkan voltase yang harus kami pertanggungjawabkan: dengan kata lain, ia memiliki "memuat efek".
Jenis sirkuit ini bekerja lebih baik lagi jika kita mengumpankan output ke pemicu Schmidt. Pemicu Schmidt adalah sejenis buffer untuk sinyal digital yang menunjukkan histeresis mirip dengan termometer. Outputnya menjadi tinggi ketika beberapa ambang input tinggi terlampaui, dan jatuh rendah ketika ambang rendah berbeda dilampaui. Sebagai contoh, itu mungkin menjadi tinggi ketika input naik di atas 3,5 volt, dan hanya pergi rendah ketika input turun di bawah 1,5.
Jadi, bahkan jika kapasitor memungkinkan melalui beberapa kebisingan yang masih dapat menyebabkan beberapa flipping kecil bolak-balik di dekat persimpangan ambang input, pemicu Schmidt akan menolak itu.
Misalkan kita ingin melunasi LED dengan kapasitor? Masalahnya adalah resistansi pada akhirnya terlalu rendah karena kebutuhan untuk memasok arus ke LED. Jika kita hanya menggunakan sirkuit yang sama dan membuat resistor lebih kecil (dan kapasitor lebih besar oleh faktor yang sama), kita berakhir dengan sesuatu yang menghabiskan daya. Cara untuk melakukan ini adalah dengan menggunakan loop sinyal kecil untuk menangani saklar, dan debounce itu, dan kemudian gunakan tegangan untuk mengontrol transistor yang membuang arus ke LED.
Meskipun pelepasan LED mungkin tidak berguna, jika kita membuat resistor dan / atau kapasitor cukup besar, kita dapat memperoleh perilaku yang baik: perilaku LED perlahan memudar saat tombol ditekan dan ditahan, dan menghilang saat dilepaskan.
mensimulasikan rangkaian ini
Ini adalah sirkuit yang sama seperti sebelumnya: simpul "keluar ke mikrokontroler" sekarang terhubung ke dasar n-channel MOSFET yang menggerakkan arus ke LED. The MOSFET "buffer" logika debounce dari mengemudi LED. Sirkuit debounce tidak terganggu oleh impedansi rendah LED, dan LED tidak kekurangan arus oleh impedans tinggi di sirkuit debounce.