Мой импульсный металлодетектор на Arduino

Информация предоставлена исключительно в образовательных целях.
Администратор сайта не несет ответственности за возможные последствия использования предоставленной информации.

Плату Arduino можно использовать в импульсном металлодетекторе (Pulse Induction Metal Detector (PI)) и как генератор импульсов, так и для обработки и отображения результатов.

Подробнее о принципах работы аналогового импульсного металлодетектора можно прочитать здесь.

Мой импульсный металлодетектор на Arduino - проект FoxyPI

версия 1 (FoxyPI v1) (устаревшая)
Что нового: первая версия.
Лицензия исходного кода скетча: GNU General Public License v3.0, доступен на Github в репозитарии https://github.com/Dreamy16101976/foxyPIv1.
YouTube
Видео испытаний прототипа:
https://youtu.be/VWCA6jYK5tY

версия 2 (FoxyPI v2) (устаревшая)

Что нового:

  • добавлено усреднение анализируемой длительности импульса катушки по алгоритму "скользящего среднего" (moving average, MA);
  • добавлена возможность настройки длительности импульсов, интервалов между ними, времени задержки и ширины окна скользящего среднего с помощью меню, а также сохранение настроек в EEPROM;
  • добавлено изменение тональности сигнала при изменении длительности импульса катушки;
  • добавлен динамический режим работы металлодетектора;
  • модифицирован драйвер MOSFET;
  • объединены переключатели "+5 В" и "+12 В", а освободившийся переключтель использован для управления подсветкой LCD-экрана;
  • добавлены светодиоды для индикации уровня сигнала.

Лицензия исходного кода скетча: проприетарная.

прошивка
Hex
-файл
прошивки FoxyPI (версия 2.11) для Arduino Nano 3.0 - FoxyPIv2_11.ino.eightanaloginputs.hex.
Как прошить hex-файл в плату Arduino, я описал здесь.

YouTube

Полевые испытания и поиск (26.03.2016) - https://youtu.be/Xk4X6O1646M
Испытания прототипа (4.01.2016) - https://youtu.be/ikJbqUCbyvw

Схема металлодетектора (версия 2) :
схема импульсного металлодетектора

версия 3 (FoxyPI v3)

Что нового в версии 3.8:

  • улучшено отображение кривых сигнала в тестовом режиме (посредством более раннего считывания заданных настроек, в том числе контрастности)

Что нового в версии 3.7:

  • выполнена небольшая оптимизация кода для повышения надежности металлодетектора;
  • добавлена звуковая индикация ошибок ERR 01 и ERR 02

Что нового в версии 3.6:

  • добавлена возможность настройки защитного интервала с помощью пункта GUARD сервисного меню;
  • добавлена автоподстройка уровней 1 и 2 визуальной индикации в статическом режиме;
  • интегрирован тестовый режим (для активации необходимо после включения удерживать кнопку управления до появления графика кривой сигнала)

Что нового в версии 3.5:

  • добавлена возможность настройки контраста дисплея с помощью пункта CONTRAST сервисного меню

Что нового в версии 3.4:

  • исключен перегрев MOSFET-а;
  • повышена стабильность работы;
  • добавлена автонастройка интервала между сэмплами АЦП;
  • добавлено отображение кривой сигнала после автобалансировки

Что нового в версии 3.3:

  • для определения уровня сигнала используется не компаратор, как в предыдущей версии, а АЦП Arduino;
  • два режима поиска - динамический и статический (переключение между режимами по долгому нажатию на кнопку);
  • для повышения стабильности используется интегрирование сигнала;
  • выполняется эмуляция интегратора и фильтра высоких частот;
  • изменены пункты меню;
  • удержание кнопки при включении вызывает вход в меню настроек;
  • нажатие кнопки запускает/останавливает балансировку;
  • используются два уровня аудио- и визуальной индикации вместо четырех.

Дискриминация мишеней в этой версии отсутствует.

Схема металлодетектора (версия 3, mk II) :
металлодетектор на Arduino FoxyPi

  • исключаются элементы, связанные с использованием компаратора - R5, R6;
  • для повышения коэффициента усиления ОУ изменен номинал резистора R3 на 320 кОм (составлен из двух резисторов номиналами 220 кОм и 100 кОм);
  • изменена схема питания микроконтроллера;
  • mk II - изменено подключение подсветки дисплея, изменена батарея питания

В схеме металлодетектора две изолированные друг от друга "земли" - аналоговая (значок заземления ) и цифровая (значок корпуса ).

Лицензия исходного кода скетча: проприетарная.

прошивка

версия 3.8

Hex-файл прошивки FoxyPI (версия 3.8 от 11.10.2020) для Arduino Nano 3.0 - FoxyPIv3_8.ino.eightanaloginputs.hex

Elf-файл прошивки FoxyPI (версия 3.8 от 11.10.2020) для Arduino Nano 3.0 - FoxyPIv3_8.ino.elf

версия 3.7

Hex-файл прошивки FoxyPI (версия 3.7 от 05.07.2020) для Arduino Nano 3.0 - FoxyPIv3_7.ino.eightanaloginputs.hex

Elf-файл прошивки FoxyPI (версия 3.7 от 05.07.2020) для Arduino Nano 3.0 - FoxyPIv3_7.ino.elf

версия 3.6

Hex-файл прошивки FoxyPI (версия 3.6 от 28.06.2020) для Arduino Nano 3.0 - FoxyPIv3_6.ino.eightanaloginputs.hex

Elf-файл прошивки FoxyPI (версия 3.6 от 28.06.2020) для Arduino Nano 3.0 - FoxyPIv3_6.ino.elf

версия 3.5

Hex-файл прошивки FoxyPI (версия 3.5 от 11.11.2019) для Arduino Nano 3.0 - FoxyPIv3_5.ino.eightanaloginputs.hex

Elf-файл прошивки FoxyPI (версия 3.5 от 11.11.2019) для Arduino Nano 3.0 - FoxyPIv3_5.ino.elf

версия 3.4

Hex-файл прошивки FoxyPI (версия 3.4 от 25.09.2019) для Arduino Nano 3.0 - FoxyPIv3_4.ino.eightanaloginputs.hex

Elf-файл прошивки FoxyPI (версия 3.4 от 25.09.2019) для Arduino Nano 3.0 - FoxyPIv3_4.ino.elf

