Вести с полей, как обещал.
На моем Нетбуке с процессором Atom N450 установлена Ubuntu Linux и Windows 7 Starter. Для экспериментов я выбрал Linux. Для работы со звуковой картой я выбрал библиотеку JACK (jackaudio.org). Библиотека имеет низкие показатели латентности. Для рисования "Годограмм" я выбрал библиотеку Qt4 (qt.nokia.com). Выбранные библиотеки должны позволить перенос программы под Windows, если потребуется.
У меня есть 2 самодельные катушки DD (собрана) и коаксиальная (еще не собрана до конца), которые мне дал мой друг. На них я провожу эксперименты в воздухе, катушки размещаю на картонной коробке, подключаю катушки по очереди для сравнения. Все катушки резонансные (10,2...10,6 кГц).
Приемная катушка подключена к микрофонному входу (левый канал). К выходу на наушники подключена передающая катушка. В моих передающих катушках применена схема индуктивной трехточки с заземленном центром. Поломал голову как лучше ее подключить. Если бы не было экрана приемной катушки, подключенного к центральному отводу передающие катушки, то можно было бы честно не использовать центральный отвод. Апробировал два варианта: 1) корпус на "центральный" отвод, "верхний" отвод - левый канал наушников, "нижний" отвод - воздух; 2) "нижний" отвод - корпус, "верхний" отвод - левый канал, "центральный" отвод - воздух. Оба варианта в условиях моих экспериментов работали идентично (не считая разных начальных фаз и амплитуд на приеме). Можно еще подобрать трансформатор или собрать фазоинверсный каскад, чтобы питать корректно передающую катушку, но тогда теряет смысл идея использования исключительно Нетбука.
При выборе частоты дискретризации звуковой карты 96 кГц убедился, что звуковая карта формирует сигнал с частотой до 40 кГц практически без потерь с амплитудой до ~0,1 В (на высокоомной нагрузке - осциллограф С1-73, который достал из дальнего чулана). Для работы ограничился классической частотой дискретизации 44100 Гц, чтобы не перегружать процессор.
К выходу правого канала звуковой карты подключил наушники (левый и правый параллельно).
Обработку разделил на 2 задачи. Первая задача выполняется в контексте приоритетного потока реального времени и выполняет следующее функции: прием левого и правого канала (оба канала обрабатываются идентично, второй канал заложен для второй приемной катушки); синтез выходного сигнала для передающей катушки и тон-сигнализации (синусоиды), ФВЧ, синхронное детектирование, предварительный ФНЧ. Вторая задача выполняется в контексте таймера Qt4. Обмен данными между этими задачами осуществляется через средства JACK (кольцевые буфера).
При первых экспериментах ограничился построением векторных диаграмм принимаемого сигнала при подносе к датчику различных металлов (монеты, гайки, золотые/серебряные украшения). Первое, на что обратил внимание, что мои катушки сбалансированы очень плохо и я имею сильный "пролаз", причем изменения амплитуды и фазы сигнала при подносе предметов очень мало по сравнению с этим "пролазом". Кстати начальная фаза "пролаза" зависит от рабочей частоты. До дискриминации я выполнил компенсацию (вычитание) и корректировку фазы и изобразил относительные изменения амплитуды и фазы. Тут я и увидел отличие цветных металлов от черных!
Провел я эксперимент с внешней USB звуковой картой с чипом C-media. Оказалось, что фаза принимаемого сигнала "плывет" в соответствии с некоторым случайным узкополосным процессом и придумывать алгоритмы работы в таких сложных условиях я пока не стал (хотя можно подумать). Видимо, что всему виной шина USB, которая распространяет разные пакеты с разной задержкой.
Сейчас, глядя на схемы обычных аналоговых IB детекторов и в соответствии со своей фантазией я реализовал "статический" и "динамический" режим. Реализовал следующие режимы дискриминации и тональной сигнализации:
0 - однотоновая "цветные металлы"
1 - однотоновая "черные металлы"
2 - однотоновая "все металлы"
3 - однотоновая "пустоты"
4 - двутоновая "черн/цвет металлы"
5 - полифония "все металлы" (частота тона — величина фазового сдвига)
Пока еще программа не имеет человеческого интерфейса, а все настройки я беру из INI-файла.
В динамическом режиме вырезаю полосу 0..3 Гц. Согласованную обработку (когерентное накопление) веду из соображений, что полоса сигнала от цели составляет до ~15...20 Гц.
Результаты следующие: «Пятак СССР» на воздухе 20-25 см вижу. Монета «1 коп. СССР» - до 20 см, (в зависимости от ориентации). Рубль СССР «юбилейный» - до 30 см. Груз от гантели «2,5 кг» вижу на расстоянии примерно 70 см. При большей чувствительности (при меньшем пороге) в условиях квартиры наблюдаю помехи.
По «годограмме» и в режиме «полифония» отличается золото от серебра. Медь и золото почти не различаются. Российские монеты 90-х годов определяются как то черные, то цветные (в зависимости от ориентации). Инструменты (отвертка, кусачки) определяются как черные.
Никаких сверх результатов я пока не получил, но в целом все работоспособно. Можно увеличить чувствительность, но потребуется ограничить скорость сканирования (скорость проноса целей).
Сейчас думаю о графическом интерфейсе пользователя (в настоящее время вручную корректирую INI-файл и перезапускаю программу, чтобы изменить параметры.
Имею проблемы с «китайскими» разъемами «Mini Jack», плохо контачат, «шуршат», создают помехи при вибрации. Нужно искать хорошие «позолоченные» разъемы (два «папы» и один «мама»).
Полевые испытания ЕЩЕ ПРЕДСТОЯТ!
А пока ругайте дальше.
![Smile :-)](./images/smilies/icon_smile.gif)