通过Raspberry Pi闪烁LED项目学习欧姆定律、GPIO和晶体管知识

这篇文章来源于DevicePlus.com英语网站的翻译稿。

本文最初发布在deviceplus.jp网站上,而后被翻译成英语。

Devices Plus的电子制作系列文章已经形成了一个庞大的体系。读者们也很喜欢根据我们的文章制作一些自己的作品。

然而,最近一位读者表示,“虽然我可以做出作品,但是我并没有真正掌握背后的原理。”确实,谈到电力、电子、电路和程序等内容,有些东西并不是那么简单,有时很难理解背后的基本原理。甚至我们编辑部的人员有时也会感到头疼!

此次的分享嘉宾是伊藤尚未先生,一位媒体艺术家和作家,以讲解“更深层次的原理”而闻名。本文将以闪烁LED灯项目为例讲述一些基本原理。要学的东西很多,所以我们直接学习最为重要的部分。当然,学完原理之后,我们还要理论联系实际,学以致用。

[目录]

  • 前言
  • 从闪烁LED学起
  • 欧姆定律
  • Raspberry Pi的GPIO
  • 通过晶体管控制LED
  • 关于闪烁LED的更多知识
  • 闪烁LED项目开发
  • 如何应用我们的设计?

前言

在过去几年中,随着电子行业的发展,微控制器变得非常流行。现在,我们可以使用紧凑的小型器件来感知和控制各种事物,包括光、声音、运动和图像,这感觉很神奇。我小时候的未来梦想正在慢慢实现,这令我感慨万千。

电子制作的内容已经发生了变化,早已不再是用晶体管制作收音机的时代了。进入媒体艺术领域以后,我把电子作品视为工具和材料,就像画笔和颜料,帮助我在艺术领域更充分地表现自己。艺术的表达方式有很多种,而另一方面,爱好动手制作的这类人被称为“创客”。当我看到很多地方都在举办相关活动时,我感慨“兴趣爱好”作为一种亚文化的概念已经发生了变化。

现在,我喜欢用Raspberry Pi进行电子设计,人们可以轻松访问该系统的各种资源。其操作系统还安装了多种应用程序,而且简单易用。

本文使用的Raspberry Pi 3 Model B+

从闪烁LED学起

“闪烁LED”,顾名思义,您会在电路中看到LED灯交替点亮和熄灭。当然,让LED灯闪烁很简单,我们可以利用晶体管和电容等元件重现电路的构建。顺便说一下,下图这个电路是在我的电子作品中经常使用的一种电路,叫做非稳态多谐振荡器电路。该电路由两个晶体管、两个电容、四个电阻和一个LED组成。这些器件焊接在电路板上,用干电池供电。

电路示例:非稳态多谐振荡器

作品示例:铁路标志

在该电路中,LED灯会以大约一秒的间隔闪烁。如果想改变灯的闪烁速度,我们得改变电容的容值和电阻值。要加快闪烁速度,就要减小的电容容值。

我们可以通过微控制器实现这个调整。
通过Raspberry Pi的GPIO输出点亮LED非常简单且易于处理。这方面内容很多书籍中都有介绍,而且市面上有许多功能模块化的专用扩展板,都能提供相关详细信息。但是,他们并没有深入探讨构建电子电路所需的一些最基本的重要知识,所以让我们在这里回顾一下。请回忆一下小学和初中科技课本上学到的知识。

欧姆定律

欧姆定律的描述为:电流=电压/电阻。我学习这个定律的时候,该公式被写成I = E/R。现在的公式是A = V/Ω,对吧?

貌似现在的教科书用的基本都是这个公式,“A(安培)= V(伏特)/Ω(欧姆)”强调的是单位本身,可能更直观易懂。

您可能会在参考书中看到这样的图,但是请注意自己对这个公式的记忆方法。对了,我有一个动物园的朋友,他是这样记忆这个公式的:

“地平线将地球分为上下两部分,天空中有海鸥,海中有鱿鱼和章鱼”

现在,我们就以电池点亮LED为例来说明欧姆定律的实际应用。您可以将LED连接到电源(此处为电池),但由于LED是一种二极管,因此电流有一个方向:将A(阳极)连接到电源正极,将K(阴极)连接到电源负极。

这个连接方向虽然正确,但实际上如果这样直接连接,LED可能会损坏。为避免损坏器件,流过器件的电流大小必须正确。

正确的电流值请参考器件的额定参数表(技术规格书)。我们以一个参数为3.5V/20mA的白光LED为例,这种电参数可以解释为“如果电压电流位于这个安全范围内,那么不会损坏”。换句话说,“如果电参数超出这个范围,它可能会损坏。”

因此,适用于该LED的最佳电压为3.5V,流过的最佳电流为0.02A。

