0% menganggap dokumen ini bermanfaat (0 suara)
2K tayangan6 halaman

Debouncing

Debounce digunakan untuk mencegah pendeteksian sinyal ganda dari tombol atau saklar ketika ditekan. Hal ini terjadi karena kontak logam yang bergetar selama beberapa milidetik setelah tekanan. Teknik debounce memperkenalkan penundaan waktu sebelum sinyal diproses untuk memastikan hanya satu sinyal yang terdeteksi. Cara menangani ini adalah menggunakan rangkaian RC atau flip-flop untuk menekan getaran, at

Diunggah oleh

fahmi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
2K tayangan6 halaman

Debouncing

Debounce digunakan untuk mencegah pendeteksian sinyal ganda dari tombol atau saklar ketika ditekan. Hal ini terjadi karena kontak logam yang bergetar selama beberapa milidetik setelah tekanan. Teknik debounce memperkenalkan penundaan waktu sebelum sinyal diproses untuk memastikan hanya satu sinyal yang terdeteksi. Cara menangani ini adalah menggunakan rangkaian RC atau flip-flop untuk menekan getaran, at

Diunggah oleh

fahmi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 6

Debouncing

Debounce adalah Usaha pencegahan penutupan palsu suatu kunci atau saklar yang
telah dikenali sebagai satu cara untuk menguci sinyal masuk. Debounce juga berarti
mengenalkan waktu tunggu yang memberi jeda sebelum dilakukan proses transmisi
data kembali.

Saat Anda menekan tombol pada keyboard komputer Anda, Anda mengharapkan
satu kontak dicatat oleh komputer Anda. Namun, sebenarnya, ada kontak awal,
sedikit memantul atau meringankan kontak, kemudian kontak lain ketika bounce
berakhir, namun yang lain bangkit kembali, dan seterusnya. Efek serupa terjadi
ketika saklar yang dibuat menggunakan kontak logam dibuka. Solusi yang biasa
adalah perangkat debouncing atau perangkat lunak yang memastikan bahwa hanya
satu sinyal digital dapat didaftarkan dalam ruang waktu tertentu (biasanya
milidetik).

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.
Menghilangkan Sinyal Bouncing Pada Input Switch

Switch yg sederhana seringkali menimbulkan bouncing seperti tampak pada gambar berikut:

Untuk menghilangkan sinyal bouncing dari sebuah switch kita bisa menggunakan 2 cara : secara
hardware dan software.

Gambar sinyal bouncing pada osciloscope


1. Menghilangkan sinyal bouncing dengan hardware:

atau

B . SOFTWARE

//initialize and declare variables

const int ledPin = 13; //led attached to this pin

const int buttonPin = 2; //push button attached to this pin

int buttonState = LOW; //this variable tracks the state of the button, low if not pressed, high
if pressed

int ledState = -1; //this variable tracks the state of the LED, negative if off, positive if on

long lastDebounceTime = 0; // the last time the output pin was toggled
long debounceDelay = 50; // the debounce time; increase if the output flickers

void setup() {

//set the mode of the pins...

pinMode(ledPin, OUTPUT);

pinMode(buttonPin, INPUT);

}//close void setup

void loop() {

//sample the state of the button - is it pressed or not?

buttonState = digitalRead(buttonPin);

//filter out any noise by setting a time buffer

if ( (millis() - lastDebounceTime) > debounceDelay) {

//if the button has been pressed, lets toggle the LED from "off to on" or "on to off"

if ( (buttonState == HIGH) && (ledState < 0) ) {

digitalWrite(ledPin, HIGH); //turn LED on

ledState = -ledState; //now the LED is on, we need to change the state

lastDebounceTime = millis(); //set the current time

else if ( (buttonState == HIGH) && (ledState > 0) ) {


digitalWrite(ledPin, LOW); //turn LED off

ledState = -ledState; //now the LED is off, we need to change the state

lastDebounceTime = millis(); //set the current time

}//close if/else

}//close if(time buffer)

}//close void loop

Anda mungkin juga menyukai