如何计算上拉电阻的所需值?


98

有很多教程将上拉或下拉电阻与开关结合使用以避免接地,例如

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

这些项目中有许多使用10K电阻,只是说明它是一个很好的值。

给定一个特定的电路,我如何确定下拉电阻的适当值?可以计算出来,还是最好通过实验确定?


我发现sparkfun的本教程很好地介绍了上拉和下拉电阻器sparkfun上拉电阻,并且为您提出的最出色的问题提供了很好的答案。
理查德·钱伯斯

Answers:


82

快速解答:经验和实验是您确定正确的上拉/下拉值的方法。

长答案:上拉/下拉电阻是RC定时电路中的R。信号转换的速度取决于R(您的电阻器)和C(该信号的电容)。通常,很难确切知道C,因为它取决于许多因素,包括走线如何在PCB上布线。由于您不了解C,因此您无法弄清楚R应该是什么。那就是经验和试验的地方。

当猜测一个好的上拉/下拉电阻器值时,有一些经验法则:

  • 在大多数情况下,3.3k至10k欧姆都可以。
  • 对于功率敏感电路,请使用较高的值。50k甚至100k欧姆可用于许多应用(但不是全部)。
  • 对于速度敏感的电路,请使用较低的值。1k欧姆很常见,而低至200欧姆的值并非闻所未闻。
  • 有时,与I2C一样,“标准”指定要使用的特定值。其他时候,芯片应用笔记可能会建议一个值。

10
200欧姆上拉?哇,多数民众赞成在静态电流。
2011年

4
@ 0x6d64-您假设静态时总线为低电平。
康纳·沃尔夫

3
德州仪器(TI)提供了很好的参考,不仅解释了如何计算I2C上拉电阻的值,而且还解释了公式的实际推导方法。请参见ti.com/lit/an/slva689/slva689.pdf上的《 I2C总线上拉电阻计算应用报告》。
JamieSee'Jul

77

使用10kΩ,这是一个很好的值。

有关更多详细信息,我们必须查看上拉功能。假设您有一个要使用微控制器读取的按钮。该按钮是一个瞬时SPST(单刀单掷)开关。它具有两个已连接或未连接的连接点。按下按钮时,两个点连接在一起(开关闭合)。释放时,它们未连接(开关打开)。微控制器不会固有地检测连接或断开连接。他们所感知的是电压。由于此开关只有两种状态,因此使用数字输入是有意义的,毕竟,数字输入被设计为仅处于两种状态之一。微控制器可以直接检测数字输入处于哪种状态。

上拉电阻有助于将开关的打开/关闭连接转换为微控制器可以感知的低压或高压。开关的一侧接地,另一侧连接至数字输入。当按下开关时,线路被迫拉低,因为开关实质上将其接地。但是,当释放开关时,没有任何东西将线路驱动到任何特定电压。它可能会保持低电平,通过电容耦合拾取附近的其他信号,或者由于通过数字输入的微小泄漏电流而最终浮动至特定电压。上拉电阻的作用是在开关断开时提供正的保证高电平,但在闭合时仍允许开关安全地将线接地。

上拉电阻的尺寸有两个主要的竞争要求。它必须足够低,以将线牢固地拉高,但必须足够高,以在闭合开关时不会引起太多电流流动。两者都是主观的,它们的相对重要性取决于情况。通常,考虑到所有可能使线路拉低的因素,您应使上拉电阻足够低,以确保开关断开时线路拉高。

让我们看看拉长线需要什么。仅查看直流要求即可发现数字输入线的泄漏电流。理想的数字输入具有无限的阻抗。当然,实际的并不理想,它们的不理想程度通常表示为可以流出或流入引脚的最大漏电流。假设您的Micro在其数字输入引脚上指定的最大漏电流为1 µA。由于上拉必须使线路保持高电平,因此最坏的情况是假设该引脚看起来像一个1 µA的接地电流。例如,如果要使用1MΩ上拉电阻,则1 µA电流将在1MΩ电阻上产生1伏电压。假设这是一个5V系统,这意味着该引脚只能保证达到4V。现在,您必须查看数字输入规格,并了解逻辑高电平的最低电压要求。对于某些微米,这可能是Vdd的80%,在这种情况下为4V。因此,一个1MΩ的上拉电阻就在边缘。出于DC考虑,您至少需要比保证正确的行为少一些。