Как прошить hex-файл в плату Arduino, я описал здесь.

YouTube
Видео "воздушных" испытаний в динамическом режиме (7.04.2019, версия 3.2) - https://youtu.be/HzIiA9ws0Ak
Видео "воздушных" и "подземных" испытаний в динамическом режиме (11.04.2019, версия 3.3) - https://youtu.be/GwRvhjCmOE4
Видео "воздушных" испытаний в статическом режиме (13.04.2019, версия 3.3) - https://youtu.be/1ulevNWBZ9A

Внешний вид электронного блока:
самодельный импульсный металлодетектор
вид сверху:
1 - LCD-экран
2 - светодиод
3 - пьезодинамик
4 - кнопка управления
5 - выключатель подсветки LCD-экрана
6 - выключатель питания
7 - светодиоды индикации уровня сигнала
8 - переключатель измерения напряжений батарей
9 - светодиодный индикатор напряжения батарей

Металлодетектор транспортируется разобранным на три части - блоки электроники и питания с ручкой, штанга, катушка с проводом:
самодельный металлодетектор

Внешний вид собранного металлодетектора:
импульсный металлодетектор на Arduino

Эксплуатация металлодетектора

Включение и запуск металлодетектора

При включении питания металлодетектора (выключателя 6) сначала запускается отсчет:
импульсный металлодетектор на Arduino

Настройка металлодетектора

Если при включении удерживать нажатой кнопку (4) до начала отсчета, то затем происходит вход в меню, позволяющее изменить настройки металлодетектора.

Структура сервисного меню (выделены значения настроек по умолчанию):

  • PULSE LEN - длина импульса (100/150/200/250 us)
  • PULSE FREQ - частота следования импульсов (10/20/30/40/50/60/70/80/90/100 pps)
  • INTEGRATOR K - коэффициент интегратора (5/10/20/30/40/50)
  • FILTER K - коэффициент фильтра (10/20/30/40/50/60/70/80/90/100/110/120/130/140/150/160/170/180/190/200)
  • SOUND - звук (ON/OFF)
  • CONTRAST - величина контраста дисплея (35/40/45/50/55/60/65)
    при недостаточном контрасте символы на дисплее слабо различимы, при чрезмерном контрасте экран залит темным фоном:
    дисплей металлодетектора
  • GUARD - защитный интервал (250/500/750/1000/1250/1500/1750/2000)
  • EXIT - выход из меню

металлодетектор FoxyPI

Для перехода между пунктами меню требуется короткое нажатие кнопки (4) (при этом загорается зеленый светодиод), а для выбора пункта меню - длинное нажатие кнопки (4) (при этом загорается красный светодиод):
металлодетектор на Arduino
Для перехода между значениями параметра для выбранного пункта меню требуется короткое нажатие кнопки (4) (при этом загорается зеленый светодиод), а для выбора значения параметра - длинное нажатие кнопки (4) (при этом загорается красный светодиод):
самодельный импульсный металлодетектор
Для выхода из меню и  сохранения настроек в EEPROM следует выбрать пункт "EXIT":
импульсный металлодетектор

После завершения отсчета на дисплее (1) отображается сообщение с обозначением устройства и номером версии программного обеспечения ("FoxyPI v3.x"), логотипом, а из пьезодинамика (3) звучит звуковой сигнал с изменяющейся тональностью, соответствующий различным уровням сигнала и сопровождающийся миганием светодиодов:
FoxyPI металлодетектор

Тестовый режим

Для включения тестового режима с прошивкой версии 3.6 и новее необходимо удерживать кнопку и после начала отсчета до появления графика кривой сигнала.

При использовании старых прошивок для тестирования металлодетектора пможно загрузить в Arduino тестовую прошивку:

Hex-файл тестовой прошивки FoxyPI (версия 3.T от 08.01.2020) для Arduino Nano 3.0 - FoxyPIv3_TST.ino.eightanaloginputs.hex

Elf-файл тестовой прошивки FoxyPI (версия 3.T от 08.01.2020) для Arduino Nano 3.0 - FoxyPIv3_TST.ino.elf

В тестовом режиме металлодетектор после включения генерирует в поисковой катушке импульс тока длительностью 150 мкс, а затем регистрирует и отображает на экране принятый сигнал. При нажатии кнопки генерируется новый импульс и т.д.

Примеры сигналов:
1 - без мишени, 2, 3, 4 - при приближении массивной мишени:
самодельный металлоискатель FoxyPI

Обнаружение мишеней с помощью металлодетектора

Затем, если не выбран вход в меню, отображаются текущие настройки прибора:
самодельный металлодетектор
L - длительность импульса (мкс)
R -  частота следования импульсов (имп./с)
I  - коэффициент интегратора
F - коэффициент фильтра
S - звук (вкл/выкл, ON/OFF)
C - величина контраста дисплея
G - защитный интервал

Затем выполняется балансировка (zeroing) в статическом режиме:
HEATING - установление стационарного режима интегратора
собрать металлодетектор
ZEROING -  обновление "нулевого" уровня
импульсный металлоискатель

Металлодетектор работает в двух режимах:

  • статический режим (static/non-motion mode) (по умолчанию) - учитывается уровень сигнала, не требует постоянного перемещения катушки (может использоваться как для уточнения расположения мишени (pinpointing), так и как основной режим поиска);
  • динамический режим (dynamic/motion mode) - учитывается динамика изменения сигнала, в процессе поиска катушку необходимо перемещать над поверхностью грунта

При балансировке желательно перемещать катушку (аналогично действиям при поиске - это особенно важно при балансировке в динамическом режиме). Необходимо выполнять автобалансировку над чистым участком грунта (не над мишенью), не содержащем минералы. О мешающем влиянии грунта на импульсный металлодетектор Вы можете прочитать здесь.

Важно стараться перемещать (sweep) катушку параллельно поверхности земли, иначе из-за влияния магнитного поля Земли на катушке будет наводиться некоторое напряжение (EFE - earth field effect), которое может вызвать появление ложных сигналов: даже просто при перемещении катушки над землей:
EFE металлодетектор

При неправильном перемещении поисковой катушки изменяется магнитный поток $\Phi$ через нее:

EFE в металлодетекторе

