射线。是的,有成百上千的关于使用 BJT 进行几乎任何你能想象到的开关安排的好页面。它们也可以很好地用作电平转换器,尽管尽管您使用了该短语,但我实际上并不认为这是您的情况。如果您想查看使用 BJT 进行电平转换的示例,您可以在此处查看我的答案。
下面,与其给你一条鱼,不如教你钓鱼。
对于电流合规性超过您的 I/O 引脚(如继电器)或驱动电压高于您的 I/O 引脚可以处理(再次,如您的继电器)的情况,或者您需要一些感应保护的情况回扣(再一次,就像你的继电器)你可能想要使用外部 BJT 或 FET 作为开关。
您可以安排一些事情,以便开关是:
- 在低侧(靠近地面),或
- 在高端(靠近继电器或其他设备的驱动电压),或
- 两侧(H 桥、桥接负载等)
但是您确实需要有充分的理由来选择上面的 (2) 或 (3)。如果您没有充分的理由,它们涉及更多部分并且通常不必要地复杂。因此,低边开关是检查此类问题的首选。
要设计任何开关,您首先要了解您需要驱动的规格以及驱动它的规格。
让我们看一下ESP8266 数据表:
在这里,您可以看到 I/O 引脚的电流合规性最大值为\$I_{MAX}=12\:\textrm{mA}\$。这意味着您应该计划保持在该值之下。我喜欢保持在最大值的一半以下,如果我能做到,那就更好了。越少越好,因为如果您同时使用多个像这样的不同 I/O 引脚,负载会增加,并且整个端口和整个设备也存在耗散限制。就算没有说出来,它们也是存在的。所以尽量保持低调。
还要注意电压限制。假设您在\$V_{CC}=3.3\:\textrm{V}\$上运行,那么它们保证 80% 的高输出电压,或
$$V_{OH}\ge 2.64\:\textrm {V}\label{voh}\tag{Voh Min}$$
(这意味着,当采购\$I_{MAX}\$时。)它们还保证 80% 的低输出电压,或
$$V_{ OL}\le 330\:\textrm{mV}\label{vol}\tag{Vol Max}$$
(这意味着,当下沉时\$I_{MAX}\$。)
现在让我们看一个典型的继电器数据表:
从这里您可以看到电阻为\$125\:\Omega\$并且所需的电流为\$40\:\textrm{mA}\$。
(另一个细节是,它需要至少 70% 的指定电压才能接合,这证实了 BJT 开关模式、饱和\$V_{CE}\$下降大约十分之几伏是“负担得起的”。如果你不明白我的意思,或者我为什么这么说,当我写 'switch-mode, saturated \$V_{CE}\$ drop' 时,你需要停下来想一想。这很重要。在操作时一个 BJT 作为开关,你买不起大幅度\$V_{CE}\$。你希望它尽可能小,以便它真的像开关一样工作。但要在那里实现小幅度,你需要操作它“饱和”,这意味着适用的\$\beta\$将很低。)
上述数据表明,出于前面提到的所有原因,您确实需要一个外部开关。您需要它是因为它需要比您的 I/O 引脚提供更多的电流合规性,因为您想要保护您的 I/O 引脚免受继电器电感的反电动势的影响,并且因为继电器需要比您的 I/O 更高的电压pin可以提供。甚至不要考虑直接使用 I/O!
您也可以使用几乎任何 BJT,因为继电器所需的电流很小。
(您的继电器可能需要更多电流。但即使是两倍,大多数 BJT 也可以相对轻松地处理。无论如何,如果是这样,您需要这么说。[编辑:我认为您已在我的答案下方的评论中指出测得的电流是\$100\:\textrm{mA}\$。这应该没问题。但它改变了我在下面写的一些值。)
在这种情况下,我会使用我拥有的很多设备:OnSemi PN2222A设备。让我们从检查图 11 开始:
查看图 11,您可以获得很多重要信息。首先是他们“建议”将其作为一个开关操作\$\beta=\frac{I_C}{I_B}=10\$。(您可以在两个地方看到这一点:图表上的最低曲线是饱和时\$V_{CE}\$的值,它们指定\$\frac{I_C}{I_B}=10\$并且他们以相同方式识别的最上面的曲线。)所以这意味着
$$I_B=4\:\textrm{mA}\label{ib}\tag{Ib}$$
这完全在你的 I 的限制之内/O 引脚。所以这很好。第二个是
$$V_{BE}\大约800\:\textrm{mV}\label{vbe}\tag{Vbe}$$
用那个集电极电流。(只需沿 x 轴查看集电极电流,然后查看曲线与 y 轴值相交的位置。)最后一个细节将用于设计。
准备原理图的时间:
模拟此电路- 使用CircuitLab创建的原理图
\$R_1\$的值很容易计算。首先,假设 I/O 引脚在高电平时工作在其最低输出电压。你已经从上面知道了这个值,\$\ref{voh}\$。此外,您可以从上面知道 BJT 基极-发射极电压的典型值\$\ref{vbe}\$。最后,您还知道可能的基电流\$\ref{ib}\$。所以只需计算:
$$R_1=\frac{2.64\:\textrm{V}-800\:\textrm{mV}}{4\:\textrm{mA}}=460\:\Omega\label{r1} \标签{R1}$$
最接近的值是\$470\:\Omega\$。这就是您在示意图中看到的内容。当然,当您尝试将其关闭时,二极管会为继电器的磁场能量崩溃提供路径。否则不进行。
假设您的 I/O 引脚比我们假设的更强大,并且在驱动为高电平时保持完整的\$3.3\:\textrm{V}\$ 。那么 I/O 管脚和 BJT 基极电流将为\$\frac{3.3\:\textrm{V}-800\:\textrm{mV}}{470\:\Omega}\约 4.4\:\textrm{毫安}\$。这也很好,根本不会伤害任何东西。所以这个设计应该很好用。
从 BJT 基极向地添加一个电阻器是有原因的。一个是如果由于某种原因\$R_1\$的另一端处于浮动状态并且未连接到您的 ESP8266,它有助于保持底座靠近地面。还有其他原因。但这在这里并不重要,所以我暂时不讨论它。
编辑:当你指出(在下面的评论中)继电器的值\$100\:\textrm{mA}\$是我上面使用的 2.5 倍时,你可以考虑使用 2.5 倍的想法基极电流。但这些小信号 BJT 中的大多数也可以很好地用作\$\beta\$值的开关,这比我之前阅读图 11 所建议的要高。现在让我们看一下图 4:
在这里,您可以看到标记为\$150\:\textrm{mA}\$的曲线,这超出了您的需要。x 轴是基础电流\$I_B\$,y 轴是\$V_{CE}\$。您希望\$V_{CE}\$的值较低,并且您可以看到它在\$100\:\textrm{mV}\$附近稳定下来。请记住,这些是典型曲线而不是保证曲线,您可以看到使用\$I_B\approx 8\:\textrm{mA}\$看起来非常稳定(远离曲线拐点)并且\$10\: \textrm{mA}\$更好。嗯,这表明\$\beta\$从大约 15 到 20 可能会很好地工作。
在\$100\:\textrm{mA}\$将所有这些放在您的继电器上,由于继电器负载增加,您需要大约 2.5 倍的基极电流,但您可以承受将其降低 1.5 到 2.0 倍的代价由于图 4 曲线。所以也许从早先计算的\$I_B=4\:\textrm{mA}\$到\$I_B=5\:\textrm{mA}\$到\$I_B=6.7\:\textrm{mA} \$很好。
让我们重新计算\$\ref{r1}\$的早期方程:
$$R_1=\frac{2.64\:\textrm{V}-800\:\textrm{mV}}{5\:\textrm{ mA}}=368\:\Omega\label{r1x}\tag{R1 redo 1}$$
$$R_1=\frac{2.64\:\textrm{V}-800\:\textrm{mV}}{6.7\:\textrm{mA}}=275\:\Omega\label{r1y}\tag{R1重做 2}$$
这两者之间?我会选择\$R_1=330\:\Omega\$。我认为那会是合理的。最坏情况下的 I/O 引脚电流应约为\$7.5\:\textrm{mA}\$。这远低于我上面显示的 ESP8266 数据表的最大值\$12\:\textrm{mA}\$,但在它之下已经足够了,我不会太担心。(至少,除非我知道我在大量 I/O 引脚上重复此驱动程序。在这种情况下,我可能会去查看端口或整个设备是否有指定的限制。 )