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

电器工程 电阻器 拉起
2022-01-10 22:44:20

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

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

其中许多项目使用 10K 电阻器,只是说它是一个很好的值。

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

3个回答

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

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

以下是猜测一个好的上拉/下拉电阻值时的一些经验法则:

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

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

更多细节,我们必须看看引体向上的作用。假设您有一个想要用微控制器读取的按钮。按钮是瞬时 SPST(单刀单掷)开关。它有两个连接点,连接或不连接。按下按钮时,两点连接(开关闭合)。释放时,它们未连接(开关打开)。微控制器本身并不检测连接或断开连接。他们确实感觉到的是电压。由于此开关只有两种状态,因此使用数字输入是有意义的,毕竟它被设计为仅处于两种状态之一。微处理器可以直接感知数字输入处于哪个状态。

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

对上拉电阻的尺寸有两个主要的竞争要求。它必须足够低以稳固地将线路拉高,但又足够高以在开关闭合时不会导致过多的电流流动。这两者显然都是主观的,它们的相对重要性取决于具体情况。通常,您将上拉电阻设置得足够低,以确保在开关打开时线路处于高电平,否则可能会使线路处于低电平。

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

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

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

现在让我们看看另一个竞争考虑因素,即按下开关时浪费的电流。如果该装置没有线路电源或以其他方式处理大量功率,则几毫安无关紧要。在 5V 时,需要 5 kΩ 才能消耗 1 mA。在某些情况下,这实际上是“很多”电流,并且由于其他考虑而远远超过所需。如果这是一个电池供电的设备,并且开关可能在相当大的时间内打开,那么每个 µA 都可能很重要,您必须非常仔细地考虑这一点。在某些情况下,您可能会定期对开关进行采样,并且仅在采样周围短时间打开上拉电阻,以最大限度地减少电流消耗。

除了电池操作等特殊考虑之外,100 kΩ 的阻抗足够高,让我对拾取噪声感到紧张。开关打开时浪费的 1 mA 电流似乎是不必要的大。所以 500 µA,这意味着 10 kΩ 阻抗是正确的。

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

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

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

在关闭状态下,微控制器的输入连接到地,所以它会看到一个低电平。还会有电流流过电阻。一个好的原理图会告诉你电阻的一端连接到+5V,轻触开关将另一端连接到地。看看有没有10kΩ电阻会做。那么通过电阻的电流等于510ķΩ= 500μ答:这似乎是合理的。让我们看看当开关打开时是否也可以。

在开关打开状态下,我们可以忽略它,并假设 V+ 和微控制器输入之间只有电阻。我们从经验中知道,或者,更好的是,因为我们在数据表中查找过,当您向微控制器输入施加电压时,只会流过非常少的电流,通常小于 1μA. 假设它是 1μA. 那么电阻两端的电压降将为 1μ一种×10kΩ= 10毫伏。输入端的电压将为 4.99V。这可能没问题,但让我们正确地完成我们的工作。如果您有原理图(我想您现在已经掌握了,不是吗?)您会知道微控制器是什么类型的。我知道 Arduino 是 AVR,所以我会随机选择一个 AVR 数据表电气特性表明,高输入电平应至少为 0.6× DD(第 320 页)。那是3V,所以4.99V是安全的。

如果我们选择了不同的电阻值会怎样?较低的值意味着较小的压降,输入电压甚至会高于 4.99V。但是当开关闭合时,会有更多的电流通过电阻器,这是你不想要的。
当开关闭合时,较高的电阻值是可以的,因为电流较小,但微控制器上的输入电压将低于 4.99V。我们这里有一些空间,所以稍微高一点的值可能是可以的。

结论

  1. 10kΩ对于开关打开和关闭的情况都可以。
  2. 学习绘制原理图和阅读数据表