首先,如果电压为3.5V,就得考虑使用电压更高的电源,比如一个由四节干电池组成的6V电源。严格来说,一节新电池的电压可能接近1.6V。当然,目前我们先按照四节电池总电压为6V进行讨论,稍后再介绍全新电池的电压情况。

我想把6V中的3.5V电压施加到LED上,那么剩下的2.5V就得施加到另一个元器件上。这可以通过分压来实现,因此LED需要串联一个负载,一个简单的电阻器即可。

我们来回想一下微型灯泡串联和并联的实验情况,它们的亮度不一样。负载(微型灯泡)串联时,电路电压分配到两个微型灯泡上,负载加倍,所以流过电路的电流为1/2,微型灯泡较暗。

微型灯泡存在个体差异(比如疲劳程度),这会导致负载有所不同

分压之后,每个元件得到一部分电压。现在,我们返回来讨论LED。由于LED是半导体,我们不将其视为负载。因此即使是分压电路,电路中的电流也得通过除LED以外的元件进行计算。

流过电路的电流应该是20mA,那么我们应该使用多大的电阻呢?这可以使用欧姆定律计算。因为“电阻=电压/电流”,2.5V/0.02A=125Ω,所以LED应串联一个125Ω的电阻。电路电压由LED和电阻器分压。

然而,市场上并没有阻值是125Ω的电阻。最接近的电阻阻值为120Ω和130Ω。如果选用120Ω,那么根据欧姆定律,电路的电流为25/120 = 0.0208333。这个值超过了20mA,因此我们应选用130Ω的电阻。电流不超过20mA就可以了。

现在,我们讨论使用全新干电池的情况。如果每节电池的电压是1.6V,那么总电压就是6.4V。如果电阻上的电压为2.9V,那么经过计算其阻值为145Ω。所以,选用一个150Ω的电阻足够了。当然,电阻越大电路越安全,但是LED会变的更暗。请根据自己的设计环境选择适当的阻值。该电阻被称为限流电阻,因为它的作用就是控制流过电路的电流。

Raspberry Pi的GPIO

Raspberry Pi有许多称为GPIO的输入/输出端口,可用于控制外部设备。我没有描述这方面的细节,那我该如何解释电信号是如何产生的呢?

比如,用这个端子能否点亮LED?

当然可以!然而,如前所述,不同LED的额定参数不同。比如,如果我们要点亮一个红色2.0V 20mA的LED,需要使用一个限流电阻。GPIO的输出电压为3.3V,那么分给限流电阻的电压为1.3V,通过的电流为20mA。不过,Raspberry Pi的GPIO最大只能提供16mA的电流,根据欧姆定律,限流电阻应为“1.3V/0.016 = 81.25Ω”,所以我使用了100Ω电阻。虽然这样无法达到该LED的额定性能,但是足以点亮它。您可以很容易地在面包板上做一下这个实验。

实现LED灯闪烁最好的方法还是使用Scratch。

声明GPIO,将GPIO4设为输出,然后向GPIO4输出ON (Hi)。
如果使用左图程序,LED会一直处于点亮状态所以要用OFF(low)来关闭它

如果按照上面的左图程序组装,每秒最多可开关10次

现在,我们已经设法制作出了闪烁的LED灯,但是,如前所述,Raspberry Pi的GPIO的输出电流存在限制。如果您想使用白光或蓝光3.5V LED,或者连接多个LED(想要更亮一些),或者使用大功率、超亮LED,怎么办呢?此时,单个GPIO输出很难实现这种功能。因此,我们需要使用另一个电源供电,并构建一个单独的电路来驱动LED。LED可以使用专用LED驱动器进行驱动,但是本节介绍一种使用晶体管的简单驱动方法。

通过晶体管控制LED

本文使用的是NPN型晶体管2SC1815(目前与2SC1815L、KSC1815等兼容)。晶体管的作用是放大和开关。

我们给基极一个输入,电流就会从集电极流向发射极。此时,基极的输入信号就被放大成一个较大的电流信号。这个过程称为开关。换句话说,模拟处理的过程是放大,数字处理的过程是开关。由于这是通过Raspberry Pi操作的,我们可以将其看成是一个开关功能。

NPN晶体管符号及外形示例

NPN晶体管的基极得到一个正输入后,集电极和发射极就会导通。如果是PNP型晶体管,就需要一个负输入。

根据2SC1815的额定参数表,流过集电极的电流可达150mA。晶体管产品是根据放大系数分级的,在Y级别中,放大系数为120至240。我们假设放大系数为200,要达到150mA的集电极电流,那么流过基极的电流应该为0.75mA。这意味着GPIO只需要输出一个很小的电流。

