Оглавление:
Видео: Детектор импульсной индукции на базе Arduino - LC-Trap: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
В поисках дальнейших идей для простого металлоискателя Ardino Pulse Induction только с одним напряжением питания я наткнулся на домашнюю страницу Teemo:
www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit
Он создал простой детектор импульсной индукции, используя принцип LC-ловушки. Подобные схемы были размещены здесь, на Instructable от TechKiwiGadgets. За исключением того, что схема Teemo использует внутренние компараторы микроконтроллера PIC, что требует меньшего количества внешних компонентов.
Поэтому мне было предложено использовать Arduino вместо PIC-контроллера для этой схемы и посмотреть, как далеко я могу продвинуться.
Шаг 1: Схема
Схема Arduino немного сложнее, поскольку Arduino не позволяет направлять внутренний аналоговый сигнал на вход компаратора. Это добавляет два компонента для простого делителя напряжения. Это приводит к конструкции с 12 внешними компонентами (без учета динамика и ЖК-дисплея 16x2) по сравнению с 9 в конструкции Flip Coil.
Принцип работы схемы очень хорошо объяснен на сайте Teemo. Обычно на катушку подается питание, а затем она отключается. После выключения катушка и конденсатор, включенные параллельно, создают затухающие колебания. На частоту и затухание колебаний влияет металл в непосредственной близости от катушки. Для получения дополнительных сведений о схеме см. Страницу Teemo или TechKiwi здесь, в Instructables.
Как и в детекторе Flip Coil Pulse Induction, я использую внутренний компаратор и возможность запуска прерывания для получения сигнала от катушки.
В этом случае я получу несколько прерываний, поскольку напряжение колеблется около опорного напряжения, установленного на компараторе. В конце колебания напряжение на катушке установится около 5В, но не совсем точно. Я выбрал делитель напряжения на 200 Ом и 10 кОм, чтобы получить напряжение около 4,9 вольт.
Чтобы упростить схему, я использовал D4 и D5 для обеспечения GND (для резистора 10 кОм) и 5 В (для резистора 220 Ом). Штифты устанавливаются при запуске детектора.
В этой версии я добавил подключение динамика с помощью многотональной оценки с регулируемой громкостью, как описано в разделе «Как программировать металлоискатель на базе Arduino». Это позволяет различать свойства цели, а также определять мощность сигнала. Динамик можно подключить к дополнительному 5-контактному разъему. Остальные 3 контакта заголовка будут использоваться для кнопок (будет реализовано).
Шаг 2: программирование
Теперь, когда схема спроектирована и прототип построен, пришло время найти подходящий подход для обнаружения металла.
1. Подсчет импульсов
Подсчет импульсов колебания до полного затухания - одна идея.
Если рядом с катушкой есть металл, количество колебаний уменьшается. В этом случае опорное напряжение компаратора должно быть установлено на уровне, при котором последний импульс практически не измеряется. Таким образом, если что-то обнаруживается, этот импульс немедленно исчезает. Это было немного проблематично.
Каждая волна колебания создает два прерывания. Один при спуске и один при подъеме. Чтобы установить опорное напряжение точно на гребень колебательной волны, время между понижением и повышением должно быть как можно короче (см. Рисунок). К сожалению, здесь накладные расходы среды Arduino создают проблемы.
Каждый триггер прерывания вызывает этот код:
ISR (ANALOG_COMP_vect) {
Toggle1 = Toggle0 // сохраняем последнее значение Toggle0 = TCNT1; // получаем новое значение}
Этот код занимает некоторое время (если я правильно помню, около 78 командных циклов, что составляет около 5 микросекунд при 16 МГц). Следовательно, минимальное обнаруживаемое расстояние между двумя импульсами - это именно то время, которое занимает этот код. Если время между двумя триггерами становится короче (см. Рисунок), он не будет обнаружен, поскольку код полностью выполняется до обнаружения второго прерывания.
Это приводит к потере чувствительности. В то же время я заметил, что затухание колебаний очень чувствительно к любым внешним воздействиям, что в целом несколько затрудняет этот подход.
2. Измерение частоты
Другой способ обнаружения металла - измерение частоты колебаний. Это имеет большое преимущество по сравнению с измерением затухания колебаний, поскольку изменение частоты позволяет различать металл. Если рядом с катушкой находится черный металл, частота будет снижаться, если рядом с катушкой есть драгоценный металл, частота увеличится.
Самый простой способ измерить частоту - измерить количество импульсов после того, как катушки начнут колебаться. Период времени между началом и последним импульсом, деленный на общее количество измеренных импульсов, и есть частота. К сожалению, последние несколько колебаний довольно несимметричны. Поскольку присутствие металла также влияет на затухание колебаний, последние колебания еще более несимметричны, показания трудно интерпретировать. На картинке это показано с пересечением 1 на 1’и 2 на 2’.
Поэтому лучший способ - использовать несколько более ранних импульсов для измерения частоты. Во время тестирования я обнаружил, что некоторые импульсы более чувствительны, чем другие. Где-то 2/3 колебаний - хорошая точка для сбора данных.
Обработка данных
Исходный код основан на вызове loop () функции pulse () для синхронизации катушки. Хотя результаты были неплохими, у меня возникло желание улучшить время. Для этого я создал код, полностью основанный на таймере, что привело к отдельной инструкции по программированию металлоискателя на базе Arduino. Это руководство подробно объясняет тайминг, вывод данных на ЖК-дисплей и т. Д.
1. ЖК-дисплей
Первый подход заключался в измерении 10 импульсов, а затем отображении значений на ЖК-дисплее. Поскольку я обнаружил, что передача данных I2C была слишком медленной, я изменил код, чтобы обновлять только один символ за импульс.
2. Подход минимальной стоимости
Для дальнейшего повышения стабильности показаний я написал процедуру последовательного вывода, чтобы лучше воспринимать измеренные данные. Там стало очевидно, что, хотя большинство показаний были в некоторой степени стабильными, некоторые - нет! Некоторые показания одного и того же колебательного импульса разошлись настолько далеко, что разрушили бы любой подход к анализу сдвига частоты.
Чтобы компенсировать это, я создал «границу», в пределах которой ценность заслуживала доверия. I. e. когда значения были более чем на 35 циклов таймера1 от ожидаемого значения, эти значения игнорировались (подробно описано в инструкции «Как программировать металлоискатель на базе Arduino»)
Такой подход оказался очень устойчивым.
3. Напряжение
Оригинальный дизайн Teemo питается ниже 5 вольт. Поскольку я предполагал, что «больше вольт = больше мощности = больше чувствительности», я запитал устройство вначале 12 В. Это привело к нагреву полевого МОП-транзистора. Этот нагрев затем привел к общему дрейфу измеренных значений, что привело к частой повторной балансировке детектора. Уменьшая напряжение до 5 В, тепловыделение полевого МОП-транзистора можно было минимизировать до уровня, при котором дрейф показаний практически не наблюдался. Это сделало схему еще проще, поскольку встроенный стабилизатор напряжения Arduino больше не понадобился.
В качестве полевого МОП-транзистора я изначально выбрал IRL540. Этот МОП-транзистор совместим с логическим уровнем, но имеет максимальное номинальное напряжение 100 В. Я надеялся на улучшение производительности при переходе на IRL640 с номинальным напряжением 200 В. К сожалению, результаты были такими же. Так что либо IRL540, либо IRL640 справятся с этой задачей.
Шаг 3: окончательные результаты
Преимущество детектора в том, что он различает драгоценные и железные материалы. Недостаток в том, что чувствительность при такой простой схеме не так хороша. Для сравнения производительности я использовал те же ссылки, что и для детектора Flip-Coil. Вероятно, хорошо для точного определения местоположения, но, скорее всего, разочаровывает для реального поиска.
Здесь исходная конструкция с контроллером PIC может быть более чувствительной, поскольку он работает на 32 МГц вместо 16 МГц для обеспечения более высокого разрешения для обнаружения сдвигов частоты.
Результаты были достигнуты при использовании катушки с 48 витками на 100 мм.
Как всегда, открыты для обратной связи
Рекомендуемые:
Система оповещения о парковке автомобиля на базе Arduino - Шаг за шагом: 4 шага
Система оповещения о парковке автомобиля на базе Arduino | Пошагово: в этом проекте я спроектирую простую схему датчика парковки заднего хода Arduino с использованием ультразвукового датчика Arduino UNO и HC-SR04. Эта система оповещения о реверсе автомобиля на базе Arduino может использоваться для автономной навигации, определения дальности роботов и других диапазонов r
Visuino RAMPS для широтно-импульсной модуляции (ШИМ) с использованием светодиодов: 8 шагов
Visuino RAMPS для широтно-импульсной модуляции (PWM) с использованием светодиода: в этом уроке мы будем использовать светодиод, подключенный к Arduino UNO и Visuino, чтобы уменьшить яркость светодиода с помощью широтно-импульсной модуляции (PWM) и компонента Ramps. Посмотрите демонстрационное видео
Бесконтактный инфракрасный термометр на базе Arduino - ИК-термометр с использованием Arduino: 4 шага
Бесконтактный инфракрасный термометр на базе Arduino | ИК-термометр с использованием Arduino: Привет, ребята, в этой инструкции мы сделаем бесконтактный термометр с использованием Arduino, поскольку иногда температура жидкости / твердого вещества слишком высока или слишком низка, и тогда трудно установить контакт с ним и прочитать его температура тогда в этом сценарии
Детектор импульсной индукции на основе Arduino - флип-катушка: 5 шагов (с изображениями)
Импульсно-индукционный детектор на базе Arduino - флип-катушка: идея Создав в прошлом несколько металлоискателей с разными результатами, я хотел изучить возможности Arduino в этом направлении. Есть несколько хороших примеров того, как построить металлоискатели с помощью Arduino, некоторые вот как поучительно
Светодиодный фонарик с широтно-импульсной модуляцией: 8 ступеней
Светодиодный фонарик с широтно-импульсной модуляцией: широтно-импульсную модуляцию (ШИМ) можно использовать для изменения мощности, скорости или яркости многих устройств. Со светодиодами можно использовать ШИМ, чтобы уменьшить их яркость или сделать их ярче. Я буду использовать их для изготовления небольшого ручного фонарика. Светодиод можно затемнить, быстро включив его и