Это объясняется тем, что магнитный поток определяется выражением:
$\Phi = {B \, S \, sin \, \alpha}$, где $B$ - индукция магнитного поля Земли, $S$ - площадь сечения катушки, $\alpha$ - угол между плоскостью катушки и направлением силовых линий магнитного поля Земли.
На приведенном рисунке в первом положении катушки магнитный поток равен нулю, а при перемещении приобретает ненулевое значение. Из-за изменения магнитного потока через катушку в ней согласно закону электромагнитной индукции наводится ЭДС, которая искажает принимаемый сигнал.

В процессе автобалансировки устанавливается оптимальная начальная задержка и длительность анализируемого сигнала, а также оценивается динамика сигнала (в динамическом режиме) или уровень сигнала (в статическом режиме), при этом обновление "нулевого" уровня сопровождается коротким звуковым сигналом.

При прекращении обновления "нулевого" уровня балансировку нужно остановить нажатием кнопки (4).

Также балансировку можно запустить/остановить и в процессе работы нажатием кнопки (4). После окончания автобалансировки подается короткий звуковой сигнал и отображается "нулевое" значение (максимальное, в условных единицах).

После этого запускается основной цикл работы металлодетектора, при этом на экране отображаются его параметры:

металлодетектор на Arduino
S - текущий режим (S - статический, D - динамический, переключение между режимами выполняется долгим нажатием кнопки (4))
Z:124508 - значение "нулевого"  уровня, заданное при балансировке (для статического режима типичные значения 120 000 - 125 000, при изменении длительности импульса от 150 до 250 мкс меняется незначительно; для динамического режима при аккуратном перемещении катушки в процессе балансировки 800 - 1400 )
RX:18.43 - начальная и конечная точки (диапазон) анализируемого сигнала (типичные значения - 16...43, , при изменении длительности импульса от 150 до 250 мкс меняются незначительно)
D:1 - величина задержки между сэмплами (по умолчанию - 1, дополнительная задержка вносится для увеличения временного окна с целью охвата всего сигнала)
L:2557 12785 - уровни 1 и 2 аудиовизуальной индикации

При балансировке вблизи катушки не должно находиться металлических предметов, иначе чувствительность металлодетектора окажется занижена. Вот, например, результаты балансировки при нахождении вблизи катушки гантели:

При обрыве катушки выдается сообщение ERR 01.

При обнаружении металлического объекта-"мишени" звучит звуковой сигнал изменяющейся тональности и загорается зеленый светодиод (2), а также зеленый либо красный светодиоды (7). Характер аудиовизуальной индикации меняется в соответствии с динамикой (в динамическом режиме) или уровнем (в статическом режиме) регистрируемого RX-импульса:

Светодиоды Статический режим Динамический режим
индикация сигнала металлодетектора нет мишени нет мишени
индикация сигнала металлодетектора слабый уровень сигнала уровень сигнала уменьшается
индикация сигнала металлодетектора средний уровень сигнала уровень сигнала увеличивается
сильный уровень сигнала -

При поиске в динамическом режиме после обнаружения необходимо перемещать катушку вдоль взаимно перпендикулярных направлений - мишень будет находиться вблизи точек смены тональности сигнала (это также позволит отсеять ложные срабатывания, вызванные неаккуратным перемещением катушки).

Помехи

Сильные помехи на работу металлодетектора оказывают работающие вблизи электронные устройства:

помехи от LCD-телевизора  (ощущаются на расстоянии до метра):
помехи металлодетектору
помехи для металлодетектора

помехи от КЛЛ (ощущаются вблизи лампы):
помехи на металлодетектор

помехи от магнитного поля включенного в сеть трансформатора проявляются в виде трели - очень частых срабатываний:
помехи для металлодетектора

При эксплуатации прибор должен находиться на удалении от работающих телевизоров, компьютеров, силовых трансформаторов, КЛЛ!

В качестве детектора работы устройства можно использовать средневолновый радиоприемник с магнитной антенной - при направлении оси антенны на плоскость катушки в динамике приемника слышно гудение.

Возможные сообщения об ошибках при работе металлодетектора

как сделать металлодетектор

ERR 01 - в сигнале не найден участок насыщения (возможно как при слишком сильном, так и при слишком слабом сигнале)

ERR 02 - участок насыщения длится до конца исследуемого сигнала (сигнал слишком сильный)

Тестирование металлодетектора

Испытания металлодетектора

Испытания металлодетектора я провожу на расчищенной земляной площадке:
испытания металлодетектора

Мишени

Для испытаний используются различные мишени:
мишени для металлодетектора
1 - алюминиевая пластина из "винчестера" (жесткого диска) (толщина 1,3 мм, внешний диаметр 3,75 дюйма, диаметр отверсия 1 дюйм)
2 - российская монета достоинством 5 рублей из  меди, плакированной мельхиором (диаметр 25 мм, масса 6,45 грамма)
3 - золотое колечко

Дальности обнаружения мишеней "в воздухе":

Мишень Дальность обнаружения
в статическом режиме, см
Дальность обнаружения
в динамическом режиме, см
1 >33 >27
2 >15 >12
3 >9 >9

Любопытно, что при наложении друг на друга двух пластин (мишеней 1) дальность обнаружения снижается!

При снижении напряжения батареи дальность обнаружения заметно снижается:
Число батареек Уменьшение дальности обнаружения мишени 1 в статическом режиме, см
10 0
8 2
5 6
В зарубежных металлодетекторах в качестве тестовой мишени часто используется монета Великобритании 10 пенсов - 10p диаметром 24,5 мм, которая ранее (до января 2012 года) изготавливалась из медно-никелевого сплава (медь 75 %, никель 25 %):
10 пенсов
Аналог такой монеты - монета США 25 центов - 25 US cent (U.S. quarter) диаметром 24,26 мм толщиной 1,75 мм массой 5,67 грамма:
25 центов
Заявленная глубина обнаружения таких монет для различных металлодетекторов (max. depth for a US quarter):
Altai Treasure Seeker 2 hobby metal detector - 15 см;
Prestige Metal Detector - 16 см;
Supereye S3000 Metal Detector - 18 см;
EE Treasure Hunter - 20 см.

Дальности обнаружения массивных мишеней в статическом режиме:

Мишень Дальность, см
гантеля 6 кг >50
металлические ворота гаража >100

Изделия из порошкового железа и многие ферритовые детали (1) металлодетектор не обнаруживает, но некоторые изделия из феррита (2) детектируются внутри катушки на расстоянии нескольких см от обмотки:
тест металлодетектора на феррит

