Самодельный высокочувствительный металлодетектор на ардуино своими руками. Металлодетектор и система оповещения с помощью ардуино. Скачиваем приложение Bolt App

Самодельный высокочувствительный металлодетектор на ардуино своими руками. Металлодетектор и система оповещения с помощью ардуино. Скачиваем приложение Bolt App

Переработанная версия всеми известного импульсного металлоискателя - "Пирата", но на Arduino. Имеет неплохую чувствительность даже на мелкие монеты. Стабилен в не зависимости от температуры и заряда батареи. Схема максимально упрощена.

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

К слову сказать, что есть еще третий тип металлоискателей - частотный. Малоэффективная и очень простая конструкция в основе которой генератор колебаний магнитного контура, который чувствителен к изменению величины индукции катушки. Мы ее рассматривать не будем из-за низкой чувствительности. Личный эксперименты по разработке такой конструкции в лучшем случае позволяли детектировать сковородку на 20 см глубины. На монет реагировал только в "упор". Практически бесполезная штука. По тому от нее сразу отказался.


Наша схема импульсного металлоискателя имеет в себе несколько основных компонентов. Arduino генерирует импульсы, они усиливаются полевым транзистором (силовым ключом) который в свою очередь индуцирует импульсы магнитное поле в катушке. Магнитный импульс проходит до искомого металла и индуцирует в нем ток, а затем обратный сигнал магнитного поля. Этот обратный магнитный поток через небольшую задержку возвращается обратно в катушку металлодетектора и генерирует импульс. Сигнал проходит мимо пары диодов (диоды нужны что бы ограничить напряжение до 1 вольта) и уходит на вход операционного усилителя. Усиленный сигнал попадает в arduino в котором высчитывается "спадающий хвост" после отключения катушки силовым ключем. Т.е. как раз ответ от искомого металлического предмета. В зависимости от времени спада мы можем судить о величине или удаленности объекта. Индикатор показывает эту величину в 8-и уровнях индикаторов.

К слову о катушке. Она должна быть диаметром 20 см с 20-ю витками провода 0,4 - 0,8 мм. Толщина провода так же влияет на индукцию всей катушки. Сильное отклонение от толщины провода приведет к ухудшению чувствительности прибора. Катушка вставлена в водопроводную ПВХ трубу и не имеет никаких дополнительных металлический соединений.



Скетч программы содержит генератор импульсов и алгоритм обработки входящего сигнала с усилителя.

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; // port B - all out DDRD = 0xFF; // port D - all out for (i = 0; i <255; i++) // калибровка { PORTB = B11111111; delayMicroseconds(200); PORTB = 0; delayMicroseconds(20); s0 = analogRead(A0); s1 = analogRead(A0); s2 = analogRead(A0); c0 = c0 + s0; c1 = c1 + s1; c2 = c2 + s2; delay(3); } c0 = c0 / 255; c0 = c0 - 5; c1 = c1 / 255; c1 = c1 - 5; c2 = c2 / 255; c2 = c2 - 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 = ss0 / 16; PORTD = ss0; // посылаем на индикатор (send to LEDs) delay(1); ss1 = s1 - c1; if (ss1 < 0) { sss1 = 1; } ss1 = ss1 / 16; PORTD = ss1; // посылаем на индикатор (send to LEDs) delay(1); ss2 = s2 - c2; if (ss2 < 0) { sss2 = 1; } ss2 = ss2 / 16; PORTD = ss2; // посылаем на индикатор (send to LEDs) 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 = 0; sss1 = 0; sss2 = 0; } }






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



Металлоискатели в официальных точках продаж стоят не так дешево, как хотелось бы. Но сегодня благодаря развитию радиолюбительской техники маталлоискатель можно сделать самостоятельно на основе Arduino.


По сути, с помощью Arduino можно создать простой индуктивный измеритель, то есть устройство, которое может использоваться для измерения неизвестной индуктивности катушки. В данном проекте используется обычный резонансный контур, в котором параллельно соединены конденсатор и катушка индуктивности. Естественная резонансная частота LC-контура изменяется в зависимости от присутствия металла поблизости от катушки. Для получения приемлемого для считывания сигнала с резонансного контура используется компаратор LM339. Поскольку колебания от LC-контура всегда будут в форме синусоидальной волны, то в этом проекте и используется детектор пересечения нуля на основе компаратора, чтобы преобразовать синусоидальную волну в прямоугольные частотные импульсы, чтобы плата Arduino могла измерять период этих импульсов, и на основе полученных данных о периоде оповещать о присутствии металла вблизи прибора. Благодаря встроенной в Arduino IDE функции pulseIn() можно измерять период времени импульса. Например, pulse = pulseIn (11, HIGH, 5000). В этом случае функция возвращает значение периода времени, в течение которого импульс оставался высоким на линии 11. Третий параметр является необязательным, он устанавливает время ожидания до появления импульса на указанной линии.


