mBlock & Arduino(15)认识晶体管与继电
小小云提示:教程作者caterpillar是来自台湾的programmer(kinda),所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)
Arduino 的 I/O 脚位可供给的电压、电流有限,只能用于 LED 这类小元件,对于需要更高电压或电流的设备,像是直流马达、大型电器等就没办法负担,对于小型直流马达等元件,可以使用晶体管(Transistor)来供给较大量的电流,对于大型电器,可以透过继电器(Relay)来控制。
认识晶体管
实际上,提到晶体管时,多半是指双极型晶体管(Bipolar junction transistor, BJT),依组合的半导体材料,可以分为 NPN 与 PNP 两大类,以 NPN 晶体管为例,是由 N 型半导体与 P 型半导体组合而成:
![](https://img.haomeiwen.com/i1362450/12195b63e6cff4ee.jpg)
晶体管有两接面、三个端点,端点分别为集极(Collector)、基极(Base)与射极(Emitter),NPN 晶体管的基本特性是,射极电流 Ie 为基极电流 Ib 与集极电流 Ic 之和,而增益 α = Ic / Ie,β = Ic / Ib,Ib 通常远小于 Ic。
当三个端点施加之偏压不同时,晶体管会处于不同状态:
B-E 为顺向偏压,且 B-C 为顺向偏压时,此时晶体管状态处于饱和区(Saturation region),此时 C 与 E 可视为短路,依电路实际连接情况,Ic 会处于一个饱和电流值。
B-E 为逆向偏压,且 B-C 为逆向偏压时,此时电晶体状态处于截止区(Cutoff region),此时 C 与 E 可视为开路,不过,实际上还是会有少量电流通过,这个现象称为“漏电”(Leakage)。
B-E 为顺向偏压,且 B-C 为逆向偏压时,此时晶体管状态处于动作区(Active region),此时可用于信号放大。
各区实际的偏压,以及 α、β 等值,需要查询晶体管的规格书而定,如果想将晶体管作为开关使用,基本电路之一如下:
![](https://img.haomeiwen.com/i1362450/738271cce19c398e.jpg)
如果 Vi 处于高电位状态,那么流经基极的电流 Ib 就是 (Vi – Vbe) / Rb,而流经集极的电流就是 Ic = β * Ib,因此,可以用 Rb 来控制流经 Rl 的电流。
举个例子来说,以下的电路连接,可以让我手边的 2N3904 电晶体驱动一个直流小马达(不过会很烫,不要通电太久…XD):
![](https://img.haomeiwen.com/i1362450/bb82154d3c50ad86.jpg)
你可以透过一个小程式来测试一下:
![](https://img.haomeiwen.com/i1362450/f9115f1a6a66a77b.jpg)
执行程式的话,你就会看到直流马达每转动一秒就停一秒,如果你直接将直流马达一端接到脚位 D8,一端接 GND,在脚位为高电位时,会因为电流不足,无法驱动直流小马达。
如果想驱动 9V 或 12V 以上的马达,可以如下:
![](https://img.haomeiwen.com/i1362450/5e239a9bc555b125.jpg)
由于马达是电力产生磁力,而磁力与马达内部磁铁作用而产生转动,为了避免马达停止供电瞬间而产生的反动电压,会加上一个二极体加以保护。
(如果想运用晶体管提供更大的电流来驱动马达,可以使用两个或多个晶体管的组合,像是达灵顿晶体管;有些 Arduino 相容板,像是Motoduino,本身就内建了可驱动马达的电路,想做马达驱动相关产品时很方便。)
认识继电器
如果要控制电力需求更大的电器,那么可以使用继电器,若是常见的电磁式继电器,其运作原理可使用下图来表示:
![](https://img.haomeiwen.com/i1362450/9045d52218fc8c4d.jpg)
当脚位 D8 送出高电位时,晶体管会导通而使得线圈通过电流,因而产生磁力将开关吸合,因而导通电路,脚位 D8 送出低电位时,电流停止通过线圈,磁力消失而开关回到原位,为了避免反动电压,会加上一个二极体保护。
市面上有一些继电器模组,本身已经将相关电阻、二极体与晶体管兜好,例如我手边这颗 Keyes_SRly,还有 LED 显示继电器是否作动:
![](https://img.haomeiwen.com/i1362450/493eb37922e46ded.jpg)
如果你买的继电器,只是上头蓝色的元件,那么就必须如先前介绍,自行将相关电阻、二极体与晶体管兜好,如果是继电器模组,就只可以直接使用。
首先要注意的是继电器本身的规格,例如上头 SRD-05VDC-SL-C 这个继电器,适用于 10A 的 250V 与 125V 交流电源,以及 10A 的 30V 与 28V 直流电源。
继电器模组上有三个接点,中间那个是共用接点(COMMON),相当于先前概要图中的第 2 个接点,NO 表示常开(Normal Open),也就是平时与共用接点保持开路,相当于先前概要图中第 3 个接点,NC 表示常关(Normal Close),表示平时与共用接点处于接通状态。
继电器的接脚有三个,也就是会有 Vcc、GND 以及开关三个接脚,为了安全起见,这边还是使用继电器控制直流小马达来试试看:
![](https://img.haomeiwen.com/i1362450/5817d325bd0e79ae.jpg)
同样只要使用上头撰写的小程式,测试看看直流小马达是否如预期般运作(你还可以听见继电器吸合时滴答滴答的声音)。
感谢CodeData用户:caterpillar的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云