Làm cách nào để tính giá trị cần thiết cho điện trở kéo lên?


98

Có nhiều hướng dẫn sử dụng điện trở kéo lên hoặc kéo xuống kết hợp với công tắc để tránh mặt đất nổi, ví dụ:

http://www.arduino.cc/en/Tutorial/button

Nhiều dự án trong số này sử dụng điện trở 10K, chỉ nhận xét rằng đó là một giá trị tốt.

Với một mạch cụ thể, làm cách nào để xác định giá trị phù hợp cho điện trở kéo xuống? Nó có thể được tính toán, hoặc nó được xác định tốt nhất bằng thử nghiệm?


Tôi tìm thấy hướng dẫn này từ sparkfun một giới thiệu tốt về điện trở kéo lên và kéo xuống Sparkfun Điện trở kéo lên và câu trả lời cho câu hỏi được đăng tuyệt vời nhất của bạn là tuyệt vời.
Richard Chambers

Câu trả lời:


82

Trả lời nhanh: Kinh nghiệm và thử nghiệm là cách bạn tìm ra giá trị pullup / pulldown thích hợp.

Câu trả lời dài: Điện trở pullup / down là R trong mạch thời gian RC. Tốc độ mà tín hiệu của bạn sẽ chuyển đổi sẽ phụ thuộc vào R (điện trở của bạn) và C (điện dung của tín hiệu đó). Thông thường, C rất khó để biết chính xác vì nó phụ thuộc vào nhiều yếu tố, bao gồm cả cách truy tìm dấu vết đó trên PCB. Vì bạn không biết C, bạn không thể hiểu R nên là gì. Đó là nơi kinh nghiệm và thử nghiệm đến.

Dưới đây là một số quy tắc khi đoán giá trị điện trở kéo xuống / tốt:

  • Đối với hầu hết mọi thứ, 3,3k đến 10k ohms hoạt động tốt.
  • Đối với các mạch nhạy cảm công suất, sử dụng giá trị cao hơn. 50k hoặc thậm chí 100k ohms có thể hoạt động cho nhiều ứng dụng (nhưng không phải tất cả).
  • Đối với các mạch nhạy cảm tốc độ, sử dụng giá trị thấp hơn. 1k ohms là khá phổ biến, trong khi các giá trị thấp tới 200 ohms không phải là chưa từng thấy.
  • Đôi khi, giống như với I2C, "tiêu chuẩn" chỉ định một giá trị cụ thể sẽ sử dụng. Những lần khác, các ghi chú ứng dụng chip có thể đề xuất một giá trị.

10
200 ohms cho một pullup? Wow, đó là rất nhiều hiện tại yên tĩnh.
0x6d64

4
@ 0x6d64 - Bạn đang giả sử xe buýt thấp khi không hoạt động.
Sói Connor

3
Texas Cụ có một tài liệu tham khảo rất tốt giải thích không chỉ cách tính giá trị cho điện trở kéo lên I2C, mà cả công thức thực sự có nguồn gốc. Xem Báo cáo ứng dụng tính toán điện trở kéo xe buýt I2C tại ti.com/lit/an/slva689/slva689.pdf .
JamieSee

77

Sử dụng 10 kΩ, đó là một giá trị tốt.

Để biết thêm chi tiết, chúng ta phải xem những gì một pullup làm. Giả sử bạn có một nút bấm bạn muốn đọc bằng vi điều khiển. Nút nhấn là một công tắc SPST tạm thời (Single Single Single throw). Nó có hai điểm kết nối được kết nối hoặc không. Khi nhấn nút, hai điểm được kết nối (công tắc được đóng lại). Khi được phát hành, chúng không được kết nối (công tắc đang mở). Vi điều khiển vốn không phát hiện kết nối hoặc ngắt kết nối. Những gì họ làm có ý nghĩa là một điện áp. Vì công tắc này chỉ có hai trạng thái nên sử dụng đầu vào kỹ thuật số, điều mà sau tất cả được thiết kế chỉ ở một trong hai trạng thái. Các vi có thể cảm nhận trạng thái đầu vào kỹ thuật số trực tiếp.

Một pullup giúp chuyển đổi kết nối mở / đóng của công tắc thành điện áp thấp hoặc cao mà vi điều khiển có thể cảm nhận được. Một bên của công tắc được kết nối với mặt đất và bên kia với đầu vào kỹ thuật số. Khi nhấn công tắc, đường dây bị ép thấp vì về cơ bản công tắc đã rút ngắn nó xuống đất. Tuy nhiên, khi công tắc được giải phóng, không có gì dẫn đường dây đến bất kỳ điện áp cụ thể nào. Nó chỉ có thể ở mức thấp, thu các tín hiệu khác gần đó bằng cách ghép điện dung hoặc cuối cùng nổi đến một điện áp cụ thể do dòng điện rò rỉ nhỏ thông qua đầu vào kỹ thuật số. Công việc của điện trở pullup là cung cấp mức cao được bảo đảm tích cực khi công tắc mở, nhưng vẫn cho phép công tắc rút ngắn đường dây xuống đất một cách an toàn khi đóng.

Có hai yêu cầu cạnh tranh chính về kích thước của điện trở pullup. Nó phải đủ thấp để kiên cố kéo dòng lên cao, nhưng đủ cao để không gây ra quá nhiều dòng điện khi đóng công tắc. Cả hai đều chủ quan và quan trọng tương đối của họ phụ thuộc vào tình hình. Nói chung, bạn làm cho pullup chỉ đủ thấp để đảm bảo dòng cao khi công tắc mở, với tất cả những điều có thể làm cho dòng thấp xuống nếu không.

Chúng ta hãy nhìn vào những gì nó cần để kéo lên dòng. Chỉ nhìn vào yêu cầu DC phát hiện ra dòng rò của dòng đầu vào kỹ thuật số. Đầu vào kỹ thuật số lý tưởng có trở kháng vô hạn. Tất nhiên, những người thực sự không, và mức độ họ không lý tưởng thường được biểu thị dưới dạng dòng rò tối đa có thể đi ra hoặc đi vào chốt. Giả sử micro của bạn được chỉ định cho 1 rò rỉ tối đa trên các chân đầu vào kỹ thuật số của nó. Vì pullup phải giữ cho đường cao, trường hợp xấu nhất là giả sử pin trông giống như một dòng chìm 1 1A xuống đất. Ví dụ, nếu bạn sử dụng pullup 1 MΩ, thì 1 PhaA đó sẽ gây ra 1 Volt trên điện trở 1 MΩ. Giả sử đây là hệ thống 5V, vì vậy điều đó có nghĩa là chân chỉ được đảm bảo lên đến 4V. Bây giờ bạn phải xem thông số kỹ thuật đầu vào kỹ thuật số và xem yêu cầu điện áp tối thiểu là gì đối với mức cao logic. Đó có thể là 80% Vdd cho một số micros, sẽ là 4V trong trường hợp này. Do đó, pullup 1 MΩ nằm ngay bên lề. Bạn cần ít nhất một chút ít hơn thế để có hành vi đúng được đảm bảo do những cân nhắc của DC.

Tuy nhiên, có những cân nhắc khác, và những điều này khó định lượng hơn. Mỗi nút có một số khớp nối điện dung với tất cả các nút khác, mặc dù cường độ của khớp nối giảm theo khoảng cách sao cho chỉ các nút lân cận có liên quan. Nếu các nút khác có tín hiệu trên chúng, các tín hiệu này có thể kết hợp với đầu vào kỹ thuật số của bạn. Một pullup giá trị thấp hơn làm cho trở kháng đường truyền thấp hơn, làm giảm lượng tín hiệu đi lạc mà nó sẽ nhận. Nó cũng cung cấp cho bạn mức DC được bảo đảm tối thiểu cao hơn so với dòng rò, do đó, có nhiều khoảng trống hơn giữa mức DC đó và nơi đầu vào kỹ thuật số có thể hiểu kết quả là mức logic thấp thay vì mức logic cao dự định. Vậy bao nhiêu là đủ? Rõ ràng pullup 1 MΩ trong ví dụ này là không đủ (điện trở quá cao). Gần như không thể đoán được khớp nối với các tín hiệu gần đó, nhưng tôi muốn ít nhất một thứ tự biên độ lớn so với trường hợp DC tối thiểu. Điều đó có nghĩa là tôi muốn có một pullup 100 kΩ hoặc thấp hơn ít nhất, mặc dù nếu có nhiều tiếng ồn xung quanh tôi muốn nó thấp hơn.

