如何从最大 4mA GPIO 引脚驱动 20mA LED

电器工程 引领 晶体管 GPIO
2022-01-19 11:07:27

我有一个带有 GPIO 的 IC,我想用它来驱动 LED。

由于设备将耗尽电池电量,因此优先考虑在 LED 关闭时保持低功耗(可能为零)。

GPIO 开启时提供 3.3V,关闭时提供 0.0V 投票。

它还具有最大 4mA 的限制。

LED 具有 20mA 的正向电流和 2.0V 的所需正向电压。

当 LED 打开时,它很可能会在低千赫兹范围内闪烁(使用 PWM)。

在四处寻找之后,我相信这可能是我需要的电路类型。

在此处输入图像描述

问题 1:我是否已经接近正确的轨道。

问题 2:第 (5) 项(晶体管或 Mosfet)使用的正确组件是什么,我该如何找到一个(在当地的 Frys、RadioShack、在线)以及如何识别(指定)?

问题3:第(5)项的选择对第(3)项电阻的欧姆值有影响吗?除了 3.0V 电源和 2.0V LED 的正常欧姆定律。

问题 4:如果需要,电阻器项目 (2) 的欧姆值是多少。

4个回答

您展示的电路应该可以工作,但是不必要地复杂且昂贵。这里有一些更简单、更便宜的东西:

几乎任何你能找到的小型 NPN 晶体管都可以发挥这个作用。如果晶体管的 BE 压降为 700 mV,则 LED 会下降 2.0 V,那么当 LED 亮起时,R1 上将有 600 mV。在本例中,这将允许 17 mA 电流流过 LED。如果您可以忍受 LED 发出的较低光并希望节省一些电量,请提高电阻。

该电路的另一个优点是晶体管的集电极可以连接到高于 3.3 V 的电压。这不会改变通过 LED 的电流,只会改变晶体管上的电压降,从而改变它的耗散量。如果 3.3 V 来自小型稳压器并且 LED 电流会增加显着负载,这将很有用。在这种情况下,将集电极连接到未调节的电压。晶体管实际上成为 LED 的稳压器,LED 电流将来自未稳压的电源,不会用完 3.3 V 稳压器的有限电流预算。

添加:

我看到这个电路的工作原理以及为什么没有基极电阻有些混乱。

该晶体管用于射极跟随器配置以提供电流增益,而不是电压增益。来自数字输出的电压足以驱动 LED,但无法提供足够的电流。这就是为什么电流增益有用但电压增益不是必需的原因。

让我们看一下这个电路,假设 BE 压降固定为 700 mV,CE 饱和电压为 200 mV,增益为 20。除了增益较低之外,这些都是合理的值。我现在故意使用低增益,因为我们稍后会看到晶体管只需要最小增益。只要增益在最小值到无穷大之间,该电路就可以正常工作。因此,我们将分析小信号晶体管的不切实际的低增益 20。如果一切正常,我们对你会遇到的任何真正的小信号晶体管都很好。例如,在这种情况下,我展示的 2N4401 可以指望具有大约 50 的增益。

首先要注意的是晶体管不能在这个电路中饱和。由于基极被驱动至最多 3.3 V,由于 700 mV BE 压降,发射极永远不会超过 2.6 V。这意味着整个 CE 始终至少有 700 mV,远高于 200 mV 饱和水平。

由于晶体管始终处于其“线性”区域,因此我们知道集电极电流是基极电流乘以增益。发射极电流是这两个电流的总和。因此,发射极与基极的电流比为增益+1,在我们的示例中为 21。

要计算各种电流,最简单的方法是从发射极开始,并使用上述关系得到其他电流。当数字输出为 3.3 V 时,发射器的电压低 700 mV,或为 2.6 V。已知 LED 下降 2.0 V,因此 R1 上的电压为 600 mV。根据欧姆定律:600mV / 36Ω = 16.7mA。这将很好地点亮 LED,但留有一点余量,不超过其 20 mA 最大值。由于发射极电流为 16.7 mA,因此基极电流必须为 16.7 mA / 21 = 790 µA,集电极电流为 16.7 mA - 790 µA = 15.9 mA。数字输出可以提供高达 4 mA 的电流,因此我们完全符合规格,甚至没有显着加载它。

净效应是基极电压控制发射极电压,但提供发射极电流的繁重工作是由晶体管完成的,而不是数字输出。来自集电极与基极的 LED 电流(发射极电流)的比率是晶体管的增益。在上面的示例中,增益为 20。对于通过 LED 的每 21 部分电流,1 部分来自数字输出,20 部分来自通过晶体管集电极的 3.3 V 电源。

