15浏览
查看: 15|回复: 2

[项目] 【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器

[复制链接]
由于采用了微控制器,因此结构非常简单,而且还采用了 LM358 IC 进行弱信号放大的模块。

金属探测器是一种用于探测附近金属的仪器。这次我将向你展示如何利用Arduino微控制器和其他一些元件,制作一款灵敏度极高但操作简单的“感应平衡”型金属探测器。


感应平衡原理采用两个线圈,它们之间几乎没有电感拾取。调制信号被输入其中一个线圈。当金属靠近时,电磁场会受到干扰,另一个线圈会拾取到明显更高的信号。

在我之前的几个视频中,您可以看到不同类型的金属探测器的制作过程。就探测能力而言,这款探测器的灵敏度最高,但它的另一个巨大优势在于它是一款独立仪器,无需智能手机,而智能手机是之前灵敏度最接近的探测器之一。由于采用了微控制器,它的构造非常简单,而且带有一个用于弱信号放大的模块,该模块采用LM358 IC,价格不到50美分。对于无法获得该模块的用户,我还提供了一个原理图,其中放大电路由两个标准NPN晶体管完成,器件的灵敏度与上一种情况相同。

其工作原理如下:Arduino 在引脚 8 处产生信号,然后由 MOSFET 晶体管放大并馈送到发射线圈。然后,接收线圈的信号通过 LM358 模块(或在第二种方案中使用两个晶体管)放大,并传输到 A0 模拟输入。我们还在模拟输入端配备了两个电位器,用于调节反应阈值,从而调节仪器的灵敏度。当检测到金属物体时,蜂鸣器和 LED 会发出声音和视觉提示。

正如我之前提到的,该设备的构建相对简单,包含几个组件:

- Arduino 纳米微控制器

- LM358低信号放大器模块

- 功率 mosfet 晶体管(我的情况是 STP65NF06,但您可以使用任何功率 mosfet,例如 IRF630)

- 两个10K欧姆电位器

- 蜂鸣器

- 引领

- 以及带有适当电容器的双 D 形搜索线圈,在本例中为 1 微法拉。

要完成这个项目,您可以从 PCBWAY 订购 PCB 原型。订购方法非常简单,您只需 5 美元即可获得 10 块 TG150-160 质量极佳的 PCB。您可以为该电路设计 Gerber 文件并将其上传到他们的网站 (www.pcbway.com)。通常情况下,订单发货只需 3 到 5 天。

现在来简单介绍一下线圈。它们由60圈0.4平方毫米(32 swg)的漆包铜线组成,绕成一个直径为15厘米的圆圈。然后将它们弯成字母D的形状。导线应紧密缠绕在一起,并保持良好的束状,并用胶带固定,以便在从线圈中取出时保持连接。需要两个这样的线圈,并且两个线圈完全相同。您可以在我之前的视频中找到更多关于如何绕制线圈的信息。探测器的灵敏度主要取决于线圈,尤其是它们的位置。将它们放置在理想​​的位置需要大量的耐心和时间,但这恰恰是制造设备的最大乐趣,尤其是当我们达到最佳性能时。

首先,我们需要将两个线圈轻轻地固定成视频中看到的形状。两个电位器应位于中间位置附近,打开探测器,小心地将线圈移动到声音消失的位置。然后,我们将电位器移动到声音出现之前的位置。现在,我们将用一个更大的金属物体测试操作。此过程需要重复多次,直到获得最大灵敏度。对于带有放大器模块的版本,我们可以尝试通过逆时针旋转两个电位器来进一步提高灵敏度,但这样探测器会更加不稳定,并且对线圈的微小位移非常敏感。

正如您在视频中看到的,该探测器可以检测到距离 20 厘米或更远的小硬币、距离 40 厘米的硬盘驱动器以及距离 80 厘米以上的空中大型金属物体。

当然,能否找到埋藏在土壤中的物体取决于土壤条件。干沙是最合适的,而粘土是最差的介质。

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图1

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图2

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图3

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图4

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图5

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图6

