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

Металлоискатель на Ардуино своими руками – как самому собрать импульсную флип-катушку на микроконтроллере

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

Есть несколько хороших примеров того, как собрать металлоискатель своими руками. Однако, для них обычно необходимо либо довольно много внешних компонентов для обработки аналогового сигнала, либо чувствительность на выходе довольно слабая.

Когда мы думаем об импульсных металлодетекторах, основной темой является то, как фиксировать небольшие изменения напряжения в сигналах, связанных с поисковой катушкой. Эти изменения обычно очень малы. Наиболее очевидный подход заключается в использовании аналоговых входов «ATmega328». Но, глядя на спецификации, есть две основные проблемы: они в основном медленные, а разрешение (в большинстве случаев) низкое.

С другой стороны, металлоискатель на микроконтроллере работает на частоте 16 МГц и имеет довольно неплохие возможности синхронизации, а именно разрешение 0,0625 мкс при использовании тактовой частоты. Таким образом, вместо того, чтобы использовать аналоговый вход для считывания, самым простым способом восприятия небольших динамических изменений напряжения является сравнение изменения падения напряжения с течением времени при фиксированном опорном напряжении.

Для этой цели ATmega328 имеет подходящие особенности внутреннего компаратора между D6 и D7. Этот компаратор способен инициировать прерывание, что позволяет точно обрабатывать события. Используя его вместе с аккуратно закодированными процедурами синхронизации, такими как millis () и micos (), а также используя внутренний таймер ATmega328 с гораздо более высоким разрешением, Arduino — отличная основа для подобного рода металлоискателя.

Таким образом, говоря об исходном коде — хорошим началом было бы программирование внутреннего компаратора для «изменения» полярности входов и использование внутреннего счетчика с максимальной скоростью, возможной для изменения периодичности изменений.

Итоговый вариант кода для Arduino:

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

Шаг 1: Идея индукционного детектора на Arduino — флип-катушка

Идея состоит в том, чтобы использовать Arduino как детектор импульсной индукции, как и в TPIMD, поскольку задумка с кривой затухания, похоже, работает очень хорошо. Проблема с импульсными индукционными детекторами заключается в том, что они обычно нуждаются в разном напряжении для работы. Одно напряжение для питания катушки и отдельное напряжение для обработки кривой затухания. Эти два источника напряжения всегда усложняют процесс постройки импульсных индукционных детекторов.

Рассматривая напряжение катушки в детекторе PI, полученную кривую можно разделить на две разные стадии. Первый этап — это сам импульс, питающий катушку и создающий магнитное поле (1). Второй этап — это кривая спада напряжения, начиная с пика напряжения, а затем быстро изменяясь на «безмощностное» напряжение катушки(2).

Проблема в том, что катушка меняет свою полярность после импульса. Если импульс положительный (Var 1. на прилагаемом рисунке) кривая распада отрицательна. Если импульс отрицательный, кривая затухания будет положительной (Var 2. на прилагаемом рисунке).

Чтобы решить эту основную проблему, катушку нужно «перевернуть» электронным путем после импульса. В этом случае импульс может быть положительным, и кривая затухания также останется положительной.

Для этого катушка должна быть изолирована от Vcc и GND после импульса. В этот момент существует только ток, протекающий через демпфирующий резистор. Эта изолированная система катушки и демпфирующего резистора может быть «ориентирована» на любое опорное напряжение. Это теоретически создаст комбинированную положительную кривую (см. нижнюю часть чертежа).

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

После некоторых экспериментов я остановился на следующей схеме:

Схема состоит из модуля Arduino Nano. Этот модуль управляет двумя МОП-транзисторами, питающими катушку (на SV3) через D10. Когда импульс на конце D10 заканчивается, оба МОП-транзистора изолируют катушку от 12V и GND.

Сохраненная энергия в катушке выходит через резистор R2 (220 Ом). В то же время резистор R1 (560 Ом) соединяет первую положительную сторону катушки с GND. Это изменяет отрицательную кривую затухания на резисторе R5 (330 Ом) до положительной кривой. Диоды защищают входной вывод Arduino.

R7 является делителем напряжения около 0,04 В. В настоящее время кривая затухания на D7 становится более отрицательной, чем 0,04 на D6, прерывание срабатывает, а длительность после окончания импульса сохраняется.

Читайте также:  Подвесное дачное кресло своими руками

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

Шаг 2: Строим детектор (макет)

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

Светодиод D13 на плате Arduino Nano используется в качестве индикатора для металла.

