Саморобний високочутливий металодетектор на Ардуїно своїми руками. Мій імпульсний металодетектор на Arduino

Колись, побудувавши своїми руками кілька металошукачів різного ступеня працездатності, я захотів вивчити, як працює схема Ардуїно в цьому напрямку.

Є кілька хороших прикладів того, як зібрати металошукач своїми руками. Однак, для них зазвичай необхідно або багато зовнішніх компонентів для обробки аналогового сигналу, або чутливість на виході досить слабка.

Коли ми думаємо про імпульсні металодетектори, основною темою є те, як фіксувати невеликі зміни напруги в сигналах, пов'язаних з пошуковою котушкою. Ці зміни зазвичай дуже малі. Найбільш очевидний підхід полягає у використанні аналогових входів «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 cli(); // stop interrupts TCCR1A = 0; // set entire TCCR1A register to 0 TCCR1B = 0; // Initialize counter value to 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 мм у повітрі). Це може бути дуже суб'єктивне спостереження.

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

Щоправда, часто схеми включають дуже багато компонентів, або прилад має слабку чутливість. Непоганий варіант металошукача можна отримати, зібравши його на базі мікроконтролера Ардуїно. Він реагує навіть на дрібні монети, працює стабільно незалежно від температури повітря та батарейки.

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

Суть конструктора

Принципова схема металошукача на Ардуїно включає низку компонентів. Імпульси, що генеруються Ардуїно, посилює польовий транзистор, який індукує магнітне поле в котушці.

Створення цього пристрою передбачає кілька послідовних кроків:

  1. Котушку потрібно робити 20 см у діаметрі з намотуванням 20 витків дроту. Товщина дроту має значення для індукції всієї котушки. Зазвичай використовують провід 04-08 мм. Ізолювати котушку можна, вставивши її у шматок пластикової труби від водопроводу. Жодних додаткових металевих з'єднань немає. Детальніше про створення котушки краще подивитися на спеціалізованих сайтах.
  2. Сам детектор будується або на макеті за схемою або шляхом спайки деталей на друкованій платі. Світлодіод під номером D13 на платі Ардуїно Нано є індикатором при пошуку металу.
  3. Що стосується паяння на платі, то схему можна зробити односторонньою або двосторонньою. Фахівці досвідченим шляхом встановили, що перший варіант кращий. Зі схеми потрібно виключити діоди і додати резистор в 10 Ом. При цьому виходить робочий детектор із зовнішніми компонентами.
  4. Для правильного зібраного детектора та програми Ардуїно єдиний спосіб налаштування – OLED-дисплей. Екран підключається до відповідних виходів на платі, а після включення копки живлення він повинен показати калібрування, яке триває кілька секунд. На екрані з'являються три цифри, які мають приблизно однакові значення.
  5. Щоб правильно налаштувати котушку, поблизу не повинно бути металевих предметів. Підстроювальний резистор ставиться на максимальну величину, але так, щоб зберігалося стабільне показання.
  6. Перевірити роботу приладу можна, якщо піднести метал до котушки. Світлодіод Ардуїно спалахує, а динамік клацає.

Не варто покладати на пристрій надто великі очікування. Через свою конструкцію детектор буде простим. Він зможе виявляти лише якісь речі. До рівня професійного він не дотягує. Є багато можливостей для доопрацювання з урахуванням перших випробувань у польових умовах. Але все ж таки прилад працює, з ним можна вирушати на пошуки захованих скарбів.

З цієї інструкції ви дізнаєтесь як зробити саморобний металошукач у домашніх умовах. Пошук різних металевих об'єктів - відмінне хобі, яке забезпечить вам прогулянки на свіжому повітрі, дозволить знайти нові місця і, можливо, знайти щось цікаве. Перш ніж дізнатися, як зробити металошукач своїми руками, з'ясуйте місцеві закони про те, як діяти у разі можливої ​​знахідки, зокрема у разі небезпечних об'єктів, археологічних реліквій чи об'єктів значної економічної чи емоційної цінності.

У мережі досить багато інструкцій з саморобного складання будинку потужних металошукачів для кольорових металів своїми руками, проте, особливість цієї інструкції в тому, що на додаток до 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 секунд поблизу металу, то отримане значення буде вважатися референсним, і звуковий сигнал видаватиметься, коли ви відведете детектор від металу, який затихне через кілька секунд. Частота моргання діодів та звукових сигналів залежить від потужності сигналу.

Перероблена версія всіма відомого імпульсного металошукача – "Пірата", але на 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; ) )