Categories
Mikrokontroler

Penanganan Bouncing Tombol/Saklar…

Jika Anda pernah membuat aplikasi mikrokontroler yang memanfaatkan saklar atau tombol-tekan (pushbutton), tentunya Anda akan menghadapi masalah bouncing (dalam bahasa jawanya mentul-mentul) pada saklar atau tombol tersebut. Artinya, saat Anda menekan tombol tersebut, mikrokontroler mendeteksi adanya penekanan berkali-kali, padahal, sekali lagi, Anda hanya menekan sekali saja! Hal ini bisa dijelaskan melalui gambar 1.

Gambar 1. Diagram pewaktuan saat terjadi perubahan dari 1 ke 0

Dari Gambar 1 tersebut terlihat jelas bahwa saat terjadi perubahan tombol dari 1 ke 0 (ilustrasi kiri), akan terjadi bouncing berulang-ulang selama 0.01 hingga 100 milidetik (ilustrasi tengah). Mikrokontroler akan menganggap terjadi perubahan dari 1 ke 0 berkali-kali (ilustrasi kanan).

Rangkaian RC

Solusi sederhana untuk masalah bouncing ini adalah menggunakan rangkaian RC yang akan menekan terjadi perubahan tegangan secara cepat. Karena waktu bouncing tidak dinyatakan, nilai-nilai komponen bisa bervariasi. Pada Gambar 2 ditunjukkan sebuah rangkaian RC untuk mencegah bouncing dengan nilai-nilai komponen yang biasa digunakan.

Gambar 2. Rangkaian RC untuk mencegah bouncing

Flip Flop Debounce

Jika diinginkan keamanan penuh, perlu diperhatikan hal-hal berikut! Rangkaian yang menggunakan RS Flip-flop, yang ditunjukkan pada Gambar 3, akan mengubah kondisi logika luarannya pada saat pulsa pertama yang dipicu saat terjadi bouncing pada saklar. Walaupun solusi lebih mahal (karena menggunakan saklar SPDT), namun masalahnya teratasi dengan baik! Selain itu, rangkaian ini tidak membutuhkan kondensator.

Gambar 3. Rangkaian Flip Flop Debounce

Solusi Perangkat Lunak

Selain solusi perangkat keras, suatu solusi perangkat luas juga biasa dilakukan: saat program menguji suatu kondisi beberapa luaran dan menemukan adanya perubahan, serta merta pengujian harus melakukan penundaan beberapa saat hingga perkiraan bouncing selesai. Kelebihannya? Jelas sekali murah meriah (tidak ada implementasi rangkaian), selain itu bisa diadaptasi untuk saklar atau tombol yang berkualitas buruk sekalipun. Kelemahannya? Sama seperti rangkaian RC, perubahan logika yang lebih cepat dari tundaan program tidak bisa terdeteksi.

Semoga bermanfaat.