При быстром перемещении ферритового магнита внутри катушки возникают ложные срабатывания:
тест металлодетектора

Величина защитного интервала (параметр GUARD) влияет на дальность обнаружения мишеней и возможность ложных срабатываний.
Вот, например, как изменяется дальность обнаружения золотого колечка:

GUARD L, см
500 12
750 10
1000 8
1500 7

При уменьшении параметра GUARD ниже 500 возможно появление ложных срабатываний.

Проверка стабильности работы

Для проверки стабильности работы я включил металлодетектор, расположив его горизонтально и неподвижно. Затем я поднес к нему пластину от жесткого диска (примерно по центру катушки) и зафиксировал расстояние, на котором детектор отреагировал на пластину. Затем я оставил детектор включенным на некоторое время. По истечении этого времени я заново определил расстояние, на котором металлодетектор "чувствовал" пластину. Изменение этого расстояния свидетельствует о степени стабильности работы прибора.
самодельный металлодетектор

Время, минуты Расстояние обнаружения, см Изменение расстояния, см / %
0 30 0 / 0
15 29 -1 / -3,3
20 28 -2 / -6,6
35 27 -3 / -10

Стабильность оказалась вполне удовлетворительной - за 35 минут дальность обнаружения сократилась лишь на 10 %.

Также я повторил тест стабильности с мишенью - алюминиевым радиатором от чипсета:
самодельный металлоискатель на Arduino

Время, минуты Расстояние обнаружения, см Изменение расстояния, см / %
0 14 0 / 0
5 13,7 -0,3 / -2,1
10 13,6 -0,4 / -2,9
15 13,5 -0,5 / -3,6

Некоторые результаты поиска

Результат первого поиска в саду с FoxyPI v3.3 (21.04.2019) :-)
находки с металлодетектором

Результат второго поиска в саду с FoxyPI v3.3 (27.04.2019):
поиск с металлодетектором

А вот находки в нашем саду после после электролитической очистки (о ней ниже):
находки самодельным металлодетектором

Подробнее я описываю наиболее интересные "садовые" находки здесь - blog.foxylab.com/finds .

Очистка находок от ржавчины

Найденные находки часто покрыты слоем ржавчины (оксида железа Fe2O3).
Для очистки находок от ржавчины можно использовать несколько методов:

химический метод - использование химиката, преобразующего ржавчину в легкоудаляемое (рыхлое) состояние:

  • щавелевая кислота;
  • ортофосфорная кислота.

Ортофосфорная кислота входит в состав многих средств борьбы со ржавчиной (как и в состав кока-колы):

Но мой опыт применения таких средств оказался не слишком успешным.

электролитический метод - наиболее эффективен, применяется для удаления грязи и продуктов коррозии, в том числе и в археологии:

возможны два режима очистки - анодная  (очищаемый предмет является анодом, очистка производится пузырьками кислорода) и катодная (очищаемый предмет - катод, а очищающий эффект дают пузырьки водорода, которых выделяется в два раза больше, чем кислорода при анодном процессе - подобный процесс используется для получения водорода)

Ниже я опишу применяемый мной катодный способ очистки.

пластиковая или стеклянная (не подверженная коррозии) емкость наполняется:
2 % (по другим сведениями, 5 - 10 %) водным раствором щелочи - едкого натра NaOH;
водным раствором кальцинированной соды  Na2CO3 (1 столовая ложка на три литра воды, но я использую более насыщенный раствор):
катодная очистка
Один электрод (анод) - пластинка из проводящего материала. Выбор материала анода представляет некоторую проблему.

Анод из нержавеющей стали (например, банка из-под кофе, гвозди из нержавеющей стали) выделяет токсичные вещества. Это происходит из-за того, что нержавеющая сталь содержит в своем составе шестивалентный хром (Hexavalent Chromium, "chromium six", "hexa-chrome ", CR-VI, Chromium IV). Признаком появления хрома-6 в электролите является окрашивание раствора в желтый цвет.

Анод из латуни способствует выделению меди на катоде.

Алюминиевый анод быстро изнашивается.

Иногда применяются и угольные электроды.

Я чаще использую "черные" (без покрытия) гвозди из низко-углеродистой стальной проволоки, для крепления которых удобно применять неодимовый магнит из жесткого диска:
электролитическая очистка от ржавчины

Можно соединить гвозди последовательно неэмалированной проволокой:
очистка электролизом

Анод и катод опускаются в раствор, к аноду подключается "+" источника питания, а к очищаемой детали подключается "-" (я обматываю очищаемый предмет медной проволокой или захватываю с помощью зажима типа "крокодил" - это намного удобнее):
очистка от ржавчины

Можно подвесить деталь на веревочке, закрепив ее на деревянной планке, положенной на емкость.

Такая установка носит название "E-tank" ( "electrolysis tank" ).

Начинается процесс электролиза воды, сопровождаемый выделением пузырьков газа и образованием хлопьев ржавчины (на катоде - очищаемом предмете - выделяются пузырьки водорода, разрушающие ржавчину: 4H20 + 4e- = 4OH +2H2).

Также существует альтернативное описание реакции при катодной очистке:
4H++ 4e- = 2H2 (но в этом случае требуется кислотная среда для образования достаточного количества ионов водорода).

Выделяющийся водород взрывоопасен, поэтому необходимо выполнять работы в проветриваемом помещении или на открытом воздухе!

В ходе процесса ржавчина начинает собираться возле анода:
электролитическая очистка

При протекании тока через раствор происходит достаточно сильный разогрев и часть воды испаряется, поэтому может потребоваться долив воды.

Вот как выглядит деталь в ходе процесса очистки:
электролитическая очистка

В конце процесса вся емкость заполнена частицами ржавчины:
электролилическая очистка от ржавчины

Ржавчина  в процессе электролиза покрывает анод (анод "приносится в жертву"  для очистки катода):
как очистить ржавчину
очистка от ржавчины электролизом

Лакмусовая бумажка, погруженная в раствор, показывает реакцию на щелочную среду:
очистка от ржавчины

Субстанцию, образующуюся в емкости, трудно очистить, поэтому желательно работать в защитных перчатках!

После окончания процесса очистки очищаемая деталь оказывается покрыта рыхлым слоем загрязнения, который удаляется металлической щеткой:
убираем ржавчину электролизом

После электролитической очистки находка выглядит так:
электролитическая очистка находок