这里我们连接了一个10kΩ电阻,作为基极的输入。LED采用白光3.5V 20mA,并通过外部干电池供电,因此电路的电压为6V。根据前文的讨论,我们还给LED串联了一个150Ω的限流电阻。

我们按照下图连接好各个器件。

现在,我们把晶体管基极连接到Raspberry Pi的GPIO。首先,我们用面包板进行实验。

剩下的就需要写程序了。但是,您可以像在Scratch中一样使用之前的程序。当然,如果所连接的GPIO引脚变了,那么应该在程序中更改引脚编号。

基本步骤如下,声明使用GPIO,设置该引脚输出、输入等,然后输出ON(Hi)或OFF(Low)。由于正输入通过ON (Hi) 输出施加到晶体管的基极,因此集电极和发射极之间导通,LED点亮。

程序中可能会描述PullUp和PullDown,但这里没有必要,因为引脚已经连接了一个10kΩ电阻到晶体管的基极,作为下拉电阻使用。换句话说,这是硬件设置。

关于闪烁LED的更多知识

如何才能让LED灯闪烁呢?这并不难,因为我们可以用程序来控制ON(Hi)输出或OFF(Low)输出。想像一下,第一个输出是OFF (Low),然后输出ON (Hi),并保持1秒,然后输出OFF (Low),也保持1秒,然后再次输出ON(Hi),只要这样反复即可。那么,我们就会看到LED灯在闪烁。这个Scratch程序例子就是前面文中提到的那个示例。

闪烁LED项目开发

我们已经完成了LED灯的闪烁设计,现在,让我们来尝试控制多个LED。让两个LED灯交替闪烁的方法如下。该电路利用了两个GPIO,每个GPIO驱动一个带晶体管的LED。

这是我制作的两个晶体管驱动电路。电路很简单,但是如果您在面包板上组装,电线会很复杂,所以要注意走线情况。Scratch程序的工作原理如下。

我用的是GPIO3和GPIO4。4先点亮,1秒后关闭4,然后3立即点亮,1秒后关闭3,以此类推。重复10次,如果您想一直重复,应该使用“all”模块。

通过此应用,LED的数量可以根据可用GPIO数量增加,4个或10个。它们不仅可以顺序闪烁,而且可以同时全部闪烁,甚至还可以反向闪烁,具体取决于您的程序。

如何应用我们的设计?

顺便说一句,如果说让LED点亮或闪烁只是实验、编程实践和电子制作培训程度的事,那么,最大的问题是如何应用我们的设计。当然,作为圣诞树的装饰或者照明是个不错的选择。然而,光效不仅仅意味着闪亮,还涉及比如投射阴影、混合颜色、反射和折射、光谱和偏振等各种建模元素。

您还可以根据设备使用光效来创作艺术作品。

这是我的作品。


让埴轮【日本的一种陶俑-译注】舞动起来(2010)(C)伊藤尚未

该设备的这一部分依次点亮六个LED。在这里,六个埴轮的影子通过LED灯投射到墙上,但每个影子都投射在同一个位置,所以影子的形状=身体姿势。换句话说,阴影形成了动画。

我用现代技术将静止的陶土造型创作成了一个富有表现力的艺术品,并取名为“舞动的埴轮”。当然,这个作品需要很长时间才能完成。

所有这一切的基础是闪烁LED灯,但是正如您所见,当您知道如何应用它们时,您可以做更多的事情。当然,您不一定非得要创作这种艺术作品,但偶尔发挥创意很有趣,不是吗?

总结

电子设计很有趣,但是除了构建设备,您还可以做些什么?您怎样才能让它更有趣?其实您可以考虑不同的应用场景和表现方式,创作出更加复杂和有趣的内容。然后,您就能百尺竿头更进一步。

DevicePlus 编辑团队
DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

相关文章

  1. 用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第三部分

  2. 用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第二部分

  3. 用Raspberry Pi和传感器制作“可自动营造舒适空间的装置” 第一部分

  4. 您今年会需要的8大智能家居电子项目

  5. Geekcraft:构建您自己的Raspberry Pi运动检测器

  6. 极客造物:简易Raspberry Pi温湿度传感器

  7. 让我们用小型Raspberry Pi Zero制作移动设备吧! 使用Grove传感器制作环境检测设备…

  8. 使用Raspberry Pi进行传感器输入实验

  9. 通过Raspberry Pi使用LED和电机:如何处理大电流

TECH INFO

  • 重点必看
  • 技术分享
  • Arduino入门指南

基础知识

  • Si功率元器件
  • IGBT功率元器件
  • 热设计
  • 仿真
  • 开关噪声-EMC
  • AC/DC
  • DC/DC
  • 电机
  • 传递函数

工程技巧


PICK UP!

  1. 刘铭
  2. ROHM开发出业界先进的第4代低导通电阻
PAGE TOP