Hướng dẫn sử dụng điện trở treo
Điện trở treo có tác dụng gì?
Điện trở treo (pull up resistor) là một điện trở được đấu nối sao cho một chân của nó ở mức cao (thường là 5V), chân còn lại được đấu vào ngõ vào hoặc ngõ ra của các mạch số.
Giả sử chúng ta có một vi điều khiển với chân bất kỳ được thiết lập là ngõ vào, nếu không kết nối bất kỳ thứ gì vào chân ấy thì điện áp ở chân đó sẽ là không xác định. Nói cách khác mức logic của chân đó cũng không được xác định và vi điều khiển của chúng ta sẽ rất khó khăn trong việc đọc chính xác giá trị của ấy. Khi đó việc dùng điện trở treo sẽ giúp vi điều khiển xác định là chân đó đang ở trạng thái cao hay thấp. Để hiểu rõ hơn, ta sẽ tiếp tục một ví dụ chi tiết việc kết nối một nút bấm (BUTTON) với vi điều khiển và đọc giá trị của nút bấm ấy.
Khi nút bấm hở, trạng thái được đọc vào ở ngõ vào (
input pin) là mức cao thay vì một trạng thái không xác định khi không dùng điện trở treo.
Khi nút bấm chạm, ngõ vào sẽ được nối trực tiếp với đất (
GND), và trạng thái được đọc vào là mức thấp.
Ta sẽ bỏ qua việc đề cập tới hiện tượng rung cơ khí của phím bấm trong trường hợp này. Và như vậy, với việc sử dụng điện trở treo, ta đã xác định được chính xác hơn trạng thái của ngõ vào vi điều khiển.
Vậy, giá trị của điện trở treo là bao nhiêu thì hợp lý?
Giá trị phổ biến của điện trở này là loại 10kOhm, và giá trị của nó phải thỏa mãn hợp lý 2 điều kiện:
- Khi nút được bấm, ngõ vào sẽ được đưa xuống mức thấp, giá trị này sẽ xác định cường độ dòng điện đi từ VCC xuống GND qua điện trở treo (R1 như trên hình vẽ).
- Khi nút nhả ra, ngõ vào sẽ được đưa lên mức cao, và giá trị của điện trở treo sẽ xác định điện áp của ngõ vào ở vi điều khiển.
Với điện kiện thứ nhất, chúng ta không thể chọn một giá trị điện trở nhỏ, điều đó sẽ ảnh hưởng tới công suất tiêu thụ trên mạch của bạn. Và giá trị của điện trở cũng không thể quá lớn để thỏa mãn điều kiện thứ 2 ở trên. Một công thức tổng quát hơn là sử dụng điện trở treo có giá trị bằng 1/10 trở kháng của ngõ vào. Ở các loại vi điều khiển, trở kháng này thường từ 100k cho tới 1MOhm. Chúng ta có thể nhận ra rằng, khi nút không chạm, sẽ có một dòng điện nhỏ chạy từ VCC qua R1 như trên hình vẽ. R1 và R2 sẽ chia áp vào ngõ vào, điện áp này phải đủ lớn để vi điều khiển có thể đọc được giá trị điện áp mức cao. Một số loại vi điều khiển, như dòng ATmega của Atmel thường được thiết kế sẵn điện trở treo ở bên trong và chúng có thể được bật lên hoặc tắt đi trong trường hợp cần thiết. Một điều cần phải chú ý là với giá trị của điện trở treo càng lớn thì khả năng đáp ứng tín hiệu sẽ càng chậm, bởi lẽ để đọc được trạng thái của ngõ vào người ta thường ghép nối ngõ này với 1 mạch lọc RC, mạch lọc này cần thời gian để có thể nạp hoặc xả điện tích trên tụ mỗi khi thay đổi điện áp. Nếu bạn ghép nối với 1 đường truyền tốc độ cao (như USB chẳng hạn), bạn sẽ cần chú ý tới điều này.