Học

Vì sao chân input cần điện trở kéo lên, chứ không chỉ một công tắc

Bắt đầu làm miễn phí

Hoặc xem mọi bài học.

  • 465linh kiện trên bàn làm mạch
  • 43bo mạch đang chạy
  • 1.00xthời gian thực, trên mọi bo mạch
Điện trở kéo lênlive0.000 s 0.00x
Giữ nút nhấn
Một điện trở kéo lên 10 kilohm, một nút nhấn, và một cổng NOT làm sáng LED trong lúc giữ nút.

Một nút nhấn, tự nó, chỉ có thể tạo ra một mối nối. Nó không thể ngắt một mối nối vốn không có, và chắc chắn không thể quyết định một sợi dây đọc ra giá trị gì khi không ai chạm vào. Nối một bên nút nhấn vào một chân input số và bên kia vào GND, không có gì khác trên đường nối đó, thì ngay khi thả nút ra, chân input sẽ bị thả nổi: không bị kéo lên cao, không bị kéo xuống thấp, chỉ nằm ở mức điện tích nào còn sót lại trên đó. Với một chân input CMOS, vốn gần như không lấy dòng theo chiều nào, phần điện tích sót lại đó có thể nằm yên khá lâu, và có thể bị đọc thành 1 hay 0 gần như ngẫu nhiên.

Điện trở kéo lên sửa lỗi này bằng cách cho đường nối một chỗ để về khi nút không được nhấn. Trong mạch ở trên, một điện trở 10 kilohm nối từ 5 V tới chính đường nối mà nút nhấn kéo xuống GND. Khi thả nút, điện trở là thứ duy nhất điều khiển đường nối, nên nó nằm ở 5 V: một mức logic cao rõ ràng, thật sự. Nhấn nút thì nút nối thẳng đường nối xuống GND, dễ dàng lấn át lực kéo yếu của điện trở, nên đường nối xuống hẳn 0 V. Thả ra thì điện trở lại kéo nó lên. Không lúc nào đường nối bị bỏ mặc.

Mười kilohm là một lựa chọn có chủ ý, không phải quy tắc. Nó phải đủ nhỏ để đường nối trở về 5 V nhanh và chắc chắn, và đủ lớn để việc nhấn nút không tốn một dòng điện đáng kể khi kéo nó xuống GND: 5 V trên 10 kilohm là nửa miliampe, nhỏ so với gần như mọi thứ khác trên bo mạch nhưng vẫn thừa sức xác định điện áp. Cổng NOT bên phải biến tín hiệu cao khi thả, thấp khi nhấn thành một LED sáng đúng trong lúc giữ nút. Đây là cách thường dùng để logic đọc ra đúng như người dùng mong đợi, mà không làm tải nặng đường nối cảm biến như khi nối LED thẳng vào nó.

Mọi bo mạch mà Mokxi mô phỏng đều có sẵn điện trở này bên trong và bật tắt được bằng firmware. Chế độ INPUT_PULLUP của Uno bật một điện trở kéo lên 35 kilohm nằm ngay bên trong ATmega328P, còn ESP32-C3 và các bo mạch khác cũng có ý tưởng tương tự trên các chân của chúng. Đó là lý do các sketch button có sẵn đọc chân ở mức thấp khi nút được nhấn: điện trở bên trong đã làm công việc mà điện trở bên ngoài làm ở đây, chỉ là yếu hơn và bớt được một linh kiện trên breadboard. Phiên bản bên ngoài ở trên chính là những gì thật sự xảy ra bên dưới trong cả hai trường hợp, chỉ là được bày ra cho bạn thấy.

Lắp mạch này ngoài đời

Mở trình soạn thảo, đổi một giá trị và xem con số thay đổi theo. Không cần cài gì, không cần tài khoản.