Она покрыта черным налетом, который можно удалить механически (щеткой).

Осциллограммы

Используя лабораторный стенд, как цифровой осциллограф, я снял ряд осциллограмм:

лабораторный стенд -

стенд для металлодетектора

напряжение на поисковой катушке -

напряжение на катушке металлодетектора

Устройство металлодетектора

Конструктивное исполнение

Штанга

Для штанги металлодетектора я использовал ПВХ-трубу диаметром 25 мм с толщиной стенок 1,6 мм (PN16):
ПВХ труба для металлодетектора

Рукоятка

Рукоятка металлодетектора крепится к  трубе, на которой закреплены электронный блок и блок питания, с помощью компрессионного фитинга:
рукоятка металлодетектора

Электронный блок

В качестве корпуса электронного блока металлодетектора я использовал распределительную коробку Tyco со степенью защиты IP55 (от воды и пыли) из ПВХ c десятью вводами диаметром 30 мм.

Вид внутри электронного блока:

внутренности металлодетектора
На ПВХ-трубе электронный блок закрепляется посредством U-образных держателей, которые фиксируются нейлоновыми стяжками:
закрепление блока на штанге металлодетектора

Блок питания

Для размещения элементов питания я использую распределительную коробку. На ПВХ-трубе блок питания закрепляется посредством U-образных держателей, которые фиксируются нейлоновыми стяжками.

Электроника

Микроконтроллер
Я использую плату Arduino Nano 3.0.

Arduino Nano 3-й версии основана на 8-битном AVR микроконтроллере ATmega328P (32 кБайт Flash, 2 кБайт SRAM, 1 кБайт EEPROM, 3 таймера) (2-й версии - на ATmega168), причем буква "P" обозначает "picoPower".
Arduino Nano

контакты Arduino:

вывод Arduino назначение
D08 выход сигнала генератора импульсов в катушке
D13 выход для подключения светодиода
D11 выход для подключения пьезодинамика
A00 вход АЦП - для ограниченного и усиленного сигнала с поисковой катушки
A01 выход для подключения зеленого светодиода
A02 выход для подключения красного светодиода
D02 вход подключения кнопки
REF вход опорного напряжения для АЦП

ресурсы Arduino:

ресурс Arduino назначение
таймер Timer1 управление MOSFET
таймер Timer2 вывод звука
канал АЦП 0 измерение напряжения сигнала на выходе ОУ

Для сопряжения с USB-портом в моей плате Arduino используется микросхема преобразователя CH340G.

Источники питания

Питание микроконтроллера

Для питания Arduino я использую два соединенных последовательно литий-ионных аккумулятора UltraFire ZX 18650 емкостью 4200 мА·ч каждый:
аккумуляторы UltraFire
Напряжение холостого хода такого полностью заряженного аккумулятора составляет 4,21 В, а на нагрузке 10 Ом через 1 минуту работы - 3,61 В.
Для заряда аккумуляторов я использую самодельное зарядное устройство:
схема:
самодельное зарядное устройство
вид снаружи:

вид внутри:
погодная станция

Номинальное напряжение такой батареи составляет 7,4 В.

Напряжение батареи 7,4 В преобразуется в напряжение 5 В для питания платы Arduino с помощью интегрального стабилизатора 78L05 (на схеме обозначен U3):
FoxyPI

Питание силовой части

Первоначально я использовал в качестве источника питания силовой части 10 щелочных батарей размера AA (LR6).

Я оценил некоторые из использованных мной батарей:

Тип батареи Напряжение х.х., В Напряжение
под нагрузкой
(через 1 минуту работы), В
Duracell Duralock (Alkaline)2
батарейки Duracell
1,54 1,47 (10 Ом)
Ермак (алкалиновые)
батарейки Ермак
1,62 1,43 (10 Ом)
Energizer Max (Alkaline)3
батарейки  Energizer
1,62 1,51 (10 Ом)
Energy (алкалиновые)
батарейки Energy
1,62 1,48 (10 Ом)
GP Super Alkaline Battery
GP Super батарейки
1,62 1,45 В (10 Ом)

1 - номинальная емкость составляет 2700 мА·ч (при непрерывном разряде до 0,8 В током 25 мА)
2 - технология Duralock позволяет сохранять заряд при хранении до 10 лет,
на батарейках при этом на полоске нанесена надпись "DURALOCK":
Duralock
1 - батарейки Duracell, произведенные с использованием технологии Duralock
2 - обычные батарейки Duracell
3 - по данным производителя:
номинальное внутреннее сопротивление (Nominal IR) - 150...300 мОм;
диаграмма зависимости емкости от тока разряда:
емкость батарейки Energizer

Для размещения батарей размера AA я использую батарейный отсек на 10 элементов:
батарейный отсек

Номинальное напряжение такой батареи составляет 15 В.
FoxyPI

Катушка L2 предназначена для снижения броска тока при включении устройства (конденсатор C1 при этом разряжен и в начальный момент времени эквивалентен перемычке) и снижения помех, вызванных импульсами тока поисковой катушки. Диод D3 шунтирует батарею питания для отрицательных выбросов напряжения, возникающих на индуктивности поисковой катушки, и защищает от неправильной полярности батареи питания. Конденсатор C1 большой емкости является накопителем энергии - играет важную роль при генерации импульсов тока в катушке.

Затем я применил для питания силовой части батарею из трех последовательно соединенных литий-ионных аккумуляторов:
питание самодельного металлодетектора

Номинальное напряжение такой батареи составляет 11,1 В.

Для подключения источников питания используется четырехконтактный разъем на боковой стороне корпуса электронного блока:
разъем для питания металлодетектора
1 - "+" батареи 15/11.1 В
2 - "-" батареи 15/11.1 В
3 - "-" батареи 7,4 В
4 - "+" батареи 7,4 В

Для измерения напряжения батарей питания я подключил через двухполюсный переключатель с фиксацией в нейтральном положении ("D" - измерение напряжения батареи питания микроконтроллера, "A" - измерение напряжения батареи питания силовой части) цифровой светодиодный вольтметр:
питание самодельного металлодетектора
металлодетектор на Arduino

Катушка

Параметры катушки

Поисковая катушка со средним диаметром $D$ = 25 см (средний радиус $R$ = 12,5 см) и радиусом сечения катушки $a$ = 0,29 см содержит $w$ = 27 витков эмалированного медного (удельное сопротивление $\rho$ = 0,0175 Ом·мм2/м) провода диаметром $d$ = 0,7 мм (радиус провода $r$ = 0,35 мм,площадь сечения провода $S$ = 0,385 мм2):
катушка металлоискателя

Предполагаемое сопротивление катушки $R = {\rho {{\pi D w} \over {S}}}$ = 0,964 Ом, а измеренное составило $R$ = 1,3 Ом:
измерение сопротивления катушки металлодетектора

Для вычисления индуктивности такой катушки существует несколько формул.

 индуктивность катушки металлодетектора

приближенная формула:

$L = {{w^2}{{\mu}_0}R[{ln({{8R} \over a})}-2]}$ ,

 где $a$ - радиус сечения катушки.

Эта формула приведена в книге [F. W. Grover, Inductance Calculations: Working Formulas and Tables, New York: Dover, 1946].

Для моей катушки:
$L$ = 440 мкГн.

более точная формула:

$L = {{{\mu}_0} \over {4 \pi}} {w^2} D \Phi $, где $\Phi$ - вспомогательный коэффициент:
$\Phi = {2 \pi  [{(1 +  {{{\gamma}^2} \over 2} )} {ln ({4 \over \gamma})} - 1,75 + {{{\gamma} ^2} \over 6} ] } $, где $\gamma = {a \over D}$, $a$ - радиус сечения катушки

