使用晶体管用 arduino 打开多个 LED

电器工程 Arduino 引领 晶体管
2022-01-31 11:55:49

我希望能够用 Arduino 的一个引脚打开 50 个红色 LED。我不想要个人控制,我只想能够将它们全部打开或全部关闭。

我找到了这个例子它使用2N3904晶体管。这是我想要采取的方法吗?我想我需要一个更高功率的晶体管?

我正在使用连接到带有 5v 稳压器的定制板的外部电源,因此我直接从该稳压器为 LED 供电。

LED 采用这种 LED 灯条阵列的形式(或至少非常相似)......

我在下面的答案中的评论中提到,我在每个 LED 上使用了一个 330 欧姆的电阻。在这个项目的另一部分,我使用灯条作为电平表,每个单独的 LED 通过移位寄存器控制,因此是单独的电阻器。在考虑之后我意识到我现在不需要在每个 LED 上串联一个电阻器,因为它们要么全部打开,要么全部关闭(嗯……对不起我相当随意的评论!)。

我确实想过我可以拥有某种可以断开接地或 5V 的电子开关。这可行吗?

3个回答

晶体管基本上是一个可以断开接地或 5V 的开关。有各种各样的晶体管,有些可以切换真正巨大的负载。50个LED没什么大不了的。

那么问题来了:单个 2N3904 可以切换 50 个 LED 吗?

要回答这个问题,我们首先需要知道什么的 LED。但是让我们假设您使用的是通常没有什么特别的品种。这些最大电流的合理估计是\$20mA\$。如果你有 50 个,那么最大电流是 \$20mA \cdot 50 = 1000mA \$。查看数据表,我看到 2N3904 的最大集电极电流为 \$ 200 mA \$。所以答案是否定的:你不能用一个 2N3904 切换 50 个 LED。20mA. If you have 50, then the maximum current is 20mA50=1000mA. Looking at 200mA. So the answer is no: you can not switch 50 LEDs with one 2N3904.

我想你有几个选择:

  • 使用多个 2N3904
  • 使用更少的 LED
  • 使用相同的 LED,但用更少的电流驱动它们
  • 使用更大的晶体管(TIP121很容易找到)
  • 使用其他一些开关设备

其中,我认为降低 LED 电流或使用更大的晶体管可能是最可能的解决方案。其他开关设备(如继电器)可能更昂贵且速度更慢。

考虑到给出的信息(在 1.95V、5v 电源、2mA 电流、330Ω 电阻器下注明 50 个红色 LED),以下将起作用。

考虑到常见的 LED 电阻计算:
(Vcc - 正向电压)/电流
其中 Vcc 为 5v,正向电压为每 LED 1.95v,因为我们有两个串联,1.95v * 2,所需电流为 2mA。
(5 - (1.95 * 2)) / 0.002 或 (5 - 3.9) / 0.002 或 1.1 / 0.002 = 550。
由于您有 330Ω 电阻器,因此进行调整将为每个系列提供 3mA。不是每个 LED,而是每个系列,因为串联路径中的电流相等。每个系列的电阻器,在这种情况下是两个,将使用相同的 3mA 电流。因此,这将方程简化为 3mA * 25 串联链,仅需要切换 75mA。

任何常见的小信号晶体管(如 2n3904)都可以毫无问题地处理 75mA。在晶体管基极和 MCU 引脚之间使用 1kΩ 基极电阻。

请注意,下面的示意图仅显示了一个 LED 条,您只需以相同的方式添加其余部分。将第一个 LED 的阴极连接到下一个 LED 的阳极,每对一个电阻。

示意图

模拟此电路- 使用CircuitLab创建的原理图

您应该使用 Arduino 上的引脚来控制打开继电器的晶体管,继电器触点通过接地打开所有 LED。如果您必须使用晶体管,那么是的,您需要找到一个可以处理所有电流的晶体管。即使使用继电器,也请务必检查触点电流额定值。请参见下面的示例电路。根据您选择的继电器的额定电流和线圈电阻,您可能需要也可能不需要 R2。

在此处输入图像描述