你的位置:首页 > 操作系统

[操作系统]Beaglebone BlackGPIO 开关 LED(三极管与继电器实验)


上一篇,用 GPIO 直接供电给 LED,用高低电平作开关,不靠谱。GPIO 是信号用的,不是当电源用的。而且,一个 GPIO 只能给可怜的 5mA 左右,取多了会烧(我没烧过不知道是不是真的会烧,但说明书上面是这样写)。这样玩不过来,所以我做了以下三极管实验。

image_thumb[3]

2N3904 参数请点击这里。不推荐这个,lcm 是 200mA,但我只有它,没办法。三极管,我当作开关用。

先用面包板试一次:

我准备用 BBB 3.3V 取电,2N3904 ,lcm 200mA,就是 C 脚只能 200mA 上限,要用电阻降,我电阻种类不多,拿了个 24Ω 的,接 C 脚。我用 470Ω 把 3.3V 降到 7mA 模拟 GPIO 的高电平输出,到 B 脚。此时接通电源后,B 脚高电平的话,E 脚大概 2.8V,再用150Ω 降到 19mA 左右给 LED(注:LED 超过 25mA 会烧毁)。下图绿色线就是通过电阻接 B 脚的,拔掉就关灯。在面包板上就这样。

DSC_0026

image

总的来说,瞎搞。先用 BBB 试试再说吧。关闭电源情况下接线。P9_1 是 GND,P9_3 是 3.3V 电源,用 P9_13 (GPIO 号 31)作为控制信号输出:

DSC_0027

一开机你会发现,LED 亮着的。进去系统操作 sysfs ,如下:

image

当把 direction 改为 out 时候,灯就会熄灭,应为value 是零。把 value 调为 1,灯就再次亮起。

对于这个结果,本人表示不满意。再来,这次丢掉那麻烦的三极管,改用继电器:

DSC_0028

这个是 3.3V,合适,另一边能承受 AC 240V 7A,或者 DC 28V 10A。大部分继电器都足够玩的了,不过我这个是 3.3V,接 BBB 直接插,方便。

这实验是想用 BBB 控制 5V DC 电路,先测试一下:

DSC_0029

面包板供电 5V,串连两个 LED,再加个 47Ω电阻。点亮。这里电流 21mA 已经接近 LED 能承受的极限(据说是 25mA,我看书上面说LED 正常工作电流是 18-20mA)。

然后接上继电器和 BBB。我很怕毁了 BBB,所以还是加了个 470Ω 电阻 在 GPIO。我不确定不加这电阻会发生什么事。 连接时当然要全部电源关闭。

DSC_0031

继电器控制那一侧,VCC 接 BBB 的 3.3V,GND 接 BBB 的 GND,IN 信号口接 BBB 的 P9_13(GPIO 号31)。但注意继电器的另一侧的电路连接,必须按照厂家说明来接。一般来说,继电器中间是接火线(正极),另外两个口是常开负极和常闭负极。我是接了常闭的负极,就是说,上电后,未收到 BBB 的高电平信号前,LED 不会亮。

检查无误后,BBB 上电,面包板上电。我这继电器有指示灯,下图的指示灯是代表控制方的电源已接通。

DSC_0032

然后,操作 BBB:

image

对以上有疑惑的请看前几篇关于 sysfs 的简单操作。

当输出高电平时候,echo 1 > gpio31/value 后,两颗 LED 亮起:

DSC_0033

当然,echo 0 > gpio31/value 的话,灯就熄灭。

到此为止,实验成功。代码不写了。如果你疑惑这到底有什么用的话…… 继电器能承受 AC 240V 的话,就是你能用 BBB 控制家电电源了。不过暂时我没想到我家有什么家电要拆来玩。要做也不会用 BBB,一个 Wifi 模块就搞定了。

下一篇就是,ESP8266,¥12.5 一个,下一篇用 BBB 串口操作它。