Anda di halaman 1dari 4

Saklar Bounce dan Debounce Tidak ada yang lebih sederhana dibanding saklar dan push button.

Ini merupakan cara yang paling sederhana untuk memberikan kondisi tegangan pada pin masukan mikrokontroler, dan tidak memerlukan penjelasan secara detail mengenai cara kerjanya. Namun demikian, dalam prakteknya, tidak semudah yang diperkirakan. Apa penyebabnya?

Getaran yang terjadi pada kontak saklar, yang merupakan masalah yang biasa dijumpai pada saklar mekanis. Ketika kontak bersentuhan, momentum dan elastisitas beraksi bersamaan sehingga menimbulkan getaran. Hasilnya adalah sejumlah pulsa listrik (lihat gambar di atas) yang dapat menimbulkan salah interpretasi. Namun, kejadian ini tidak berlangsung lama (beberapa mikro atau milidetik), namun cukup lama untuk sebuah mikrokontroler. Bila menggunakan sebuah push button sebagai penghitung pulsa, kesalahan terjadi pada hampir 100% kasus. Masalah ini mungkin cukup mudah diatasi dengan menghubungkannya dengan sebuah rangkaian RC untuk menekan perubahan tegangan yang cepat. Bila periode getaran tidak didefinisikan, nilai komponen yang digunakan tidak dapat ditentukan secara pasti. Namun dalam kebanyakan kasus, disarankan untuk menggunakan nilai yang tertera pada gambar di bawah ini:

SISTEM INSTRUMENTASI DAN KONTROL

Bila dibutuhkan stabilitas yang tinggi maka dibutuhkan cara lain. Output dari rangkaian berikut akan merubah kondisi logikanya hanya setelah men-deteksi pulsa pertama yang dipicu oleh getaran kontak saklar. Solusi ini lebih mahal, namun masalah dapat diselesaikan dengan sempurna.

Selain solusi berbasis hardware, juga terdapat solusi sederhana berbasis software. Bila sebuah program menguji kondisi sebuah pin input dan men-deteksi perubahan, pemeriksaan dilakukan selama jeda tertentu. Jika program memastikan perubahan, ini berarti bahwa posisi saklar atau push button sudah berubah. Keuntungan dari solusi ini sangat jelas: bebas biaya, efek dari noise di-eliminasi dan dapat diterapkan pada kontak yang kualitasnya kurang baik. Sumber: mikroe.com Berikut adalah contoh sederhana untuk mengatasi masalah bouncing: TRISA = 255; PORTA = 0; TRISB = 0; PORTB = 0; while (1) { int a, b; a = PORTA.3; delay_ms(10);
SISTEM INSTRUMENTASI DAN KONTROL

b = PORTA.3; if ( a == b ) if ( a == 0 ) { PORTB.0 = 1; delay_ms(2000); PORTB.0 = 0; } }

APLIKASI RANGKAIAN DE BOUNCING Pembangkitan pulsa dengan rangkaian debouncing Pada beberapa pemakaian, pulsa ini dibangkitkan dengan menekan sebuah sakelar tekan dimana satu pulsa dibangkitkan setiap kali tombol ditekan. Sakelar yang digunakan umumnya adalah sakelar mekanis yang terdiri dari satu pasang atau lebih kontak diam dan kontak gerak.akan bergerak dan terhubung dengan kontak diam. Pada saat menyentuh kontak diam, kontak gerak ini akan dipantulkan beberapa kali sebelum akhirnya diam. Hal ini disebabkan oleh sifat elastis dari kedua kontak tersebut. Keadaan ini adalah sama dengan sebuah bola yang dibanting ke tanah, dimana bola tersebut akan memantul beberapa kali sebelum akhirnya diam. Pantulan ini dikenal sebagai bouncing dan meninbulkan masalah pada pembangkitan pulsa clock. Akibat bouncing maka untuk satu kali penekanan sakelar akan dibangkitkan beberapa pulsa clock. Kondisi ini diperlihatkan pada Gambar 8.1. Pada saat sakelar ditekan, kontak gerak

Gambar Rangkaian pembengkit clock dan tegangan keluarannya Jika sakelar pada Gambar 8.1a tidak ditekan maka inverter akan mendapat masukan logika tinggi sehingga keluarannya (VO) akan rendah. Jika sakelar ditekan maka masukan inverter akan rendah sehingga keluarannya akan tinggi. Tetapi jika kontak gerak dipantulkan maka hubungannya dengan kontak diam akan terputus sesaat untuk kemudian tersambung lagi. Akibatnya keluaran inverter akan rendah sesaat dan kemudian tinggi kembali. Hal ini akan Akibat pemantulan ini maka bentuk tegangan keluaran adalah seperti yang diperlihatkan pada Gambar 8.1b. Hal ini tentu saja tidak diinginkan karena jika digunakan pada pencacah, satu kali penekanan tombol akanUntuk mengatasi hal ini dapat digunakan rangkaian debouncing. Rangkaian ini akan mengeliminasi bouncing dengan memanfaatkan

SISTEM INSTRUMENTASI DAN KONTROL

sifat flip-flop yang akan mempertahankan suatu keadaan sebelum mendapat perintah untuk berubah ke keadaan lain melalui masukan yang sesuai. Sebagai contoh, suatu flip-flop akanDemikian pula sebaliknya. Rangkaian debouncing ini diperlihatkan pada Gambar 8.2. terulang beberapa kali sampai proses pemantulan ini berakhir. mengakibatkan cacahan naik lebih dari satu. set dan seterusnya set sebelum mendapat pulsa pada masukan reset-nya.

Gambar Rangkaian pembangkit pulsa clock dengan debouncing Pada rangkaian ini digunakan sebuah sakelar satu kutub dua kedudukan dan dua gerbang NAND jenis TTL yang membentuk sebuah flip-flop. Karena gerbang adalah TTL maka masukan yang terbuka akan berlogika tinggi. Dalam hal ini jika sakelar tidak ditekan maka kontak gerak selalu terhubung ke kontak-A sehingga kontak ini selalu berlogika rendah dan kontak-B yang terbuka selalu berlogika tinggi. Akibatnya flip-flop selalu akan di-reset. Jika sakelar ditekan maka kontak gerak akan beralih dari kontak-A ke kontak-B, sehingga flip-flop akan set dan keluaran Q akan tinggi. Jika kontak gerak dipantulkan beberapa kali oleh kontak-B maka flip-flop akan mendapat pulsa SET sebanyak pantulan ini. Tetapi hal ini tidak berakibat apa-apa karena flip-flop yang sedang set akan tetap set jika diberi pulsa SET. Jika sakelar dilepas maka kontak diam akan kembali terhubung dengan kontak-A. Pada sentuhan pertama dari kedua kontak ini flip-flop akan di-reset. Jika terjadi pantulan maka flip-flop akan menerima pulsa RESET berulang-ulang namun flip-flop akan tetap dalam keadaan reset karena pemberian pulsa RESET pada flip-flop yang sedang reset tidak akan mempengaruhi keadaan flip-flop. Bentuk pulsa masukan dan keluaran dari rangkaian ini adalah seperti yang diperlihatkan pada Gambar 8.3.

Gambar 8.3 Bentuk pulsa masukan dan keluaran rangkaian debouncing

SISTEM INSTRUMENTASI DAN KONTROL

Anda mungkin juga menyukai