Сборка чувствительного металлодетектора на Arduino Nano — Руководство DIY
Компоненты и материалы
- Arduino Nano R3 — 1 шт.
- Операционный усилитель (Op Amp + Comparator + Reference) — 1 шт.
- Мощный MOSFET-транзистор IRF840 — 1 шт.
- Светодиоды (общего назначения) — 6 шт.
- Набор резисторов, конденсаторов, диодов — 1 комплект
- Поисковая катушка (25 витков изолированной медной проволоки 0,3–0,5 мм², диаметр 20 см) — изготавливается самостоятельно
- Два литий-ионных аккумулятора (последовательное соединение) — для питания
Необходимые инструменты
- Паяльник
Программное обеспечение
- Arduino IDE
О проекте
Это модифицированная версия известного российского импульсно-индукционного металлодетектора «ПИРАТ», реализованная с использованием Arduino Nano, что значительно упрощает сборку и настройку устройства.
Детектор способен обнаруживать монету на расстоянии до 15 см и более крупные металлические объекты — на 40 см и дальше. Для такого простого устройства это отличный результат.
Принцип работы импульсно-индукционного (PI) детектора
PI-детекторы используют одну катушку как для передачи, так и для приёма. Устройство посылает мощные короткие импульсы тока через катушку. Каждый импульс создаёт кратковременное магнитное поле. Когда импульс заканчивается, поле меняет полярность и резко схватывается, порождая острый электрический пик. Этот пик длится несколько микросекунд и вызывает в катушке отражённый импульс тока длительностью около 30 мкс. Затем процесс повторяется.
Если металлический предмет попадает в зону магнитных силовых линий, принимающая катушка фиксирует изменение амплитуды и фазы принятого сигнала. Величина этих изменений указывает на размер и глубину объекта, а также позволяет отличать черные металлы от цветных.
Основные узлы устройства
- Микроконтроллер Arduino Nano
- Мощный MOSFET-транзистор
- Операционный усилитель
- Небольшое количество резисторов и конденсаторов
- Поисковая катушка
- Светодиоды и звуковой излучатель для индикации

Ранее я представлял похожий детектор, использующий смартфон в качестве индикатора и требующий частой калибровки. Данная версия — автономное устройство с само калибровкой при сбросе Arduino. Питание обеспечивается двумя литий-ионными батареями, соединёнными последовательно. Управление стало проще благодаря световой и звуковой индикации: при приближении к металлу частота и интенсивность мигания светодиодов увеличиваются.
Поисковая катушка имеет диаметр 20 см и содержит 25 витков изолированной медной проволоки сечением 0,3–0,5 мм².
Программный код
// PI metal detector for arduino version_18_min (C) alex --- 1967 2015
int ss0 = 0; int ss1 = 0; int ss2 = 0;
long c0 = 0; long c1 = 0; long c2 = 0;
byte i = 0;
int sss0 = 0; int sss1 = 0; int sss2 = 0;
int s0 = 0; int s1 = 0; int s2 = 0;
void setup() {
DDRB = 0xFF; // порт B — все выходы
DDRD = 0xFF; // порт D — все выходы
for (i = 0; i < 255; i++) { // калибровка
PORTB = B11111111; // открываем ключ
delayMicroseconds(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) {
// зажигаем все светодиоды при обнаружении
for (int p = 0; p <= 7; p++) digitalWrite(p, HIGH);
delay(1);
sss0 = sss1 = sss2 = 0;
}
}
Схема подключения

Производственный процесс
- Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
- Создание осциллографа на Arduino Nano с дисплеем Nokia 5110 (20 кГц): простое DIY-руководство
- DIY детектор землетрясений на ADXL335 с усилением ОУ OP07
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Детектор аудиочастот на Arduino: измеряем пик громкости с высокочувствительным модулем
- Сборка DIY VR-скейтборда на Arduino, Google Cardboard и Bluetooth
- Простой калькулятор на Arduino UNO — базовый проект для начинающих
- Сборка точного измерительного колеса на Arduino Nano и вращательном энкодере
- Простой секундомер на Arduino с кнопкой и EEPROM
- DIY Arduino Radionics EMR Treatment Device — радионическое устройство