使用 Arduino Nano 构建高灵敏度金属探测器 - DIY 指南
元件与物料
| 元件 | 数量 | 备注 |
|---|---|---|
| Arduino Nano R3 | 1 | 主控制器 |
| 运算放大器 (Op Amp + 比较器 + 基准) | 1 | 信号放大与处理 |
| IRF840 功率 MOSFET | 1 | 驱动搜索线圈 |
| LED (通用) | 6 | 指示灯 |
| 电阻、电容、二极管 | 1套 | 按原理图选型 |
必需工具
- 电烙铁 (通用)
软件与在线服务
- Arduino IDE
项目简介
这是一个基于著名的俄罗斯脉冲感应金属探测器 "PIRAT" 的改进版,引入 Arduino Nano 大大简化了制作流程。该探测器可在 15 厘米距离探测硬币,40 厘米以上探测大型金属物体,考虑到其结构简单,性能相当优秀。
工作原理:脉冲感应 (PI) 技术
脉冲感应金属探测器使用单一线圈兼作发射和接收。技术原理是向线圈发送强大、短促的电流脉冲,每个脉冲产生短暂磁场。脉冲结束时磁场极性反转并迅速崩溃,产生尖锐电压尖峰,持续约 30 微秒,形成反射脉冲。随后发送下一个脉冲,循环往复。当金属进入磁力线范围,接收线圈检测到接收信号幅度和相位的变化,变化量指示金属大小、距离,并可区分铁磁性与非铁磁性金属。
核心组件
- Arduino Nano 微控制器
- 功率 MOSFET 晶体管
- 运算放大器
- 若干电阻、电容
- 搜索线圈
- LED 与蜂鸣器指示

本项目改进了早期版本:早期版本需用智能手机指示且频繁校准,而本版本为独立设备,复位 Arduino 即可自动校准。供电采用两节串联锂离子电池。指示方式升级为声光结合:靠近金属时 LED 闪烁频率与亮度增加。搜索线圈直径 20 厘米,绕制 25 匝,导线截面 0.3–0.5 平方毫米漆包铜线。
代码
// PI metal detector for arduino version_18_min (C) alex --- 1967 2015
int ss0 = 0, ss1 = 0, ss2 = 0;
long c0 = 0, c1 = 0, c2 = 0;
byte i = 0;
int sss0 = 0, sss1 = 0, sss2 = 0;
int s0 = 0, s1 = 0, s2 = 0;
void setup() {
DDRB = 0xFF; // 端口 B 全输出
DDRD = 0xFF; // 端口 D 全输出
for (i = 0; i < 255; i++) { // 校准循环
PORTB = B11111111; // 端口 B 置高,开启开关
delayMicroseconds(200); // 等待 200 微秒
PORTB = 0; // 关断开关,中断线圈电流
delayMicroseconds(20);
s0 = analogRead(A0);
s1 = analogRead(A0);
s2 = analogRead(A0);
c0 += s0; c1 += s1; c2 += s2;
delay(3);
}
c0 = c0 / 255 - 5;
c1 = c1 / 255 - 5;
c2 = c2 / 255 - 5;
}
void loop() {
PORTB = B11111111;
delayMicroseconds(200);
PORTB = 0;
delayMicroseconds(20);
s0 = analogRead(A0);
s1 = analogRead(A0);
s2 = analogRead(A0);
ss0 = s0 - c0; if (ss0 < 0) sss0 = 1; ss0 /= 16; PORTD = ss0; delay(1);
ss1 = s1 - c1; if (ss1 < 0) sss1 = 1; ss1 /= 16; PORTD = ss1; delay(1);
ss2 = s2 - c2; if (ss2 < 0) sss2 = 1; ss2 /= 16; PORTD = ss2; delay(1);
if (sss0 + sss1 + sss2 > 2) {
digitalWrite(7, HIGH); digitalWrite(6, HIGH); digitalWrite(5, HIGH);
digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(2, HIGH);
digitalWrite(1, HIGH); digitalWrite(0, HIGH);
delay(1);
sss0 = sss1 = sss2 = 0;
}
}
原理图

制造工艺
- DIY Arduino单词时钟 – 极简优雅的实时文字显示
- 用 Arduino Nano 和 Nokia 5110 LCD 自制 20kHz 示波器:简易 DIY 指南
- DIY ADXL335 地震检测仪 — 低功耗三轴加速度计项目
- Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
- Arduino 音频频率检测:基于 FFT 测量最响亮声音峰值
- DIY VR 滑板:用 Arduino、Google Cardboard 与蓝牙打造虚拟滑雪体验
- Arduino 串口简易计算器:两数四则运算演示
- 自制高精度测距轮:Arduino Nano + 旋转编码器 + 1602 LCD
- 轻松打造 Arduino 秒表:按钮触发计时器
- DIY Arduino 电子波疗设备 - 基于拉德尼克疗法的 EMR 治疗仪
- DIY二自由度竞速模拟器:Arduino Nano驱动SG90微型舵机
- 使用 Arduino UNO 和 SR04 超声波传感器构建超声波测距仪