Có một sự xem xét khác thúc đẩy pullup thấp hơn, và đó là thời gian tăng. Đường dây sẽ có một số điện dung đi lạc xuống đất, do đó sẽ phân rã theo cấp số nhân theo giá trị cung cấp thay vì ngay lập tức đi đến đó. Giả sử tất cả các điện dung đi lạc tăng thêm tới 20 pF. Lần đó, pullup 100 kΩ là 2 trận. Phải mất 3 hằng số thời gian để có được tới 95% giá trị thanh toán, hoặc 6 mẹo trong trường hợp này. Điều đó không có kết quả trong thời gian của con người vì vậy không có vấn đề gì trong ví dụ này, nhưng nếu đây là một tuyến xe buýt kỹ thuật số bạn muốn chạy ở tốc độ dữ liệu 200 kHz thì nó sẽ không hoạt động.

Bây giờ hãy xem xét sự cân nhắc cạnh tranh khác, đó là sự lãng phí hiện tại khi nhấn công tắc. Nếu thiết bị này sắp hết nguồn hoặc xử lý công suất đáng kể, một vài mA sẽ không thành vấn đề. Ở 5V, phải mất 5 kΩ để vẽ 1 mA. Đó thực sự là "rất nhiều" hiện tại trong một số trường hợp, và nhiều hơn yêu cầu do những cân nhắc khác. Nếu đây là một thiết bị chạy bằng pin và công tắc có thể được bật trong một khoảng thời gian đáng kể, thì mỗi chiếc Patrick có thể có vấn đề và bạn phải suy nghĩ về điều này rất cẩn thận. Trong một số trường hợp, bạn có thể lấy mẫu công tắc theo định kỳ và chỉ bật pullup trong một thời gian ngắn xung quanh mẫu để giảm thiểu mức rút hiện tại.

Khác với những cân nhắc đặc biệt như hoạt động của pin, 100 kΩ là trở kháng đủ cao để khiến tôi lo lắng về việc thu tiếng ồn. 1 mA dòng điện bị lãng phí khi bật công tắc có vẻ lớn không cần thiết. Vì vậy, 500 PhaA, có nghĩa là trở kháng 10 kΩ là đúng.

Như tôi đã nói, sử dụng 10 kΩ. Đó là một giá trị tốt.


1
Và yêu cầu bổ sung là một số công tắc, ví dụ như các công tắc loại 'thông minh', chỉ được chỉ định cho dòng điện rất thấp, ví dụ 1 mA. Lưu ý rằng 10k (ở mức 5V hoặc thấp hơn) đáp ứng yêu cầu này, nhưng nó phải được lưu ý khi xem xét các giá trị điện trở thấp hơn.
Wouter van Ooijen

1
@Wouter - công tắc chiến thuật yêu thích của tôi không chỉ có tối đa 50mA (1mA có vẻ thấp đối với tôi), mà còn tối thiểu. Để giữ cho các tiếp điểm sạch, tôi đặt một tụ điện song song với công tắc, ý tưởng là đỉnh dòng ngắn mạch khi chuyển mạch giữ cho các tiếp điểm sạch sẽ. Mặc dù tuổi thọ chỉ có 100 000 chu kỳ được chỉ định trong thử nghiệm, chúng tôi không gặp vấn đề gì khi sử dụng chúng đến 200 000 chu kỳ.
stevenvh

@stevenvh Bạn có thể giải thích thêm về tụ điện song song với công tắc không? Làm thế nào đến, làm cho dòng ngắn mạch ban đầu cao giữ cho các địa chỉ liên lạc sạch sẽ?
abdullah kahraman

Tình huống này trong đó bạn có thể thấy khớp nối điện dung quá mức ảnh hưởng đến giá trị điện trở kéo lên. Có vẻ điên rồ, nhưng nó không phải là. Tôi có một đầu ra ba trạng thái đáng ghét, mà tôi đang đọc với một ADC. Một bảng, kéo lên 220k là đủ để tất cả các trạng thái ba trạng thái có thể được đọc bởi ADC. Trên một bảng khác (được đặt chặt hơn), tôi cần một cái kéo lên 100k. Nghĩ rằng tôi đã uống thuốc điên rồ đuổi theo cả buổi sáng.
Leroy105

