
Rung phím là hiện tượng tín hiệu bị nhiễu (không dứt khoát) khi nhấn phím. Hiện tượng này xảy ra do tiếp điểm vật lý trong nút nhấn tiếp xúc không tốt, dẫn đến có thể trong 1 lần nhấn phím nhưng gây ra nhiều xung tín hiệu như trong hình trên.
Có nhiều giải pháp để khắc phục hiện tượng này.
Chống rung phím bằng phần mềm
Chúng ta sẽ thêm vào những đoạn mã giúp MCU bỏ qua những tín hiệu không mong muốn bằng cách thêm vào những khoảng thời gian Delay sau khi nhấn phím, hệ thống sẽ chờ đến khi tín hiệu ổn định rồi mới lấy và xử lý tín hiệu.
Có một vài cách thêm vào như sau:
if(Button_pressed?)
{
Delay(TimeDebounce); //This value about (ms)
Pressed_State;
}
else Not_Pressed;
Giải thích: Sau khi kiểm tra có tín hiệu nhấn phím, chúng ta để cho hệ thống Delay 1 khoảng thời gian (Tạm dừng chưa lấy tín hiệu). Khoảng thời gian này khá lớn (Cỡ vài chục ms).
Đặc điểm: Khi bạn nhấn phím lâu hơn thời gian Delay thì hệ thống sẽ lại thực thi 1 hoặc nhiều lần nữa. Khiến cho hàm trong mệnh đề IF sẽ được thực hiện hơn 1 lần.
Chúng ta có thể ứng dụng việc này vào việc tăng hoặc giảm giá trị nào đó chẳng hạn….
if(Button_pressed?)
{
While(Button_pressed?) Delay(TimeDebounce); //This value about (ns)
Pressed;
}
else Not_Pressed;
Giải thích: Sau khi hệ thống kiểm tra có tín hiệu nhấn phím hay không, nếu có thì hệ thống sẽ nhảy vào trong mệnh đề IF, tại đây hệ thống sẽ kiểm tra tiếp xem phím có đang được nhấn hay không tại mệnh đề WHILE, nếu có thì sẽ Delay 1 khoảng thời gian. (Giá trị Delay này bạn có thể đặt cỡ vài chục ns - Ít hơn nhiều so với cách phía trên)
Đặc điểm: phương pháp này sẽ Delay liên tục cho đến khi phím được nhả ra thì mới thực thi chương trình xử lý. Tiết kiệm thời gian hơn so với phương pháp trước.
VD trên Arduino
#
Chống rung phím bằng phần cứng

Phương pháp này sẽ thêm vào mạch của bạn 1 vài linh kiện như Tụ điện, Điện trở, Cổng Logic… nhằm ổn định tín hiệu từ nút nhấn.
Một số mạch chống rung có thể tham khảo:



Tín hiệu sau khi lắp thêm tụ vào như sau:

Giải pháp: Ngoài trở treo, chúng ta cần thêm 1 tụ cỡ nhỏ nữa để có thể san những gợn tín hiệu không mong muốn.
Nhược điểm: Tín hiệu đầu ra không thực sự tốt, do có thời gian nạp cho tụ điện nên tín hiệu sẽ có dạng đường cong.



Giải pháp: Thêm linh kiện NAND 4093 hoặc 74HC14 vào để đưa ra tín hiệu xung vuông hoàn chỉnh.

Giải pháp: Cũng đưa ra tín hiệu xung vuông hoàn chỉnh, và có thể lấy ra tín hiệu đảo tại chân Q


Có thể sử dụng các IC chuyên dùng để giải quyết vấn đề chống rung phím một cách nhanh chóng, mạch điện đỡ phức tạp.
Tùy vào mục đích, yêu cầu bài toán đặt ra mà bạn sử dụng các phương pháp Cứng - Mềm kết hợp lẫn nhau.
Đăng nhận xét