Использование макета — самый быстрый способ сделать работающий детектор. Нужно провести некоторую проводку, но это может быть сделано на отдельном маленьком макете. На снимках это показано в 3 этапа, так как Arduino и МОП-транзисторы скрывают некоторые из проводов. При тестировании я случайно отключил диоды, не заметив сразу. Это особо не повлияло на поведение детектора. В версии на печатной плате я их оставил.

На рисунках не показаны подключения к OLED-дисплею 0,96. Этот дисплей подключен таким образом:

Vcc — 5В (на выводе Arduino, а не на блоке питания!)
GND — GND
SCL — A5
SDA — A4

Этот OLED-дисплей необходим для первоначальной калибровки детектора. Это делается путем установки правильного напряжения на PIN6 Arduino. Это напряжение должно быть около 0,04 В. Дисплей помогает установить правильное напряжение.

Макетная версия работает очень хорошо, хотя, вероятно, не подходит использования в полевых условиях.

Шаг 3: Проект на печатной плате

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

Сделаны следующие изменения:

  1. Диоды были исключены.
  2. На контакты МОП-транзисторов добавлен резистор 10 Ом
  3. Напряжение питания делителя напряжения на D6 задается сигналом высокого уровня на D8
  4. Пин драйвера для МОП-транзисторов был изменен.

Таким образом можно создать одностороннюю печатную плату, которая может быть спаяна на универсальной печатной плате. Используя эту схему, вы получите рабочий PI-детектор с 8-10 внешними компонентами (в зависимости от того, используется ли OLED-дисплей и / или динамик).

Шаг 4: Настройка и использование детектора

Если детектор правильно построен и программа записана в Arduino, самым простым (если не единственным) способом настройки устройства является использование OLED-дисплея. Дисплей подключен к 5V, GND, A4, A5. Дисплей должен показывать «калибровку» после включения питания устройства. Через несколько секунд он должен сказать «калибровка окончена», и на дисплее должны отобразиться три цифры.

Первое число — это «контрольное значение», указанное во время калибровки. Второе значение — это последнее измеренное значение, а третье значение — среднее значение последних 32 измерений.

Эти три значения должны быть более или менее одинаковыми (в моих тестах до 1000). Среднее значение должно быть более или менее стабильным.

Чтобы начать первоначальную настройку, рядом с катушкой не должно быть металла.

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

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

Для моей конфигурации (катушка: 18 оборотов\20 см) стабильное значение составляет около 630-650. После установки нажмите кнопку сброса, аппарат снова откалибрует и все три значения будут в одном диапазоне. Если металл теперь поднести к катушке, светодиод на плате Arduino (D13) должен загореться. Прилагаемый динамик издает несколько щелчков (в исходном коде есть пространство для улучшений).

Во избежание высоких ожиданий:

Детектор обнаруживает некоторые вещи, но он остается очень простым и ограниченным.

Чтобы дать представление о возможностях, я сравнил некоторые другие детекторы со своими. Результаты по-прежнему весьма впечатляют для детектора с 8 внешними элементами, но не дотягивают до профессионального оборудования.

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

Шаг 5: Подключение дисплея 16х2

Во время тестирования я понял, что библиотека для OLED-дисплея I2C потребляла слишком много ресурсов, поэтому я решил использовать 16×2-дисплей с конвертером I2C.

Я адаптировал программу для ЖК-дисплея, добавив некоторые полезные функции. В первой строке дисплея теперь отображается уровень сигнала возможной индикации. Вторая строка теперь показывает два значения. Первое указывает на отклонение текущего сигнала по сравнению с калибровочным значением. Это значение должно быть «0». Если это значение постоянно отрицательное или положительное, детектор должен быть откалиброван нажатием кнопки сброса. Положительные значения указывают на металл вблизи катушки.

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

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

Читайте также:  Насос для бутылки своими руками

Начальная настройка детектора

При настройке детектора важно второе значение второй строки (первое можно игнорировать). Первоначально значение может быть «неустойчивым» (см. Рисунок). Поверните подстроечный резистор, пока значение не достигнет стабильного показания. Затем поверните его, чтобы увеличить значение до максимального стабильного значения. Нажмите кнопку сброса для повторной калибровки, и детектор готов к использованию.

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

Катушки

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

  • 1 -> 18 витков/ 200 мм
  • 2 -> 25 витков/100 мм
  • 3 -> 48 витков/100 мм

