Arduino金属探测器

您所在的位置:网站首页 protools节拍探测器 Arduino金属探测器

Arduino金属探测器

#Arduino金属探测器| 来源: 网络整理| 查看: 265

Arduino金属探测器

原文:https://circuitdigest.com/microcontroller-projects/arduino-metal-detector-circuit-code ARDUINO项目

在这里插入图片描述 金属探测器是一种安全装置,探测可能有害的金属。以前我们已经制作了非常简单的没有微控制器的金属探测器,现在我们正在使用Arduino建造金属探测器。在这个项目中,我们将使用线圈和电容器来检测金属。在这里,我们使用了Arduino Nano来构建这个金属探测器项目。对于所有电子爱好者来说,这是一个非常有趣的项目。无论此探测器检测到附近有任何金属,蜂鸣器都会非常迅速地发出蜂鸣声。

所需组件:

以下是使用Arduino构建简单的DIY金属探测器所需的组件。所有这些组件都应该在您当地的硬件商店中容易获得。

Arduino(任何)线圈10nF电容器蜂鸣器1k电阻330欧姆电阻LED1N4148二极管面包板或PCB连接线9v电池 金属探测器如何工作?

每当有电流流过线圈时,都会在线圈周围产生磁场。磁场的变化会产生电场。现在根据法拉第定律,由于该电场,线圈两端将产生一个电压,该电压与磁场的变化相反,这就是线圈产生电感的方式,这意味着所产生的电压与电流的增加相反。电感的单位为亨利,测量电感的公式为:

L = ( μ ο ∗ N 2 ∗ A ) / l L = (μ_ο * N^2 * A) / l L=(μο​∗N2∗A)/l Where, L- Inductance in Henries(电感,单位为亨利) μο- 透气性Permeability, its 4π*10-7 for Air N- Number of turns匝数 A- Inner Core Area (πr2) in m2 内芯面积 (πr2 ),单位为 m2 l- Length of the Coil in meters线圈长度,单位为米

当任何金属靠近线圈时,线圈就会改变其电感。电感的这种变化取决于金属类型。对于非磁性金属,它会减少,对于金属磁性材料(如铁),它会增加。

取决于线圈的磁芯,电感值会急剧变化。在下图中,您可以看到空心电感,在这些电感中,没有实心磁芯。它们基本上是残留在空中的线圈。电感器产生的磁场的流动介质是空的或空气的。这些电感器的电感值非常小。 在这里插入图片描述

当需要几微的亨利值时,可以使用这些电感器。对于大于几毫亨利的值,则不适合。在下图中,您可以看到带有铁氧体磁芯的电感器。这些铁氧体磁芯电感具有非常大的电感值。 在这里插入图片描述 请记住,此处缠绕的线圈是空心线圈,因此,当将一块金属片放在线圈附近时,该金属片将用作空心电感器的磁芯。通过这种金属作为芯,线圈的电感改变或显着增加。与没有金属片的情况相比,由于线圈电感的突然增加,LC电路的总电抗或阻抗发生了相当大的变化。

因此,在这个Arduino Metal Detector项目中,我们必须找到线圈的电感来检测金属。为此,我们使用了已经提到的LR电路(电阻器-电感器电路)。在此电路中,我们使用了大约20匝的线圈或直径为10cm的绕组。我们用了一个空的胶带卷,将电线缠绕在它周围制成线圈。 在这里插入图片描述

电路图:

我们已经使用Arduino Nano来控制整个Metal Detector项目。LED和蜂鸣器用作金属检测指示器。线圈和电容器用于检测金属。信号二极管也用于降低电压。还有一个电阻,用于限制流至Arduino引脚的电流。 在这里插入图片描述 在这里插入图片描述

工作说明:

这款Arduino Metal Detector的工作有些棘手。在这里,我们将Arduino产生的块波或脉冲提供给LR高通滤波器。因此,在每个过渡阶段,线圈都会产生短的尖峰。产生的尖峰的脉冲长度与线圈的电感成正比。因此,借助这些尖峰脉冲,我们可以测量线圈的电感。但是这里很难精确地测量那些尖峰的电感,因为这些尖峰的持续时间非常短(约0.5微秒),而Arduino很难测量。 在这里插入图片描述

因此,我们取而代之的是使用一个由上升脉冲或尖峰充电的电容器。而且它只需几个脉冲就可以将电容器充电到Arduino模拟引脚A5可以读取其电压的程度。然后Arduino使用ADC读取该电容器的电压。读取电压后,通过将capPin引脚作为输出并将其设置为低电平,电容器迅速放电。整个过程大约需要200微秒。为了获得更好的结果,我们重复测量并取结果的平均值。这就是我们可以测量Coil的近似电感的方法。得到结果后,我们将结果传送到LED和蜂鸣器以检测金属的存在。查看本文末尾给出的完整代码以了解其工作原理。

本文结尾给出了完整的Arduino代码。在该项目的编程部分中,我们使用了两个Arduino引脚,一个用于生成要在Coil中馈入的块波,另一个使用了模拟引脚来读取电容器电压。除了这两个引脚,我们还使用了另外两个Arduino引脚来连接LED和蜂鸣器。

您可以在下面查看Arduino Metal Detector的完整代码和演示视频。您会看到,只要检测到金属,LED和蜂鸣器就会开始快速闪烁。

代码

/* Metal Detector Arduino Code www.circuitdigest.com */ #define capPin A5 #define buz 9 #define pulsePin A4 #define led 10 long sumExpect=0; //running sum of 64 sums long ignor=0; //number of ignored sums long diff=0; //difference between sum and avgsum long pTime=0; long buzPeriod=0; void setup() { Serial.begin(9600); pinMode(pulsePin, OUTPUT); digitalWrite(pulsePin, LOW); pinMode(capPin, INPUT); pinMode(buz, OUTPUT); digitalWrite(buz, LOW); pinMode(led, OUTPUT); } void loop() { int minval=1023; int maxval=0; long unsigned int sum=0; for (int i=0; i0) buzState=1; else if (diff300) buzState=0; if (buzState==0) { digitalWrite(led, LOW); noTone(buz); } else if (buzState==1) { tone(buz,2000); digitalWrite(led, HIGH); } else if (buzState==2) { tone(buz,500); digitalWrite(led, HIGH); } } //subtract minimum and maximum value to remove spikes sum-=minval; sum-=maxval; if (sumExpect==0) sumExpect=sum6; diff=sum-avgsum; if (abs(diff)>10) { sumExpect=sumExpect+sum-avgsum; ignor=0; } else ignor++; if (ignor>64) { sumExpect=sum


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3