Эта формула используется в плагине multiloop для программы Coil32 (http://coil32.net/multi-winding-round-loop.html) для расчета индуктивности многовитковой круглой катушки с круговым сечением (англ. multi-winding round loop with round cross-section).

Для моей катушки:
$\gamma$ = 0,0116;
$\Phi$ = 25,7;
$L$ = 468 мкГн.

интегральная формула:

$L = {{\mu}_0} {w^2} {\pi} R {{\int_0^{1-{a \over R}}} B_{rel}({\rho}) {\rho} \, {d{\rho}} } $,

где $B_{rel}({\rho}) = { {1 \over \pi} {\int_0^{\pi}} {{1 - {{\rho} cos {\phi} }} \over {{(1+{{\rho}^2}-2{\rho}cos{\phi})}^{3 \over 2}}} \, d{\phi}   }$ - относительная магнитная индукция в плоскости катушки на расстоянии ${\rho} \over R$ по сравнению с индукцией в центре катушки, $a$ - радиус сечения катушки

Магнитное поле катушки

При протекании по такой катушке тока $I$ в точке на оси катушки, находящейся на расстоянии $z$ от плоскости катушки, создается магнитное поле, напряженность которого определяется известным выражением:

$H = {w {I \over 2} {{R^2} \over {{(R^2 + z^2)}^{3 \over 2}}}}$

Если принять внутреннее сопротивление одной батарейки как 0,3 Ом, ЭДС - 1,45 В, то для десяти батареек общая ЭДС $E$ составит 14,5 В, а общее сопротивление $R$ цепи с учетом сопротивления поисковой катушки 1 Ом составит 4 Ом. Принимая индуктивность катушки, равной 450 мкГн, получаем, что за длительность $T$ импульса, равную 150 мкс, ток в катушке достигнет значения ${E \over R} (1 - e^{-{T R}\over L}) = 2,7 А$.

Конструкция катушки

Для защиты катушки можно использовать гофрированный шланг для электропроводки (обычно серого цвета) который разрезается вдоль:
защита катушки металлодетектора
В него вставляется катушка, а затем он скрепляется изоляционной лентой. Катушка закрепляется в монтажной коробке с помощью термоклея и нейлоновых стяжек.
Катушка закрепляется на штанге с помощью компрессионного фитинга, резьбовая часть которого вкручена в полипропиленовую трубку диаметром 26 мм, закрепленную на крышке монтажной коробки:
узел поисковой катушки

Для закрепления полипропиленовой трубки я использовал нейлоновые стяжки и способ, заключающийся в совместном использовании пищевой соды и "суперклея" на основе цианоакрилата:
суперклей сода

Вдоль линии соприкосновения деталей наносится суперклей, посыпается содой, затем сода смачивается суперклеем, поверх повторно наносится сода, которая тоже смачивается клеем. Реакция экзотермическая - клеевой слой нагревается. В результате образуется монолитный слой, надежно скрепляющий детали.

Для подключения катушки используется двухконтактный разъем на боковой стороне корпуса:
разъем для поисковой катушки

Генератор
Для выдачи импульсов я использую цифровой вывод D08, установив его как "выход" (цифровой вывод D08 соответствует выводу PB0 микроконтроллера ATmega) .
Для ускорения я использую не команду digitalWrite, а прямую запись в порт, что быстрее примерно в 10 раз!

Соответствие цифровых выводов Arduino и выводов портов ATmega

цифровой вывод Arduino вывод порта ATmega
D00 PD0
D01 PD1
D02 PD2
D03 PD3
D04 PD4
D05 PD5
D06 PD6
D07 PD7
D08 PB0
D09 PB1
D10 PB2
D11 PB3
D12 PB4
D13 PB5

Временные параметры генератора задаются через меню настроек при включении прибора.

Силовая часть

Так как напряжение на MOSFET-е при его выключении резко возрастает (из-за индуктивности катушки), то транзистор может перейти в режим лавинного пробоя ("avalanche breakdown"). Это происходит, если напряжение "сток-исток" $V_{DS}$ на MOSFET-е превышает его напряжение пробоя $V_{DS (BR)}$.
Для современных транзисторов работа в этом режиме является штатной (они маркируются как "Repetitive Avalanche Rated" или "100% AVALANCHE TESTED"). При этом важно учитывать такие лавинные характеристики транзистора как максимальный повторяющийся лавинный ток $I_{AR}$ и максимальная энергия повторяющегося лавинного пробоя $E_{AR}$.
Необходимо, чтобы максимальный ток в катушке перед выключением не превышал значения $I_{AR}$, а максимальная энергия, запасенная в катушке, не превышала значения $E_{AR}$. Энергия магнитного поля катушки определяется как ${E_M} = {{{L {I^2}} \over {2}}}$ (например, для катушки индуктивностью $L$ = 700 мкГн с током $I$ = 3 А энергия составит 3,2 мДж).

Параметры некоторых MOSFET:

Наименование $V_{DS (BR)}$, В $I_{AR}$, А $E_{AR}$, мДж
IRF540 100 28 15
IRF740 400 10 13
IRF840 500 8 13
FQP12N60C 600 12 22,5

Я использую MOSFET IRF840, обладающий подходящими характеристиками:
характеристики IRF840

Цоколевка IRF840:
цоколевка IRF840
G - затвор, D - сток, S - исток

При лавинном пробое транзистора затухающий ток катушки проходит по участку "сток-исток MOSFET-а - батарея питания", обладающему малым сопротивлением, что приводит к замедлению затухания тока.

драйвер MOSFET

Управление MOSFET осуществляется с помощью оптопары PC817C (обладает быстродействием 3...4 мкс, выдерживает выходной ток 50 мА и напряжение в закрытом состоянии до 35 В) и дискретной транзисторной схемы:

цоколевка PC817:
цоколевка PC817

цоколевка BC547/BC557:
цоколевка BC547 BC557
C - коллектор, B - база, E - эмиттер

как собрать металлодетектор

Подобный драйвер был описан в статье http://radiohlam.ru/raznoe/driver_polevikov.htm (сейчас эта ссылка не работает, а статью можно посмотреть в архиве - http://web.archive.org/web/20151209032140/http://radiohlam.ru/raznoe/driver_polevikov.htm).

При логической "единице" на выходе Arduino происходит гашение светодиода оптопары U2, закрывается ее транзистор, из-за чего повышается потенциал базы транзистора Q1, и он открывается, что приводит к открытию транзистора Q2 и закрытию транзистора Q3. В результате повышается потенциал затвора MOSFETQ4 и он открывается, пропуская ток через катушку.

Я исследовал характеристики такого драйвера (при подаче на светодиод оптодрайвера напряжения 5 В через резистор 470 Ом):
ток потребления во "включенном" состоянии (MOSFET открыт) очень мал, в "выключенном" (MOSFET закрыт) - меняется от 5,8 до 12 мА при росте напряжения питания от 7 до 15 В; напряжение на выходе драйвера составляет 12,15 / 1,83 В ("вкл"/"выкл") при напряжении питания 13 В.

Детектор

В основе работы импульсного металлодетектора лежит принцип электромагнитной индукции - Electromagnetic Pulse Induction (EMI).

Схема детектора моего металлоискателя:
импульсный металлоискатель

Сигнал с поисковой катушки, подключенной к разъему J2, через токоограничивающий резистор R2 поступает на включенные встречно-параллельно диоды D1 и D2, ограничивающие величину сигнала до ~ 1 В. Это ограничение не вносит заметной погрешности, так как для детектирования "мишени" имееет значение "хвостик" сигнала, напряжение на котором составляет малые доли вольта (вплоть до милливольт) - подтверждено моделированием:
ограничительные диоды металлодетектора

Такой слабый сигнал для надежного детектирования необходимо усилить, для чего я использовал операционный усилитель U1 LM358N, включенный по традиционной схеме неинвертирующего усилителя. Коэффициент усиления определяется выражением $1+ {R3 \over R4}$, при указанных номиналах элементов он составляет 570.

Особенностью ОУ LMx58 является возможность однополярного питания (single supply) - в отличие от, например, LM318, LF356, LF357 не требуется источник отрицательного напряжения.
Цоколевка LM358N (N - в DIP-корпусе):
 цоколевка LM358

Вид сигнала на выходе ОУ:
сигнал металлодетектора

Для обработки сигнала с поисковой катушки я использую встроенный в микроконтроллер ATmega аналого-цифровой преобразователь.

На опорный вход АЦП VREF подается опорное напряжение uref, равное 1,235 В, которое берется с эталонного источника LM385Z-1.2 (используется режим работы АЦП EXTERNAL).
Цоколевка LM385Z:
цоколевка LM385Z

На сигнальный вход АЦП ADC In подается усиленное операционным усилителем напряжение сигнала с поисковой катушки, ограниченное диодами D1 и D2. АЦП дискретизирует сигнал с катушки в виде последовательности чисел (fast-time signal) со значениями 0 (минимальный уровень, 0 В)...1023 (максимальный уровень uref).

Наличие мишени вблизи катушки проявляется следующим образом:
(1023 - уровень сигнала, соответствующий перегрузке АЦП)
реакция металлодетектора на мишень

  • смещение точки A вправо;
  • увеличение интервала A-B;
  • смещение кривой вверх.

Сравните этот график сигнала с приведенным выше:
работа импульсного металлоискателя

Для определения наличия мишени выполняется вычисление суммы (slow-time signal) заданного числа дискретизированных уровней сигнала, расположенных на одинаковых интервалах друг от друга, во временном "окне" (evaluation window). При этом значения, расположенные ранее заданной при балансировке начальной точки, не учитываются (для повышения чувствительности).
самодельный металлодетектор на Arduino
Затем выполняется интегрирование последовательности получаемых суммарных значений (интегратор эмулируется программно). Параметром фильтра является коэффициент $K$, который равен числу импульсов, приходящихся на постоянную времени интегратора.
Уровень сигнала на выходе интегратора анализируется в статическом режиме работы металлодетектора.

При работе металлодетектора в динамическом режиме результаты интегрирования дополнительно проходят через фильтр высоких частот (high-pass filter, HPF), который эмулируется программно. Параметром фильтра является коэффициент $K$, который показывает, во сколько раз частота следования импульсов больше частоты среза фильтра.
На выходе фильтра получается сигнал, характеризующий динамику изменения RX-сигнала.

При превышении выходным сигналом порога - "нулевого" уровня, заданного при балансировке, срабатывает триггер - мишень считается обнаруженной и реализуется аудиовизуальная индикация.

Звуковая индикация

Я использую для звуковой индикации пьезоэлемент от автономного пожарного извещателя. Громкость звучания пьезоэлемента весьма причудливым образом зависит от частоты сигнала. Я смог найти набор частот 900 (самый слабый сигнал) )- 1000 - 1100 (самый сильный сигнал), для которых громкость звучания увеличивается. Для управления звучанием пьезоэлемента, подключенного к контакту 11 платы, я используют таймер 2 Arduino.

Беззвучный режим (только светодиодная индикация) может быть активирован через меню настроек при влючении прибора.

Визуальная индикация