Интересно, что все катушки работали довольно хорошо, с почти одинаковой производительностью (рублевая монета на 40-50 мм в воздухе). Это может быть весьма субъективное наблюдение.

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

Источник

Как сделать металлоискатель на Ардуино

Металлоискатели, или металлодетекторы, применяют для бесконтактного поиска металлов и сделанных из них предметов. Такие устройства используют военные, сотрудники различных служб безопасности, археологи для нахождения металлических артефактов, востребованы они и среди любителей искать предметы старины. Обычно металлодетекторы довольно дороги, но современные технологии и доступные микроконтроллеры позволяют самостоятельно сделать не уступающий фабричным образцам аналог. Далее мы рассмотрим примеры сборки металлоискателя на одноплатном контроллере Ардуино.

Как устроен металлодетектор

Металлоискатель использует в своей работе метод индуктивного зондирования. Основная рабочая часть прибора – катушка индуктивности. Наличие металла под зондом детектора меняет индуктивность, которая замеряется логикой контроллера и передается пользователю через интерфейсное устройство в виде сигналов (принцип работы будет подробнее рассмотрен ниже). Таким устройством обычно служит динамик или наушники, но могут применяться и другие способы оповещения:

  • светодиоды;
  • сообщения на смартфон;
  • вывод визуальных кодов на встроенный экран, и так далее.

Любой металлоискатель состоит из трех основных блоков:

  • катушка (или несколько). Они играют роль обнаруживающих металл передающих или принимающих антенн;
  • блок управления;
  • устройство вывода сигнала.

Отметим, что речь идет о простом импульсном или индукционном детекторе. Дорогие промышленные и специализированные образцы могут содержать иную аппаратную «начинку».

В блоке управления расположен генератор сигнала и центральная схема — контроллер. Существует множество схем металлоискателей под разные виды плат. Распространена схема устройства «Пират» на базе двух чипов:

  • операционного двухканального усилителя TL072 и его аналога К157УД2 (приемный модуль);
  • чипа NE555 (передающий узел системы).

Но в последнее время становятся популярны варианты на Arduino. Причина этого — простота, дешевизна, хорошая изученность семейства Ардуино и мощные программные возможности платформы.

Принцип работы

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

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

  • L — значение индуктивности в Генри;
  • μο — магнитная проницаемость;
  • N — количество витков катушки;
  • A — площадь сечения провода;
  • L — длина намотанного на катушку провода в метрах.

При наличии металла рядом с катушкой индуктивность меняется:

  • немагнитные металлы ее снижают;
  • магнитные, наподобие железа — увеличивают.

На этом свойстве основаны селективные металлоискатели, способные по изменению индуктивности определять тип попавшего в поле действие металла. Реализация такой дискриминации требует высокочувствительной катушки с большим числом витков, соответствующего контроллера и прошивки. Поэтому недорогие модели (в том числе DIY) свойство селективности обычно не поддерживают, но встречаются и варианты с ней. У образцов на Ардуино дискриминация встречается редко, хотя существуют схемы так называемых пинпойнтеров — способных различать металлы на небольших расстояниях детекторов.

Уровень индуктивности зависит от сердечника. Бессердечниковые катушки с небольшим количеством витков имеют сравнительно невысокую итоговую чувствительность.

Для получения высоких значений нужны варианты на ферритовом сердечнике и с несколькими десятками (а лучше — сотнями) витков.

Но при создании простого бытового детектора достаточно и катушки первого типа. Ее можно сделать, намотав 30–40 витков на подходящий предмет — например, пустую пластиковую «шайбу» от изоленты.

Простой металлоискатель на базе Arduino

Для постройки понадобятся:

  • одноплатный компьютер Arduino Nano;
  • зуммер (небольшой динамик-«пищалка»);
  • катушка индуктивности — покупная или намотанная самостоятельно;
  • конденсатор на 10 нФ;
  • резистор на 330 Ом;
  • резистор на 1 кОм;
  • диод типа 1N4148;
  • светодиод;
  • макетная плата;
  • источник питания на 9 В;
  • провода для соединения.

Схема устройства

Готовый металлоискатель на Arduino схематически выглядит так:

Всеми процессами управляет микрокомпьютер Arduino. О нахождении в поле «зрения» металла сигнализирует дополненный светодиодом зуммер, а катушка с конденсатором служат непосредственно для обнаружения. Импульсный диод в схеме нужен для понижения напряжения, а резистор ограничивает ток на контактах Ардуино.

Все элементы монтируются на макетной плате. Вид в сборе:

Схема действует следующим образом:

  • на выходе Ардуино мы создаем импульсы прямоугольной формы;
  • они поступают на LR фильтр верхних частот;
  • с каждым переходом уровня на катушке возникнет быстрый остроконечный импульс. Долгота его пропорциональна значению индуктивности нашей катушки.
Читайте также:  Окно для прицепа своими руками

Измеряя ширину импульса, можно замерить и саму индуктивность. Но важно учесть, что длина импульсов всего около 0.5 микросекунды, и «поймать» их по отдельности с помощью Arduino затруднительно. Поэтому в систему внедрен конденсатор: он заряжается импульсами до уровня считывания напряжения контроллером через аналоговый контакт A5. На аналогово-цифровом преобразователе из него будет получено цифровое значение. Когда напряжение считано, конденсатор разряжается подачей низкого напряжения на А5 — так называемый «логический нуль» (перед этим программа переводит контакт из режима «ввода» на «вывод».

Цикл занимает примерно 200 мс. Для большей точности его можно повторить его несколько раз и получить среднее значение, с каковым и работать. Зная приближенное значение индуктивности, плата анализирует его и выдает заданные сигналы на диод и динамик.

Прошивка

Поскольку мы делаем импульсный металлоискатель на Ардуино, мало его собрать — нужно еще залить управляющее ПО. В терминологии Arduino оно называется «скетч» и прошивается в плату при помощи входящей в комплект среды разработки.

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

  • инициализируются два контакта контроллера. Первый генерирует идущие на катушку импульсы, второй — читает напряжение с конденсатора;
  • также включаются два контакта — они управляют диодом и звуковым зуммером.

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

Прибор может быть собран в любом удобном корпусе, покупном или самодельном. В самом простом случае его можно смонтировать даже на селфи-палке.

Более сложная схема с шестью катушками

Для лучших результатов можно использовать несколько катушек и плату Arduino Nano.

  • контроллер Ардуино;
  • 9-вольтовый источник питания;
  • счетверенный компаратор LM339 — 2 шт.;
  • макетная плата Veroboard 50 на 80 мм;
  • резисторы на 1 кОм — 5 шт.;
  • резисторы на 100 Ом — 5 шт.;
  • диод сигнальный IN4148 — 5 шт.;
  • конденсатор на 0.1 мкФ — 5 шт.;
  • конденсатор керамический на 330 пФ — 5 шт.;
  • резистор на 10К — 1 шт.;
  • светодиодная лента с резистором на 150 Ом, под напряжение 3 В — для визуальной индикации.

Проводником здесь служит медный провод сечением 0.26 мм и 25 метров в длину. Также нужны 3 мяча для пинг-понга, лист пластика, 6-мм МДФ 22 на 23 см для основы катушек (два листа), двухкомпонентный эпоксидный клей и экранированный кабель сечением 2–3 мм и длиной 30 см. Под рукоять можно взять пластиковую ручку швабры с гибким шарниром или другую похожую конструкцию.

Подготовка

Сперва создадим на картоне шаблон, нарисовав на нем круг радиусом 40 мм и разделив его на 8 одинаковых сегментов. Должна получиться шестиугольная форма. С ее помощью рисуется контур на листе бумаги. Всего должно получиться пять форм, которые следует скопировать на доску МДФ, как показано на картинке. Получившееся следует вырезать в двух экземплярах.

Далее в центре каждого шестиугольника одной из форм фрезой сверлятся отверстия под будущие катушки:

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

Затем на 40-мм цилиндр наматывается 40 витков проволоки. Должно получиться пять таких катушек. Обмотки можно склеить горячим клеем, оставляя в начале и конце по 20 см для соединения с платой.

После этого в каждом узле катушки высверливается 3-мм отверстие для подвода проводов, и намотанные блоки приклеиваются на место.

Важно делать их «заподлицо» с плитой МДФ, чтобы катушки не портились при работе с прибором.

Монтаж

Схема будущего металлоискателя:

Монтажная плата размечается по созданному ранее макету.

Сперва ставится контроллер Arduino и чип LM339. Затем добавляются конденсаторы и резисторы, с ними же ставится экранированный кабель.

Конденсаторы на 0.1 мкФ можно разместить прямо на МДФ для экономии места и провода, там же ставятся диоды.

Готовый вид смонтированной системы:

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

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

Готовый вид конструкции:

Программная часть

Полный текст скетча для Ардуино можно найти по ссылке ниже.

Заключение

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

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

Видео по теме

Источник

Оцените статью
Своими руками