驴友花雕  中级技神
 楼主|

发表于 昨天 19:40

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器

项目代码

  1. void setup() {
  2. pinMode(A0, INPUT);
  3. pinMode(A1, INPUT);
  4. pinMode(8, OUTPUT);
  5. pinMode(A4, INPUT);
  6. pinMode(A5, OUTPUT);
  7. }
  8. void loop() {
  9. int val1 = 0;
  10. int val2 = 0;
  11. int val3 = 0;
  12. int val4 = 0;
  13. int val5 = 0;
  14. int val6 = 0;
  15. int val7 = 0;
  16. int val8 = 0;
  17. int val9 = 0;
  18. int val10 = 0;
  19. int sumval = 0;
  20. int impuls = 120;   //select the pulse length depending on the frequency
  21. int Delay = 0;  
  22. int base = 0;
  23. Delay = analogRead(A4);
  24. pinMode(A0, OUTPUT);
  25. digitalWrite(A0, LOW);
  26. pinMode(A0, INPUT);
  27. digitalWrite(8,HIGH);
  28. delayMicroseconds(impuls);   
  29. digitalWrite(8, LOW);
  30. delayMicroseconds(Delay);      
  31. val1 = analogRead(A0);
  32. digitalWrite(8,HIGH);
  33. delayMicroseconds(impuls);   
  34. digitalWrite(8, LOW);
  35. delayMicroseconds(Delay);   
  36. val2 = analogRead(A0);
  37. digitalWrite(8,HIGH);
  38. delayMicroseconds(impuls);   
  39. digitalWrite(8, LOW);
  40. delayMicroseconds(Delay);   
  41. val3 = analogRead(A0);
  42. digitalWrite(8,HIGH);
  43. delayMicroseconds(impuls);   
  44. digitalWrite(8, LOW);
  45. delayMicroseconds(Delay);   
  46. val4 = analogRead(A0);
  47. digitalWrite(8,HIGH);
  48. delayMicroseconds(impuls);   
  49. digitalWrite(8, LOW);
  50. delayMicroseconds(Delay);   
  51. val5 = analogRead(A0);
  52. digitalWrite(8,HIGH);
  53. delayMicroseconds(impuls);   
  54. digitalWrite(8, LOW);
  55. delayMicroseconds(Delay);   
  56. val6 = analogRead(A0);
  57. digitalWrite(8,HIGH);
  58. delayMicroseconds(impuls);   
  59. digitalWrite(8, LOW);
  60. delayMicroseconds(Delay);   
  61. val7 = analogRead(A0);
  62. digitalWrite(8,HIGH);
  63. delayMicroseconds(impuls);   
  64. digitalWrite(8, LOW);
  65. delayMicroseconds(Delay);   
  66. val8 = analogRead(A0);
  67. digitalWrite(8,HIGH);
  68. delayMicroseconds(impuls);   
  69. digitalWrite(8, LOW);
  70. delayMicroseconds(Delay);   
  71. val9 = analogRead(A0);
  72. digitalWrite(8,HIGH);
  73. delayMicroseconds(impuls);   
  74. digitalWrite(8, LOW);
  75. delayMicroseconds(Delay);   
  76. val10 = analogRead(A0);
  77. sumval = val1 + val2 + val3 + val4 + val5 + val6 + val7 + val8 + val9 + val10;
  78. sumval = sumval/5;
  79. base = analogRead(A1);
  80. if (sumval > base)
  81. {tone(A5,1000);
  82. delay(50);
  83. noTone(A5);
  84. }
  85. else  {delay(50);
  86. }
  87. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 19:43

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器
项目链接:https://www.hackster.io/mircemk/ ... tal-detector-d5e029
项目作者:北马其顿 米尔塞姆克(Mirko Pavleski)

项目视频 :https://www.youtube.com/watch?v=h0VjLLyEGBc
项目代码:https://www.hackster.io/code_files/608265/download

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图2

【Arduino 动手做】DIY 灵敏 Arduino IB 金属探测器图1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail