在这篇项目文章中,我们将创建一个可编程设备,提醒用户环境光照水平的变化。在此过程中,我们将了解非稳态多谐振荡器和达林顿对。
本文引用地址:
这款Radio Shack Classics Circuit Remix将BBC micro:bit和老式的Science Fair Sensor Robot 20套件组合成一款设备,可以监测光照水平,并在亮度超过预设阈值时触发声音警报。通过整合这些组件,我们旨在说明micro:bit的多功能性和经典业余爱好者工具包的持久教育价值。
与本系列的前几篇文章一样,这个项目基于老式套件手册中的一篇文章——我们只是通过使用micro:bit板作为光传感器并调整光检测阈值来更新它,以包含现代微控制器功能。
与原始模拟设置相比,这具有几个优点。一方面,数字处理的使用允许对传感器进行更复杂的控制。我们可以在代码内设置和调整光感阈值,而不是手动转动拨盘。micro:bit还可以处理光数据以应用过滤器或平均值,确保光水平的瞬态变化不会错误地触发警报。
此外,micro:bit允许将光级数据记录并存储为数字信息,或在监视器上直观显示。添加了另一层功能,micro:bit的LED既可以作为视觉指示器,也可以作为光传感器。
图1显示了已完成的项目,我们称之为混音亮度警报。
图1 完整的混音亮度报警。图片由Don Wilcher提供注:Radio Shack出售了两个不同版本的项目套件,如图所示。我们使用的版本是在1988年推出的,但Radio Shack 1985年的目录中提供了一个略有不同的Sensor Robot 20套件。我们也在使用版本2 micro:bit。
经典亮度报警项目
图2显示了Sensor Robot实验室手册中出现的原始亮度报警项目说明。
图2:原始Sensor Robot 20手册中的亮度报警项目说明。图片由Don Wilcher提供图3提供了电路原理图的特写视图。
图3 原始手册中的亮度报警示意图。图片由Don Wilcher提供此版本的亮度报警包括五个电子子电路:
1. 硫化镉光敏传感器(I4)。
2. 50 kΩ电位计。
3. 达林顿电路(Q1和Q2)。
4. 非稳态多谐振荡器(Q3、Q4和RC负载)。
5. 晶体管驱动的压电蜂鸣器电路(Q5和压电晶体)。
经典项目使用硫化镉(CdS)光敏电阻来检测光。CdS光电池根据照射在其上的光强度改变其电阻。通过手动调节电位计来控制光探测器的灵敏度。
达林顿电路、非稳态多谐振荡器和压电蜂鸣器电路出现在该项目的经典和混音版本中。我们稍后将在文章中讨论它们的操作。然而,亮度报警的重新混合用micro:bit微处理器板取代了CdS电池和50kΩ电位计。此功能将经典的亮度报警升级为可编程的光传感器,能够记录光照水平数据并以数字方式调整检测阈值。
混音亮度报警器的设计与操作
图4说明了混音亮度报警的各个部分是如何协同工作的。除了BBC micro:bit,所有显示的部件都包含在传感器机器人套件中。
图4 混音亮度报警框图。图片由Don Wilcher提供micro:bit既充当光传感器,又充当设备的大脑。当它检测到环境光水平超过编程阈值时,它会偏置达林顿电路。达林顿电路激活基于晶体管的压电蜂鸣器,发出警报音。这种音调的频率由非稳态多谐振荡器决定。
正如我们已经提到的,光检测阈值在micro:bit的代码中设置,可以根据项目要求进行调整。一旦我们完成了物理电路的组装,我们将在本文稍后讨论编程过程。然而,在此之前,让我们检查一下亮度报警的各种子电路的操作。
Micro:bit微处理器板
图5显示了版本2 BBC micro:bit的布局。
图5 BBC micro:bit的布局(版本2)图片由microbit.org提供LED既可以作为光发射器,也可以作为光探测器。当光线照射到LED的P-N结时,由于光电效应,它会产生一个小电流。此属性允许micro:bit使用其5x5 LED矩阵作为光传感器。
为了测量光线,micro:bit会短暂地反向偏置LED,使其充当电容器。micro:bit然后测量LED放电所需的时间。我们可以通过这需要多长时间来判断有多少光照射到LED上——光越亮,放电发生得越快。然后,放电时间被转换为0到255的数字值,表示检测到的光水平。
在完成的器件中,micro:bit的P0引脚连接到达林顿电路的两个NPN晶体管中的第一个。当检测到的光照水平大于编程阈值时,它会触发以下事件序列:
micro:bit向其P0引脚输出3V逻辑高信号,该引脚连接到达林顿电路的第一个NPN晶体管(Q1)。
P0引脚向Q1的基极发送小电流,使Q1导通。
由于Q1导通,达林顿电路(Q2)中的第二晶体管也导通。这就完成了压电蜂鸣器的电路。
现在工作的压电蜂鸣器发出声音报警音。
当光照水平低于编程阈值时,P0引脚保持逻辑低电平,达林顿电路保持关闭,蜂鸣器静音。
达林顿电路
达林顿电路,也称为达林顿对,由两个串联的NPN晶体管(Q1和Q2)组成。当小电流流入第一晶体管的基极时,它会触发第二晶体管。每个晶体管进一步放大信号,从而显著提高电流增益。
图6显示了典型的达林顿对。
图6 达林顿基本配置。图片由Don Wilcher提供在混合亮度报警中,达林顿电路是必要的,因为压电蜂鸣器需要比micro:bit直接提供的电流更多的电流。达林顿对中的第一个晶体管放大来自micro:bit的小信号,而第二个晶体管向蜂鸣器提供电流。放大过程确保即使是最小的输入信号也足以驱动蜂鸣器。
这种设计还降低了micro:bit的功耗,如果您选择使用电池为微处理器板供电,这很方便。micro:bit可以使用3V电池组或插入个人电脑的标准USB电缆供电。
可控多谐振荡器和压电蜂鸣器电路
亮度报警电路的核心是由两个NPN晶体管(Q3和Q4)构建的非稳态多谐振荡器。不稳定多谐振荡器在两个状态之间连续振荡,而不管外部输入如何,产生一致的方波信号。振荡频率由亮度报警的电容器(C1和C2)和电阻器(R1、R2、R3和R4)的值决定。
非稳态多谐振荡器的输出端连接到另一个NPN晶体管(Q5)的基极。该晶体管用作控制压电蜂鸣器的开关。当非稳态多谐振荡器产生逻辑高输出时,Q5导通,允许电流流过压电蜂鸣器并产生声音。当亮度水平超过设定阈值时,这种快速切换会产生我们听到的警报音。
压电蜂鸣器本身是一个传感器,它将多谐振荡器的电脉冲转换为机械振动,从而产生声波。
为了确定非稳态多谐振荡器电路的输出频率,我们使用以下方程:
解释:
f=报警音的频率
R1=电阻器R1的值,该值也是R4的值
R2=电阻器R2的值,该值也是R3的值
C=电容器C1的值,这也是C2的值
对于亮度报警电路,我们将使用以下电阻和电容值:
R1=1 kΩ
R2=10 kΩ
C=0.047μF
如果我们将这些值代入上述方程,我们得到:
如上述方程式所示,您可以通过选择不同的电阻器和电容器来调整报警音的频率。
组装项目硬件
我们现在已经准备好把所有东西放在一起了。图7显示了混音亮度报警的完整示意图。
图7 混音亮度报警示意图。图片由Don Wilcher提供大多数接线说明与项目经典版本中的接线说明相同。您可以在图2中找到这些说明。然而,我们仍然需要将micro:bit连接到设备的其余部分。这是使用两条带鳄鱼夹的测试引线完成的。
图8显示了micro:bit和传感器机器人套件之间的两个接线连接。为了便于参考,我对两条测试引线进行了颜色编码。
将micro:bit连接到传感器机器人套件。
图8 micro:bit通过两根测试引线连接到Sensor Robot套件,一根连接到P0,另一条连接到GND。图片由Don Wilcher提供
程序如下:
将红色测试引线的一端连接到micro:bit的焊盘P0,另一端连接到传感器机器人套件的弹簧端子30。弹簧端子30连接到偏置达林顿对的33kΩ串联电阻器。
将黑色测试引线的一端连接到micro:bit的GND焊盘,另一端连接到套件的弹簧端子3。弹簧端子3是传感器机器人套件9 V电池的负极/接地侧。
Micro:bit编程
现在我们已经组装好了硬件,我们需要在micro:bit中编程一个光检测阈值;我的代码如下所示。
设置亮度警报的光检测阈值的MicroPython代码。
在上面的代码中,THRESHOLD变量设置了光照水平阈值。您可以根据需要调整阈值,以适应不同的环境光照条件。
MicroPython代码持续从micro:bit的LED矩阵中读取光照水平,并将其与阈值进行比较。如果检测到的光照水平超过阈值,P0引脚将设置为逻辑高,激活达林顿电路并触发压电蜂鸣器。如果光照水平低于阈值,P0引脚将设置为逻辑低,使蜂鸣器静音。
您可以使用Mu这样的编程平台轻松地将MicroPython代码加载到micro:bit中。最终的十六进制代码可以闪存编程到micro:bit。
编程替代方案
MicroPython不是你唯一的选择。您还可以在MicrosoftMakeCodemicro:bit编程环境中轻松开发光检测代码(图9)。可以在这个在线编程环境中查看等效的JavaScript和Python代码。
图9 Microsoft MakeCode模拟会话,其中micro:bit显示光照水平和端口P0输出控制。图片由Don Wilcher提供
或者,您可以使用Blockly代码块对micro:bit进行编程。如果你想添加或更改图形,以及模拟micro:bit的光感测和控制功能,这种方法很有帮助。在内置模拟器中,用户可以尝试各种阈值,并立即看到micro:bit的5x5 LED矩阵上显示的响应。
测试已完成的项目
一旦光检测代码被编程到micro:bit中,我们的项目就完成了!要测试亮度报警,请旋转传感器机器人套件上的蓝色控制旋钮将其打开。接下来,将合适的光源(例如手电筒)指向micro:bit的LED。您应该听到压电蜂鸣器发出的警报声。
尝试将手电筒靠近或远离LED矩阵,以检查亮度报警对不同光照水平的响应。您还可以尝试各种光源并观察亮度警报的响应。玩得高兴!
发表评论