Схема металлоискателя на основе Arduino представлена ниже.




double pulse; void setup() { pinMode(11,INPUT); pinMode(13,OUTPUT); pinMode(8,OUTPUT); } void loop() { digitalWrite(13,HIGH); delayMicroseconds(5000); digitalWrite(13,LOW); delayMicroseconds(100); pulse = pulseIn(11,HIGH,5000); if(pulse > 920) { tone(8, 1); delay(3000); noTone(8); } }

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

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

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

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

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

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

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

// Defining all required pre variables etc. and setting up the registers unsigned char clockSelectBits = _BV(CS10); // no prescale, full xtal void setup() { pinMode(6,INPUT); // + of the comparator - by setting them as INPUT, they are // set to high impedance pinMode(7,INPUT); // - of the comparator - by setting them as INPUT, they are // set to high impedance cli(); // stop interrupts TCCR1A = 0; // set entire TCCR1A register to 0 TCCR1B = 0; // same for TCCR1B TCNT1 = 0; // initialize counter value to 0; TCCR1B |= clockSelectBits; // sets prescaler and starts the clock TIMSK1 = _BV(TOIE1); // sets the timer overflow interrupt enable bit sei(); //allow interrupts ACSR = (0 << ACD) | // Analog Comparator: Enabled (0 << ACBG) | // Analog Comparator Bandgap Select: AIN0 is applied to the positive input (0 << ACO) | // Analog Comparator Output: Off (1 << ACI) | // Analog Comparator Interrupt Flag: Clear Pending Interrupt (1 << ACIE) | // Analog Comparator Interrupt: Enabled (0 << ACIC) | // Analog Comparator Input Capture: Disabled (0 << ACIS1 | 0 << ACIS0 // interrupt on output toggle // (0 << ACIS1 | 1 << ACIS0 // reserved // (1 << ACIS1 | 0 << ACIS0 // interrupt on falling output edge // (1 << ACIS1 | 1 << ACIS0 // interrupt on rising input edge ; } // this routine is called every time the comparator creates an interrupt ISR(ANALOG_COMP_vect) { oldSREG=SREG; cli(); timeStamp=TCNT1; SREG = oldSREG; } // this routine is called every time there is an overflow in internal counter ISR(TIMER1_OVF_vect){ timer1_overflow_count++; } // this routine is used to reset the timer to 0 void resetTimer(void){ oldSREG = SREG; cli(); // Disable interrupts TCNT1 = 0; //initialize counter value to 0 SREG = oldSREG; // Restore status register TCCR1B |= clockSelectBits; // sets prescaler and starts the clock timer1_overflow_count=0; // resets overflow counter }

Конечно, эта идея не совсем новая. Основная часть этого кода может быть другой. Попробуйте поискать в других источниках, например 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 мм в воздухе). Это может быть весьма субъективное наблюдение.

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

Мощность металлоискателя небольшая, но для бытовых целей ее вполне хватит.


Материалы и инструменты для изготовления:
- микроконтроллер Arduino UNO;
- провод 28 калибра (диаметр 0.32мм);
- один переключатель;
- пьезозуммер;
- два резистора на 10К;
- один резистор на 1.2К;
- два конденсатора 100n;
- два конденсатора 22n;
- один транзистор типа BC547;
- батарея на 9В;
- строительные перчатки.

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

Процесс изготовления металлоискателя:

Шаг первый. Изготовление катушки
Чтобы изготовить катушку, для нее нужно вырезать основу, корпус. Автор вырезает катушку из фанеры на станке, ее диаметр составляет 6 дюймов. В итоге получается два кольца, которые впоследствии склеиваются столярным клеем. После высыхания, катушку тщательно обрабатывают наждачной бумагой, чтобы она была гладкой. После того, как основа будет изготовлена, на нее можно наматывать провод. Всего нужно сделать 30 витков провода, оставив конец длиной не менее 5-ти дюймов для подключения. Наматывать провод нужно плотно, это обеспечит качественную работу катушки. Поверх провода катушку можно обмотать изолентой или скотчем для лучшей фиксации.





