Bagaimana cara kerja kapasitor dalam rangkaian debouncing?

12

Di sirkuit berikut (tombol tekan yang dinyalakan yang menyalakan LED):

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Saya mencoba memahami mengapa LED tidak akan menyala karena kapasitor terlihat seperti melewati saklar. Ketika kapasitor penuh, itu tidak mengirimkan / menghantarkan listrik?

Anda akan melihat bahwa saya sangat pemula, tetapi setelah 20 jam membaca berbagai tutorial, saya masih tidak dapat menemukan sesuatu yang sangat sederhana; bagaimana kapasitor penuh bertindak berbeda dari kabel sederhana? Jika saya mengganti kapasitor dengan kawat yang ditempatkan bukan kapasitor, lampu akan selalu menyala.

Sunting: Beberapa orang menunjukkan bahwa rangkaian debouncing tidak masuk akal (tegangan buruk, dll.) Ini adalah usaha saya yang kedua untuk lebih masuk akal. R5 dan R6 bisa sama, tapi saya pikir memisahkan mereka akan membantu menjaga 1 pekerjaan untuk setiap komponen.

sirkuit

FMaz008
sumber

Jawaban:

14

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.

masukkan deskripsi gambar di sini

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.

skema

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:

skema

mensimulasikan rangkaian ini

Sekarang ketika sakelar ditutup, tegangan naik secara bertahap saat kapasitor diisi. Anda dapat melihat ini dalam simulasi domain waktu:

penutupan saklar halus

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.

skema

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.

Kaz
sumber
Hum, jadi apa solusinya? LED bisa menjadi input Arduino atau yang lainnya. Pertanyaan saya lebih lanjut tentang kapasitor ... Saya hanya mencoba menyalin rangkaian debouncing yang ada untuk menggambarkan pertanyaan saya tentang kapasitor. Tegangan akan menjadi 5V, bukan 1.
FMaz008
Saya bisa menambahkan itu ke jawabannya.
Kaz
Jadi yang Anda katakan adalah saya harus menambahkan resistensi 100olm antara V1 dan SW1? Saya kira saya hanya bingung karena saya belum melihat sirkuit tombol push yang melibatkan lebih dari 1 hambatan dalam semua tutorial yang saya lihat. Tetapi sebagian besar tidak menggambar sirkuit lengkap (untuk OUT, ke Arduino, dll.) Sehingga sulit dimengerti bagi saya. Jadi ini akan buruk? : digital.ni.com/public.nsf/8e0a9cd1e264dced86256a100082b910/…
FMaz008
Aneh, jadi Anda menjelaskan kepada saya bahwa saya tidak dapat melakukan tombol tekan yang menyala LED, dengan sirkuit debouncing. Bagaimanapun, ini menjawab pertanyaan awal, saya akan melakukan penelitian lebih lanjut untuk sisanya: p Saya hanya tidak suka mengatakan 'arduino akan melakukannya': Saya tahu, saya bisa menambahkan penundaan 20ms dan TIDAK melakukan debouncing sama sekali, tapi saya mencoba untuk memahami apa keajaiban di balik itu ... itu sebabnya saya ingin rangkaian lengkap.
FMaz008
Anda dapat melonggarkan tombol tekan yang menggerakkan LED, tetapi tidak ada gunanya karena sakelar pantulan tidak menyebabkan LED gagal berfungsi. Untuk rangkaian lengkap, bayangkan Anda memiliki Arduino di sana didukung oleh + 5V dan ground. Kemudian simpul "keluar" terhubung ke pin input yang ingin Anda kendarai.
Kaz
2

Efek ini terjadi karena pada kondisi tunak kapasitor secara efektif memblokir setiap arus dari tegangan DC. Ini bisa dilihat dengan memahami persamaannya

i = C * (dV / dt)

Di DC istilah diferensial adalah 0 sehingga arus adalah 0. Oleh karena itu arus melalui kapasitor akan nol pada kondisi tunak.

Jika Anda menerima begitu saja itu harus cukup jelas mengapa sirkuit ini berfungsi. Jika Anda ingin lebih detail dari itu, maka video ini mungkin akan melakukan pekerjaan yang lebih baik untuk menunjukkan bagaimana fisika kapasitor bermain untuk menghasilkan hasil di atas daripada deskripsi saya.

NickHalden
sumber
Video ini sangat bagus, kecuali untuk headhake itu memberi saya: p Terima kasih :)
FMaz008
1

Kapasitor dapat, untuk banyak tujuan, dianggap sebagai baterai isi ulang yang sangat kecil. Itu hanya akan melewati arus saat pengisian atau pemakaian.

Kebanyakan LED membutuhkan setidaknya 2 volt untuk menyala - agar sirkuit Anda berfungsi sama sekali, sumber tegangan harus minimal 3 volt. Kemudian Anda mungkin melihat LED terus menyala selama sepersekian detik setelah Anda membuka sakelar, saat kapasitor mengisi daya.

Peter Bennett
sumber
Saya tidak benar-benar mengkonfigurasi tegangan dan semua itu, kecuali untuk resistansi. Ini adalah penggunaan pertama saya dari rangkaian lab, jadi saya hanya "menempatkan komponen dengan nilai default", Jika saya akan melakukannya secara nyata, itu akan menjadi 5V.
FMaz008
1
"When the capacitor is full, it doesn't transmit/conduct electricity"

Iya. Ini bukan kawat, melainkan dua lambang paralel yang saling berdekatan.

pjc50
sumber