Debounce cho nút nhấn bằng tụ điện

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

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ẻ.

lên
19 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Giao tiếp I2C và sử dụng module Realtime clock DS1307 (module RTC)

Xin chào các bạn, bài viết này của mình sẽ giới thiệu về giao tiếp I2C trên Arduino và sử dụng module Realtime clock DS1307.

  • Giới thiệu về chuẩn giao tiếp I2C.
  • Giao tiếp I2C trên Arduino.
  • Cách sử dụng module Realtime Clock DS1307.
lên
37 thành viên đã đánh giá bài viết này hữu ích.

Truyền tín hiệu với module radio frequence 433Mhz

Xin chào các bạn, bài viết hôm nay của mình sẽ giới thiệu về cách truyền dữ liệu không dây bằng modules RF (radio frequence) 433Mhz.

lên
25 thành viên đã đánh giá bài viết này hữu ích.