Для индикации я использую LCD-дисплей от мобильного телефона Nokia 5110:
Nokia 5110
Дисплей для этого телефона - монохромный c разрешением 84×48:
дисплей Nokia 5110
Контроллер дисплея - Philips PCD8544.
Подключение дисплея:

Вывод дисплея Вывод Arduino Назначение вывода дисплея
RST D10 сброс контроллера дисплея
CE (или CS) D09 разрешение ввода данных в контроллер дисплея
DC D05 режим ввода - данные/команды
Din D04 данные шины SPI
CLK (или SCLK) D03 команды шины SPI
VCC * напряжение питания (2,7 ... 3,3 В)
BL ** подсветка
GND GND "земля"

Существует два варианта дисплея LCD 5110 - с синим (именно такой я использую) или красным текстолитом:
дисплей Nokia 5110  дисплей Nokia 5110

* напряжения питания контроллера -
синий - строго 3,3 В (можно подключить к выводу 3V3 Arduino)
красный - по некоторым непроверенным сведениям выдерживает напряжение питания 5 В (можно питать от выводов 5V или 3V3 Arduino)
** напряжение питания подсветки -
синий - на вывод подсветки можно подать напряжение 3,3 или 5 В
красный - на вывод подсветки подключается "земля" (?)
Проблемой такого дисплея является ненадежный контакт ЖК-панели с печатной платой посредством соединителя ZEBRA, который устраняется, например, припаиванием проводника, прижимающего панель к плате - как рекомендовано здесь:
экран LCD 5110
Если эту проблему не устранить, то она приводит к "почернению" экрана, требующей повторной инициализации.

Для работы с таким дисплеем в Arduino я использую библиотеку Adafruit-PCD8544 от Adafruit Industries (сайт компании - https://www.adafruit.com).

"Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!"

Выключатель SW2 (5) управляет подсветкой экрана:
экран самодельного металлодетектора
При хорошем внешнем освещении подсветку дисплея можно не использовать, так как она потребляет заметную мощность.

Дискриминация мишеней

Вихревые токи затухают из-за наличия электрического сопротивления у "мишени". Это затухание описывается экспоненциальным законом $i = k H_0 {e^{ {-t} \over \tau}}$. Коэффициент $k$ определяется формой и размерами "мишени".  Постоянная времени $\tau = {L G} = {L \over R}$, определяющая длительность протекания вихревых токов, определяется электрической проводимостью материала мишени $G$ (или сопротивлением $R$) и ее индуктивностью $L$.
В таблице я привел относительную электрическую проводимость различных материалов по отношению к  золоту:

Материал  серебро Ag медь Cu золото Au алюминий Al железо Fe платина Pt
Отн. проводимость 1,5 1,4 1 0,86 0,24 0,23

Вихревые токи применяются для исследования свойств материалов посредством измерения электрической проводимости, так как материалы имеют уникальное значение проводимости в зависимости от их состава и способа изготовления. В качестве стандарта используется при этом значение проводимости химически чистой меди при температуре 20 ºC - стандарт International Annealed Copper Standard (IACS) - удельное сопротивление 1,7241x10-8 Ом·м или 5,8001x107 См/м (100% IACS). Железо, например, имеет значение проводимости, равное 18% от проводимости меди.

Как утверждается (например, в статье исследователя Reg Sniff), мишени из золота или из тонкой фольги имеют очень малую постоянную времени и вихревые токи в них быстро затухают, в отличие от мишеней из железа, меди или серебра.

Начальная напряженность магнитного поля $H_0$ определяется начальным током в катушке и уменьшается по кубическому закону $1 \over {h^3}$ при удалении от катушки. Величина напряженности магнитного поля $H_0$ вдоль оси катушки на расстоянии $z$ от ее центра, создаваемого током $I_0$,  определяется выражением: ${H_0} = { {w {R^2} {I_0}} \over {2   { {({R^2}+{z^2})}^{3 \over 2} } } }$.

Вихревые токи создают собственное затухающее магнитное поле, которое наводит экспоненциально затухающее (с той же постоянной времени $\tau$) напряжение в поисковой катушке. Величина этого напряжения уменьшается как шестая степень расстояния $1 \over {h^6}$ при удалении "мишени" от катушки. Это приводит к удлинению импульса напряжения на поисковой катушке, что и регистрируется металлодетектором.

Дополнительный анализ кривой сигнала (напряжения на поисковой катушке) может быть выполнен с целью дискриминации (выделения разных типов) мишеней. Наклон кривой в ее начале можно оценить отношением $K = {{x_t} \over {x_{t+{\Delta}t}}}$ величин выборок, отделенных, например, пятью интервалами (${\Delta}t=5$). При этом постоянная времени определяется выражением: ${\tau} = {{{\Delta}t} \over {ln K}}$

Для иссследования вихревых токов могут использоваться программные пакеты для моделирования электромагнитных процессов. В качестве примера можно привести моделирование электромагнитного тормоза на вихревых токах в пакете COMSOL Multiphysics (описание - https://www.comsol.com/blogs/simulating-eddy-current-brakes/):
моделирование вихревых токов

Существуют отрицательные мнения по поводу возможности эффективной дискриминации для импульсных металлодекторов.

"The most reliable discriminator is you, by digging the target!" (http://www.gold-prospecting-wa.com) - "Самый надежный дискриминатор - это вы, при выкапывании мишени".

В книге "Subsurface Sensing" авторов Ahmet S. Turk, Koksal A. Hocaoglu, Alexey A. Vertiy
Subsurface Sensing
приведены следующие утверждения:

дискриминация в импульсном металлодетекторе

"Важнейшим недостатком импульсных металлодетекторов является невозможность лёгкой дискриминации между различными типами металлов. ... Если размеры и глубина детектируемых металлических объектов  различны и неизвестны, то в общем случае невозможно определить тип металла".

В качестве примера импульсного металлодетектора, для которого заявлена возможность дискриминации (ферромагнитные (FERROUS)/неферромагнитные (N-FERROUS) материалы), можно привести модель PULSE STAR II.
Особенности дискриминации в таком детекторе:

  • возможна только для мишеней не менее 10 см в диаметре (в отличие от VLF/TR-детекторов, которые обладают способностью дискриминации даже для маленьких объектов);
  • объекты меньшего размера отображаются как ферромагнитные;
  • несколько маленьких неферромагнитных объектов отображаются как один большой ферромагнитный.

Работа над проектом продолжается

Яндекс.Метрика