Шаг второй. Сборка схемы на макете
Чтобы убедиться в том, что катушка собрана верно и вся система правильно работает, ее сперва нужно собрать на макетной плате, а уже потом спаивать. Порядок подключения не принципиален, автор начал с транзистора, потом пошли резисторы и конденсаторы. После этого были подключены «мужские и женские» разъемы на палате Arduino.












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

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


Шаг четвертый. Спайка схемы
Собирается все на куске текстолита, контакты спаиваются между собой с помощью кусочков провода. При необходимости можно сделать для устройства специальную плату методом травления. Более подробно увидеть, как происходит сборка схемы, можно увидеть на фото.





Шаг пятый. Завершающий этап сборки
Чтобы закрепить плату автор использует кусок фанеры. По размеру он должен быть таким, чтобы на него поместился контроллер Arduino и печатная плата. Края нужно обработать наждачной бумагой, чтобы сделать их гладкими. Для того чтобы приклеить элементы к фанере, можно использовать двусторонний скотч. Также подойдет клей и любые другие способы крепления.

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

В сети довольно много инструкций по самодельной сборке дома мощных металлоискателей для цветных металлов своими руками, однако, особенность этой инструкции в том, что в дополнение к Arduino требуется всего несколько компонентов: обычный конденсатор, резистор и диод, образующие сердечник вместе с поисковой катушкой, состоящей из 20 обмоток электропроводящего кабеля. Светодиод, динамик и / или наушники. Дополнительным преимуществом является то, что всё может питаться от 5 В, для чего достаточно общей мощности USB 2000 мАч.

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

Шаг 1: Принцип работы

Когда электричество начинает проходить через катушку, оно создает магнитное поле. Согласно закону индукции Фарадея, изменяющееся магнитное поле приведет к электрическому полю, которое противостоит изменению магнитного поля. Таким образом, напряжение будет развиваться по катушке, что будет противодействовать увеличению тока. Этот эффект называется самоиндукцией, а единицей индуктивности является Генри, где катушка 1 Генри развивает разность потенциалов на 1 В, когда ток изменяется на 1 Ампер в секунду. Индуктивность катушки с N обмотками и радиусом R составляет приблизительно 5 мкГн x N ^ 2 x R, с R в метрах.

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

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

Таким образом, измеряя индуктивность катушки можно обнаружить присутствие металлов поблизости. С Arduino, конденсатором, диодом и резистором можно измерить индуктивность катушки следующим образом: делая катушку частью высокочастотного LR фильтра и питая его волновыми блоками, будут создаваться короткие всплески на каждом переходе. Длительность этих всплесков пропорциональна индуктивности катушки. Фактически, характерное время фильтра LR равно tau = L / R. Для катушки с двадцатью витками и диаметром 10 см L ~ 5muH x 20 ^ 2 x 0,05 = 100 мкГн.

Для защиты Arduino от избыточного тока минимальное сопротивление составляет 200 Ом. Таким образом, мы ожидаем импульсы длиной около 0,5 микросекунды. Их трудно измерить напрямую с высокой точностью, учитывая, что тактовая частота Arduino составляет 16 МГц.

Вместо этого восходящий импульс можно использовать для зарядки конденсатора, который затем может быть считан аналого-цифровым преобразователем (ADC) Arduino. Ожидаемый заряд от импульса 25 мА длительностью 0,5 микросекунд составляет 12,5 нК, что даст 1,25 В на конденсаторе 10 нФ. Падение напряжения на диоде уменьшит это значение. Если импульс повторяется несколько раз, заряд конденсатора возрастает до ~ 2 В. Эти параметры можно получить с помощью Arduino ADC, используя analogRead (). Затем конденсатор можно быстро разрядить, изменив считывающий разъем на выходной и установив его на 0 В на несколько микросекунд.

Все измерения занимают около 200 микросекунд, 100 для зарядки и сброса конденсатора и 100 для преобразования ADC. Точность может быть значительно увеличена путем повторения измерения и усреднения результата: в среднем 256 измерений занимают 50 мс и улучшают точность в 16 раз. Таким образом, 10-битный ADC достигает точности 14-битного ADC.

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

Калибровка измерений может выполняться в автоматическом режиме с помощью ПО. Если рядом с катушкой большую часть времени нет металла, то отклонение от среднего значения, будет означать наличие рядом металлического объекта.

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

Шаг 2: Список необходимых компонентов

Электрическая основа:

  • Arduino UNO R3 + макетная плата или Arduino Nano с 5×7см макетной платой
  • 10nF конденсатор
  • Маленький сигнальный диод, например, 1N4148
  • 220- ом резистор