但是,还有其他考虑因素,这些因素很难量化。每个节点都具有与所有其他节点的电容耦合,尽管耦合的大小随距离而降低,从而仅附近的节点是相关的。如果这些其他节点上有信号,这些信号可能会耦合到您的数字输入上。较低的上拉电阻会使线路的阻抗较低,从而减少了它将拾取的杂散信号量。它还为您提供了更高的最小保证直流电抗泄漏电流,因此,在直流电与数字输入可能会将结果解释为逻辑低电平而不是预期的逻辑高电平之间存在更大的空间。那么多少就足够了?显然,本例中的1MΩ上拉电阻还不够(电阻太高)。几乎不可能猜测耦合到附近的信号,但我希望在最小直流情况下至少有一个数量级的裕度。这意味着我希望至少上拉100kΩ或更低,尽管如果周围有很多噪声,我希望它更低。

还有一个考虑因素将上拉电阻降低,那就是上升时间。线路对地会有一些杂散电容,因此将呈指数形式向电源值衰减,而不是立即到达那里。假设所有杂散电容加起来为20 pF。那时100kΩ上拉电阻为2 µs。它需要3个时间常数才能达到稳定值的95%,在这种情况下为6 µs。这与人类时间无关紧要,因此在本示例中无关紧要,但是,如果这是一条数字总线,则您希望以200 kHz的数据速率运行,那么它将无法正常工作。

现在,让我们看看另一个相互竞争的考虑因素,即按下开关时浪费的电流。如果此设备的电源不可用或以其他方式处理大量功率,则几毫安无关紧要。在5V时,需要5kΩ的电流才能吸收1 mA电流。在某些情况下,这实际上是当前的“大量”工作,并且由于其他考虑而远远超出了要求。如果这是电池供电的设备,并且开关可能在相当长的时间内导通,则每个µA都可能很重要,因此您必须非常仔细地考虑一下。在某些情况下,您可能会定期对开关进行采样,并且仅在采样周围的短时间内打开上拉电阻,以最大程度地减小电流消耗。

除了诸如电池操作之类的特殊注意事项外,100kΩ的阻抗还足够高,让我对拾取噪声感到不安。接通开关时浪费的1 mA电流似乎过大。所以500 µA,这意味着10kΩ的阻抗大约是正确的。

就像我说的,使用10kΩ。这是一个很好的价值。


1
另外的要求是,某些开关(例如普通的“轻触”型开关)仅指定用于非常低的电流(例如1 mA)。请注意,10k(在5V或更低电压下)满足此要求,但必须牢记要考虑的是更低的电阻值。
Wouter van Ooijen

1
@Wouter-我最喜欢的轻触开关不仅具有50mA的最大值(对我而言似乎为1mA),而且还具有最小值。为了保持触点清洁,我在开关上并联了一个电容器,其想法是在切换时短路电流峰值会保持触点清洁。尽管在测试中仅指定了10万次循环的寿命,但使用它们至20万次循环我们没有问题。
stevenvh 2012年

@stevenvh您能否详细说明与开关并联的电容器?为何使初始短路电流较高才能保持触点清洁?
阿卜杜拉·卡拉曼2013年

这种情况下,您可能会看到过多的电容耦合影响上拉电阻值。看起来很疯狂,但事实并非如此。我有一个令人讨厌的三态输出,正在用ADC读取。一块电路板,上拉一个220k就足够了,因此ADC可以读取所有三态。在另一个板上(放置更紧密的板上),我需要一个100k的引体向上。以为我整个上午都在追疯药。
Leroy105 '18

23

首先,这种教程是没有用的,它们不会教您电子学。您必须学习如何绘制示意图,然后进行接线。
因此,由于缺少原理图,我不得不从接线图中自行得出。好的,这并不难,但是当您绘制原理图时,您会发现缺少一些东西:轻触开关连接到什么?您必须知道这一点才能回答您的问题。我认为这是微控制器的数字输入,但是没有办法知道。

有两种情况:轻触开关打开和开关闭合。

Ω5V10kΩμ

μμμ×Ω× VDD

如果我们选择了不同的电阻值怎么办?较低的值将意味着较少的电压降,并且输入电压将甚至高于4.99V。但是,当开关闭合时,会有更多的电流流经电阻,这是您不想要的。
当开关闭合时,较高的电阻值就可以了,因为电流较小,但微控制器上的输入电压将低于4.99V。我们这里有一些余量,因此可以使用更高的值。

结论

  1. Ω
  2. 学习绘制原理图并阅读数据表

6
我不同意这是没有用的,事实上,在谈到Arduino时,用Fritzing制作的接线图现在可能比原理图更常见。必须考虑听众。
戴夫牛顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.