Карманный металлодетектор на Arduino Pro Mini
Компоненты и материалы
| SparkFun Arduino Pro Mini 328 — 5V/16MHz | 1 |
Необходимые инструменты и станки
- 3D-принтер (универсальный)
О проекте
Введение: Карманный металлодетектор — Arduino

Этот компактный металлодетектор достаточно чувствителен, чтобы находить маленькие гвоздики и кнопки в дереве, и достаточно мал, чтобы залезать в неудобные места. У него 4 независимые поисковые катушки и цветные LED-индикаторы — можно быстро охватывать большую площадь и точно локализовать цель.
Устройство само калибруется по одной кнопке, заряжается через USB, сигнализирует цветом, звуком и вибрацией о силе сигнала.
В инструкции: все чертежи, тесты, код и 3D-модели для самостоятельной сборки. Надеюсь, вам понравится процесс и результат!
Шаг 1: Список материалов и принцип работы

1. Принцип работы
Используется импульсный индукционный метод. Каждая из 4 катушек состоит из отдельных катушек-передатчика (TX) и приёмника (RX). Импульс в TX создаёт эл.маг. поле вокруг RX. Изменяющееся поле индуцирует напряжение в RX, которое усиливается и измеряется Arduino по длине импульса.
Алгоритм сглаживания убирает шум, алгоритм калибровки на старте устанавливает пороги.
Когда металл попадает в поле, возникают вихревые токи (Eddy currents), отнимающие энергию — длина импульса в RX падает. Мы измеряем эту потерю мощности.
Если длина импульса ниже порога — зажигаются LED, пищит пиезо-зуммер, вибрирует вибромотор (в зависимости от амплитуды падения).
Схема эволюционировала год, став очень стабильной. Геометрия катушек оптимизирована под стабильность и глубину.
2. Список материалов
- LiPo 3.7V 350mAh (38×20×7.5 мм)
- Зарядка TP4056 для LiPo + даташит
- Резистор 4.7 кОм (ограничение тока заряда <300 мА)
- Arduino Pro Mini
- FTDI USB-UART для прошивки
- LM339 — 4-х канальный компаратор
- Две платы веро-борд: 20×9 и 34×9 отверстий (см. фото ориентации)
- 4 транзистора BC548 (NPN)
- 5 MOSFET 2N7000
- Пьезо-зуммер
- Монетный вибромотор
- 4 модуля WS2812 (RGB LED)
- Резисторы: 1к (×4), 10к (×4), 47 Ом (×4), 2.2к (×4)
- Керамические конденсаторы 150 пФ (×8)
- Полиэстеровые конденсаторы 0.18 мкФ (×4)
- Эмалированная медная проволока 0.3 мм (рулон ~25 г)
- PCB-кнопка
- Клеевой пистолет
- Сверло 10 мм
- Ручная дрель
- Маркировка для 16 проводов (лейблер или скотч)
- Монтажные провода
- Доступ к 3D-принтеру
3. Работа компаратора LM339
Многие спрашивали про LM339. Он работает как компаратор напряжения: сравнивает разность на входах + и –, выдаёт низкий уровень или высокоомное состояние (логическая 1 с pull-up).
В нашей схеме +вход на Vcc, pull-up на выходе. На практике выход высокий, пока на –входе напряжение < 3.5 В (Vcc − 1.5 В по даташиту).
Когда –вход выше common-mode, а +вход в диапазоне — выход низкий (ток в ногу).
Ссылка на даташит: lm2901.pdf
Шаг 2: Печать корпуса

Корпус печатается 5 деталями. Файлы и размеры на Thingiverse. Конструкция оптимизирована под удобный захват и максимальное приближение катушек к исследуемой поверхности.

Аккуратно удалите лишний пластик. Сделайте это сейчас, чтобы потом выровнять электронику в корпусе перед финальной сборкой.
Шаг 3: Намотка и монтаж поисковых катушек

На каждую формовку намотайте 25 витков медной проволоки, оставив ~20 см для подключения. Используйте отверстия в формовках для равномерной намотки и ориентации. По мере намотки приклеивайте формовку к основанию (вверх ногами).

Итог: 8 катушек (4 пары TX/RX) смонтированы в базе, провода ориентированы одинаково и достаточно длинны для подключения к основной плате в верхнем отсеке.
Два проводных блока-направляющих с отверстиями в базе помогают не перепутать катушки.

Провода внутренних катушек — сверху, внешних — снизу блока, чтобы легче было подключать к основной плате.
Шаг 4: Сборка схемы

Четыре независимых узла: драйвер катушек, основная плата, LED-модуль, заряжаемое питание. Здесь собираем драйвер и основную плату.
1. Плата драйвера (Driver Board)

Веро-борд режем по отверстиям до 22×11 (рабочая область 20×9). Лучше ножовкой по отверстиям с обеих сторон, затем аккуратно сломайте лишнее. Проверьте, что плата входит в основание корпуса с зазорами.
По фото и схеме 10-мм сверлом вручную перебивайте дорожки на нижней стороне. Собирайте компоненты, избегая коротких замыканий. Отложите для тестов.
2. Основная плата (Main Board)


Веро-борд режем до 36×11 (рабочая 34×9). Тоже аккуратно перебивайте дорожки 10-мм сверлом.

Собирайте по схеме и фото: Arduino Pro Mini, LM339, остальные компоненты. Проверяйте на короткие замыкания. Отложите.


Шаг 5: Установка LED-индикаторов

Используются WS2812 (встроенный драйвер, управление по одному проводу). Библиотека FastLED подключается в Arduino IDE (см. раздел тестирования).
1. Монтаж LED в крышке катушек
Установите 4 LED в отверстия крышки так, чтобы VCC и GND совпадали, и они по центру. Закрепите горячим клеем.
2. Проводка LED
Три одножильных провода ~25 см паяйте к контактам LED. Центральный провод данных — по схеме IN/OUT.

3. Проверка соответствия корпуса
Убедитесь, что крышка садится ровно, зафиксируйте провода горячим клеем у основания крышки. Отложите.
Шаг 6: Сборка и тестирование блока

1. Подготовка к сборке
Тестируем платы по очереди. Arduino Pro Mini требует FTDI-адаптер для прошивки. Перед загрузкой кода добавьте библиотеку FastLED.h в Arduino IDE.
Приложены осциллограммы для отладки и скриншот Serial Plotter с пульсами и порогами — полезно для проверки чувствительности каналов.


Две версии кода: одна с тестовым сериальным выводом.
ВНИМАНИЕ: Не подключайте LiPo до последнего шага — случайное замыкание при сборке может привести к перегреву или возгоранию.
2. Тест основной платы
Подключите FTDI, загрузите код — должен загрузиться без ошибок и дыма.
3. Подключение драйверной платы
Соедините по схеме, разместите в корпусе (подборка под размеры). Загрузите код — без ошибок и дыма.
4. Подключение катушек
Соедините катушки с основной платой по схеме, разместите в корпусе. Следите за соответствием входов драйвера и основной платы.
С тестовым кодом в Serial Monitor / Plotter на приёмных катушках должны быть импульсы 5000–7000 мкс. При поднесении монеты импульс сокращается.
При наличии осциллографа проверяйте формы сигналов на этапах схемы.
Когда все каналы работают похоже — уложите провода так, чтобы корпус закрывался.


5. Подключение LED
Три провода от LED-крышки к основной плате. Загрузите код, проверьте работу LED. Закрепите крышку горячим клеем.
Файлы кода: Pocket_Metal_Locator_V11__TEST_CODE.zip, Pocket_Metal_Locator_V11.zip
Шаг 7: Подключение перезаряжаемого аккумулятора

ПРЕДУПРЕЖДЕНИЯ:
- LiPo подключайте только в самом конце — замыкание при сборке опасно.
- Берегите контакты батареи и зарядки от замыканий.
- LiPo требуют строгого ограничения тока заряда — настройте зарядку правильно.
- Не подключайте FTDI-кабель, когда устройство включено (кнопка нажата) — может повредить батарею.

1. Ограничение тока зарядки TP4056
TP4056 модифицируется резистором 4.7 кОм вместо штатного SMD, чтобы ток заряда <300 мА. Инструкция: TP4056.pdf. Старый резистор снимите, новый припаяйте, зафиксируйте клеем.
Проверьте зарядку от телефона — красный индикатор должен загореться.

2. Установка кнопки питания
Кнопку смонтируйте так, чтобы она выходила в центр крышки. Припаяйте по схеме: кнопка — выход зарядки — VCC Arduino. При нажатии включается схема.
Закрепите батарею клеем, выровняйте micro-USB гнездо с отверстием в крышке для зарядки.
Шаг 8: Финальное тестирование и эксплуатация
1. Физическая сборка
Аккуратно уложите провода, чтобы корпус закрывался. Закрепите основную плату в крышке клеем, закройте корпус.
2. Работа устройства
Калибровка: нажмите и держите кнопку питания. Все LED мигнут — устройство готово. Держите кнопку нажатой во время поиска. LED меняют цвет: Голубой → Зелёный → Красный → Фиолетовый (по росту сигнала). Виброотклик срабатывает на фиолетовом.
Готово к практическому использованию!
Код
Pocket_Metal_Locator_V11.ino (C/C++)
/* Pocket Metal Locator - Arduino Pro Mini April 2018 TechKiwiGradgets Version 11 */
#include "FastLED.h"
#define NUM_LEDS 4
#define DATA_PIN 11
CRGB leds[NUM_LEDS];
const float alpha = 0.85;
float smoothedvalue1 = 1000, smoothedvalue2 = 1000, smoothedvalue3 = 1000, smoothedvalue4 = 1000;
int sthreshold = 100;
float ledthreshold1 = 0.93, ledthreshold2 = 0.96, ledthreshold3 = 0.99, ledthreshold4 = 0.998;
boolean sample = false;
int calcounter = 0, scount = 200, numsamples = 20, t1 = 100;
long calav1 = 0, calav2 = 0, calav3 = 0, calav4 = 0;
int div1 = 0, div2 = 0, div3 = 0, div4 = 0;
int divA = 0; long tempA = 0; long pcounterA = 0;
int divB = 0; long tempB = 0; long pcounterB = 0;
int divC = 0; long tempC = 0; long pcounterC = 0;
int divD = 0; long tempD = 0; long pcounterD = 0;
int pwindow = 7500;
int dly1 = 4, dly2 = 1, dly3 = 500;
int threshdiff = 15;
long pulseav = 0;
boolean haptic = false;
int vduration = 1, vcounter = vduration;
void setup() {
pinMode(12, OUTPUT); digitalWrite(12, LOW);
Serial.begin(115200);
LEDS.addLeds(leds, NUM_LEDS);
LEDS.setBrightness(5);
FastLED.setMaxPowerInVoltsAndMilliamps(5, 100);
FastLED.setDither(0);
pinMode(10, OUTPUT); // Buzzer
pinMode(2, OUTPUT); pinMode(4, OUTPUT); pinMode(6, OUTPUT); pinMode(8, OUTPUT); // TX
pinMode(3, INPUT); pinMode(5, INPUT); pinMode(7, INPUT); pinMode(9, INPUT); // RX
}
void loop() {
// Опрос 4 каналов с измерением pulseIn и LPF
// ... (полный код в прикреплённых файлах)
// Калибровка при старте (scount циклов)
// Обновление LED и вибромотора в updateLEDs()
}
void updateLEDs() {
// Логика порогов: Purple (сильный) → Red → Green → Blue (слабый)
// Пиезо и вибро на фиолетовом/красном/зелёном
FastLED.show();
}
3D-модели (Custom parts)
Файлы на Thingiverse: CAD файл — корпус, формовки катушек, крышки.
Схемы
Полная принципиальная схема устройства:
Производственный процесс
- Arduino монитор температуры в авто — предотвращение теплового удара у детей
- Основы кузнечного дела: 16 ключевых техник для начинающих и профессионалов
- Точные решения металлосрезки для стали и алюминия
- Ножничный раскрой листового металла: экономичное преимущество для современного производства
- Понимание ножничного раскроя листового металла: процесс, инструменты, применение
- Высокоточные станки для перфорированного металла и их применения
- Понимание литейных производств: где металл становится строительными блоками современной промышленности
- Мастерство продольной резки рулонов: точечный раскрой металлорулонов
- Тонкий лист металла: универсальные применения нержавеющей стали
- Выпрямление листового металла: что это такое и зачем нужно