Для питания:

  • Переносная зарядка с USB кабелем

Для визуального вывода:

  • 2 светодиода разного цвета, например, синий и зеленый
  • 2 резистора 220 Ом для ограничения тока

Для вывода звука:

  • Пассивный зуммер
  • Микровыключатель для отключения звука

Для выхода наушников:

  • Разъем для наушников
  • Резистор 1 кОм
  • Наушники

Чтобы легко подключить / отключить поисковую катушку:

  • 2-контактный винтовой зажим (клемма)

Для поисковой катушки:

  • ~ 5 метров тонкого электрического кабеля

Конструкция для катушки. Должна быть жесткой, но не должна быть круглой. Для конструкции: Около 1 метра — палка деревянная, пластиковая или селфи-палка.

Шаг 3: Поисковая катушка

Для поисковой катушки я намотал примерно 4 м многожильного провода вокруг картонного цилиндра диаметром 9 см, в результате чего получилось 18 витков. Тип кабеля не имеет значения, если сопротивление по меньшей мере в десять раз меньше значения R в фильтре RL, поэтому убедитесь, что оно осталось ниже 20 Ом. Я измерил, вышло 1 Ом, так что это безопасно. Так же подходит 10 метровый рулон соединительной проволоки с разветвленными концами.

Шаг 4: Собираем прототип




Учитывая небольшое количество внешних компонентов, вполне возможно собрать схему на маленькой макетной плате. Однако конечный результат довольно громоздкий и не очень надежный. Поэтому, лучше использовать Arduino nano и припаять с дополнительными компонентами на панели прототипов 5×7 см (см. Следующий шаг)

Для обнаружения металлов используются всего 2 контакта Arduino, один для обеспечения импульсов к фильтру LR и один для считывания напряжения на конденсаторе. Пульсирование может производиться с любого выходного контакта, но считывание должно проводиться с помощью одного из аналоговых контактов A0-A5. Еще 3 контакта используются для 2 светодиодов и для вывода звука.

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

  1. На макетной плате последовательно подключите резистор 220 Ом, конденсатор и диод, направленный отрицательной клеммой (черная линия) к конденсатору.
  2. Подключите A0 к резистору (конец, не подключенный к диоду)
  3. Подключите A1 к месту пересечения диода и конденсатора
  4. Подключите один конец катушки к точке пересечения резистора и диода
  5. Подключите другой конец катушки к земле
  6. Подключите один светодиод его положительной клеммой к выводу D12 и его отрицательной клеммой через резистор 220 Ом к земле
  7. Подключите другой светодиод его положительной клеммой к выводу D11 и его отрицательной клеммой через резистор 220 Ом к земле
  8. При желании, подключите наушники или динамики между контактом 10 и землей. Конденсатор или резистор можно добавить последовательно для уменьшения громкости.

На этом все!

Шаг 5: Делаем окончательную версию устройства


Для того, чтобы использовать металлоискатель на улице, необходимо надежно припаять все компоненты. Обычная макетная плата 7х5см прекрасно подойдет к Arduino nano и все остальным компонентам. Используйте ту же схему, что и в прошлом шаге. Я так же решил добавить выключатель последовательно с зуммером, чтобы иметь возможность отключать звук, когда он не нужен. При помощи винтового зажима, можно быстро попробовать различные катушки, без необходимости заново паять. Все питание осуществляется через 5В mini- или microUSB порт Arduino Nano.

Шаг 6: Программное обеспечение

Скетч Arduino вы можете скачать ниже. Загрузите и запустите его. Я использовал Arduino 1.6.12 IDE. Рекомендуется запускать с debug = true в начале, чтобы настроить количество импульсов на измерение. Лучше всего иметь показания АЦП между 200 и 300. Увеличьте или уменьшите количество импульсов в случае, если ваша катушка дает совершенно другие показания.

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

Файлы

Шаг 7: Закрепляем устройство


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

Шаг 8: Инструкция по применению

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

Синие вспышки и звуковые сигналы низкой частоты указывают на присутствие неферромагнитных металлов. Зеленые вспышки и звуковые сигналы высокой частоты указывают на присутствие ферромагнитных металлов. Учтите, что когда катушка находится более 5 секунд вблизи металла, то полученное значение будет считаться референсным, и звуковой сигнал будет издаваться, когда вы отведете детектор от металла, который затихнет через несколько секунд. Частота моргания диодов и звуковых сигналов зависит от мощности сигнала.



просмотров