如果收益更高会发生什么?来自基极的 LED 总电流甚至更少。增益为 20 时,20/21 = 95.2% 来自收集器。增益为 50 时,它是 50/51 = 98.0%。无限增益是 100%。这就是为什么这个电路实际上非常容忍零件变化的原因。LED 电流的 95% 还是 99.9% 来自通过集电极的 3.3 V 电源并不重要。数字输出上的负载会发生变化,但在所有情况下,它都会远低于其最大值,所以这无关紧要。发射极电压在所有情况下都相同,因此无论晶体管的增益为 20、50、200 还是更高,LED 都会看到相同的电流。

我之前提到的这个电路的另一个微妙优势是集电极不需要连接到 3.3 V 电源。例如,如果收集器连接到 5 V,情况会如何变化?从 LED 或数字输出的角度来看,什么都没有。请记住,发射极电压是基极电压的函数。集电极电压无关紧要,只要它足够高以使晶体管不饱和,已经达到 3.3 V。唯一的区别是晶体管上的 CE 压降。这将增加晶体管的功耗,在大多数情况下,这将成为最大集电极电压的限制因素。假设晶体管可以安全地耗散 150 mW。使用 16.7 mA 的集电极电流,我们可以计算集电极到发射极的电压以产生 150 mW 的耗散:

这意味着在此示例中,我们可以将集电极连接到 3.3V 至 11.6V 的任何方便的电源。它甚至不需要进行调节。它可以在该范围内的任何地方主动波动,并且 LED 电流将保持非常稳定。这可能很有用,例如,如果 3.3 V 是由一个电流能力很小的稳压器制造的,并且其中大部分已经分配。例如,如果它使用大约 5 V 电源运行,则该电路可以从该 5 V 电源获得大部分 LED 电流,同时仍能很好地调节 LED 电流而且,该电路对晶体管部件的变化非常宽容。只要晶体管具有一定的最小增益,远低于大多数小信号晶体管提供的增益,电路就可以正常工作。

这里的一个教训是思考电路是如何工作的。在工程中没有膝跳反应或迷信的地方,例如总是将电阻器与底座串联。需要时放一个,但请注意,并非总是如此,如该电路所示。

今天的许多 LED 都非常亮,并且在 4mA甚至更低的电流下表现良好,它可以为您节省额外的外部组件。我常用的 LED 在 1mA 时工作得非常好(对于我的应用)!

只需将一个电阻与 LED 串联,大到足以限制电流。请检查您是否不超过整个设备的最大电流,它在数据表中指定。

因此,请检查您的 LED 是否足够亮,直接从 GPIO 引脚连接到一个串联电阻:

\$R = \frac{U_{drop}}{I_{LED}}\ = \frac{3.3-2.0\text{V}}{4\text{mA}} = \frac{1.2\text{V} }{4\text{mA}}= 300\Omega\$

为了安全起见,将其四舍五入到下一个 E12 值到 330\$\Omega\$。

我知道您的问题是关于分立元件的,但我认为在一般情况下,您最好查看基于 IC 的缓冲器或线路驱动器。例如,ULN2803 是一个八通道缓冲器(8 个 I/O),从您的 GPIO 引脚汲取的电流小于 2mA,但每个输出可驱动高达 500mA。(这是反转逻辑,因此您的代码需要考虑到这一点)。显然,您希望为 LED 使用限流电阻。

评论原帖中提议的示意图:

使用像这样的分立 NMOS FET 晶体管作为开关会很好。

  • MOSFET 的栅极不需要串联电阻。
  • 选择一个阈值电压比您的电源电压低约 1V 的 FET,以确保它在开启时会很好地进入饱和状态,然后 MOSFET 上的电压降会很低。(MOSFET 是非常好的开关。)
  • LED 电流将由 ILED = (VCC - Vf - Vds)/R 设置。对于所示的数字,假设 FET 上的电压为 0.2V,R = (3.3 - 2.0 - 0.2)/20mA = 51 或 56ohms(最接近的标准值)

注意:通常 LED 阳极与电源相连,电阻与阴极串联;这可以通过减少开关时必须充电/放电的电路中的电容量来缩短开关时间,因为关闭时阴极电压将“崩溃”到阳极电压。

正如另一张海报提到的,如果 LED 所需的电流足够低,您可以直接使用 GPIO。在开漏模式下,它与外部 FET 的行为相同(但反向)。但我不建议长时间以超过 1mA 的电流运行 uC 端口;IC 可能不是为像这样的大恒定电流而设计的(可能是电迁移或自热问题)。