Debounce Cho Nút Nhấn Bằng Tụ điện | Cộng đồng Arduino Việt Nam

Nội dung chính cần nắm

Xin chào, bài đăng của mình sẽ nói về kỹ thuật DEBOUNCE cho nút bấm. Đây là kỹ thuật rất đơn giản và hiệu quả.

DEBOUNCE LÀ GÌ

  • Button ( nút bấm) là 1 linh kiện cơ khí, sử dụng kim loại có tính đàn hồi cao để làm tiếp điểm, do đó khi các tiếp điểm tiếp xúc với nhau, sẽ xảy ra hiện tượng các tiếp điểm dao động trước khi ổn định. Tên khoa học của hiện tượng này là "SWITCH BOUNCE" laugh. SWITCH BOUNCE sẽ làm button bị on-off liên tục thêm vài lần mặc dù người sử dụng chỉ nhấn-thả nút có 1 lần và vấn đề này sẽ gây sai lệch giá trị logic (0 và 1) trong project.
  • "DEBOUNCE" chính là tên gọi của cách giải quyết hiện tượng "SWITCH BOUNCE". Có 2 cách để Debounce:
    1. Cách thứ 1 (Debouncing in Software): là lập trình để xác nhận sự kiện nhấn nút mà admin đã viết rất chi tiết. Các bạn xem tại link sau: http://arduino.vn/bai-viet/154-bai-9-nhan-giu-button-de-hoan-vi-trang-thai-cua-led-debounce
    2. Cách thứ 2 (Debouncing in Hardware): là thay đổi về phần cứng để debounce mà mình sẽ đề cập sau đây.

PHẦN CỨNG

  • Arduino Uno
  • Breadboard
  • Dây cắm breadboard
  • 1 button (nút nhấn)
  • 1 điện trở 10 kOhm
  • 1 tụ điện 100nF

LẮP MẠCH

 

GIẢI THÍCH

  • Chân digital để đọc giá trị nút nhấn ở trên là pin 8.
  • Trong mạch trên mình sử dụng điện trở kéo xuống (pull-down resistor), gọi là điện trở kéo xuống vì nó kéo điện áp tại chân digital về LOW ( 0 ) khi không nhấn nút. 
  • Khác biệt duy nhất là mình mắc thêm 1 tụ 100nF song song với cái điện trở 10k. Khi nút được nhấn, điện áp tại chân digital sẽ được kéo lên HIGH ( 1 ), khi nút bấm được thả, chân digital sẽ được kéo về LOW thông qua điện trở 10k, và tụ điện 100nF sẽ tạo ra 1 delay nhỏ, giúp loại bỏ hầu hết các sai sót được tạo ra do hiện tượng "SWITCH BOUNCE."

KẾT LUẬN

Khi đã lắp thêm tụ điện, bạn có thể lập trình đọc nút bấm 1 cách bình thường mà không lo ngại sai sót do "SWITCH BOUNCE" nữa.

Chúc các bạn vui vẻ.

Từ khóa » Chống Nhiễu Nút Nhấn Arduino