23

Đầu tiên, loại hướng dẫn này là vô dụng, họ sẽ không dạy bạn thiết bị điện tử. Bạn phải học cách vẽ sơ đồ , hệ thống dây điện đi kèm sau đó.
Vì vậy, thiếu sơ đồ tôi phải tự rút ra nó từ sơ đồ nối dây. OK, điều đó không khó lắm, nhưng khi bạn vẽ sơ đồ, bạn sẽ thấy thiếu một thứ: công tắc chiến thuật kết nối với cái gì? Bạn phải biết rằng để trả lời câu hỏi của bạn. Tôi đoán đó là một đầu vào kỹ thuật số của vi điều khiển, nhưng không có cách nào để biết.

Có hai tình huống: công tắc chiến thuật mở và công tắc đóng.

Ở trạng thái đóng, đầu vào của vi điều khiển được kết nối với mặt đất, do đó nó sẽ thấy mức thấp. Cũng sẽ có một dòng điện qua điện trở. Một sơ đồ tốt sẽ nói với bạn rằng một đầu của điện trở được kết nối với + 5V, công tắc chiến thuật kết nối đầu kia với mặt đất. Hãy xem liệu một điện trở 10k sẽ làm gì. Khi đó dòng điện qua điện trở bằng = 500 A. Điều đó có vẻ hợp lý. Hãy xem liệu điều đó có ổn không khi công tắc mở. 5 VΩ L5V10kΩμ

Ở trạng thái mở công tắc, chúng ta có thể bỏ qua nó và giả vờ rằng chỉ có điện trở giữa V + và đầu vào của vi điều khiển. Chúng tôi biết từ kinh nghiệm, hoặc, tốt hơn, bởi vì chúng tôi đã tra cứu trong bảng dữ liệu rằng khi bạn đặt điện áp vào đầu vào vi điều khiển, sẽ chỉ có dòng điện rất nhỏ, thường là dưới 1 A. Hãy nói rằng đó là 1 A Sau đó, điện áp rơi trên điện trở sẽ là 1 A 10k = 10mV. Điện áp trên đầu vào sau đó sẽ là 4,99V. Điều đó có thể ổn, nhưng hãy làm việc của chúng ta đúng cách. Nếu bạn đã có một sơ đồ (tôi nghĩ rằng bạn đã có nó bây giờ, phải không?) Bạn sẽ biết loại vi điều khiển là gì. Tôi biết Arduino là AVR, vì vậy tôiL L × Ω × V D Dμμμ×Ωbảng dữ liệu AVR ngẫu nhiên . Các đặc tính điện nói rằng mức đầu vào cao phải ít nhất là 0,6 (trang 320). Đó là 3V, vì vậy 4.99V là an toàn. × VDD

Điều gì xảy ra nếu chúng ta đã chọn một giá trị điện trở khác nhau? Giá trị thấp hơn có nghĩa là giảm điện áp ít hơn và điện áp đầu vào thậm chí sẽ cao hơn 4,99V. Nhưng sau đó sẽ có thêm dòng điện qua điện trở khi đóng công tắc và đó là điều bạn không muốn.
Giá trị điện trở cao hơn sẽ ổn khi đóng công tắc, vì sẽ có ít dòng điện hơn, nhưng điện áp đầu vào trên vi điều khiển sẽ thấp hơn 4,99V. Chúng tôi có một số khoảng trống ở đây, vì vậy giá trị cao hơn có thể sẽ ổn.

phần kết luận

  1. 10k phù hợp cho cả tình huống mở và đóng.Ω
  2. Tìm hiểu để vẽ sơ đồ và đọc dữ liệu

7
Tôi không đồng ý rằng điều đó là vô ích, trên thực tế các sơ đồ nối dây được tạo bằng Fritzing có lẽ phổ biến hơn sơ đồ khi nói đến Arduino. Khán giả phải được xem xét.
Dave Newton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.