<--На Главную
VLF IB MD MAX2011-DFT
->
By Petrucho (C)
bypetrucho.narod.ru


MAX2011-DFT
============================================
Цифровой детектор металлов с непосредственной
Цифровой Обработкой Сигнала (ДПФ)
============================================


Часть 1. (2011 март 21)

MAX2011-DFT - цифровой детектор металлов со звуковой идентификацией металлических предметов и непосредственной Цифровой Обработкой Сигнала (ЦОС) принятого с приёмной обмотки датчика построенного на принципе баланса магнитной индукции. Для выделения (фильтрации) основной гармоники используется Дискретное Преобразование Фурье. Звуковая идентификация металлов имеет 31 тон, сигналы грунта и черных металлов озвучиваются низкими тонами, сигналы цветных металлов - высокими.

DFT это сокращение английских слов "Discrete Fourier Transform" русскоязычный аналог ДПФ сокращение от "Дискретное Преобразование Фурье".

Это всего лишь экспериментальный макет для проверки идей ЦОС. Пока проект не готов к выкладыванию публично, в программе реализовано не всё чего хотелось. С реальным датчиком пока не испытывал.

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

В софте анализ ведётся пока только по первой гармонике, если хватит ресурсов контроллера можно попробовать добавить третью гармонику, но их (ресурсов) даже для первой гармоники с трудом хватает. Опять таки под 3-ю гармонику пока не всё понятно с датчиком.

Снял видео по которому можно оценить звуковую идентификацию. На видео первая цель - феррит, две другие - железные монеты. Остальные монеты цветные (Никель, Латунь, Алюминий). Громкость звука постоянна, меняется только частота. Звук не имеет задержек т.к. в реальном времени озвучивается текущее значение ВДИ. Пока не используется второй каскад дополнительного усиления (в 16-раз), поэтому динамический диапазон маловат. И это сказывается на точности определения ВДИ на дальних дистанциях. Сигнал ФЕРРИТА (Грунта) озвучивается наравне с остальными целями, наложить маску на черные либо только на грунт не представляет большой сложности.

Тест озвучивания VDI различных металлов.



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

pcb1 LUT


Ссылки:
============================================
1. Информация о демоките LaunchPad для контроллеров MSP430 фирмы Texas Instruments.

2. Замечательнейшая книга по ЦОС раздаётся автором бесплатно качайте на здоровье.

3. Статья "IB metal detector project by Robert Hoolko" (Роберт Хулко).



Описание подробностей о том что и как было реализовано:
============================================

Качество работы МД с непосредственной ЦОС на прямую зависит от джиттера формирования импульсов накачки ТХ а также отсчётов АЦП, чисто программно без задействования аппаратной части контроллера и прерываний добиться малого джиттера не возможно.

В моем случае контроллером является MSP430G2231IN14, но в будущем возможно перейду на совместимый по лапам MSP430G2452IN20. Программа не закончена и находится в процессе развития тем не менее опишу как это работает на данный момент:

Производительность АЦП теоретически составляет 200ksps, на практике меньше. Частота ТХ порядка 8кГц. Вот и получается что больше 25-и точек на период при всём желании не выйдет. Поэтому и остановился на 16-и точках на период. Из соображений возможности последующей цифровой фильтрации частота следования результатов на выходе ДПФ должна быть порядка 200 Гц. Таким образом 8 кГц разделив на 200 Гц получается что интегрирование можно вести по 32-м периодам частоты ТХ.

Таймер считает до некого числа N записанного в Capture/Cmpare регистре CCR0 по достижении которого происходит аппаратный сброс таймера и прерывание, в прерывании находится четырёх битный счётчик. Таким образом за один период ТХ имеем 16 прерываний по таймеру. Соответственно каждые восемь отсчётов счётчика прерываний таймера происходит смена уровня сигнала ТХ. В Capture/Cmpare регистре CCR1 находится некое число находящееся между нулём и CCR0, по достижении которого происходит аппаратный запуск АЦП преобразования. По окончании преобразования происходит прерывание АЦП и результат АЦП по каждой из 16-и точек на период складывается в течение 32-х периодов. По окончании накопления данных по 32-м периодам ТХ производится расчёт действительной и мнимой части Дискретного Преобразования Фурье перемножением накопленной суммы по каждой точке фазы периода с базовыми функциями синуса и косинуса. После чего имеем результат аналогичный тому что на выходе аналоговых синхронных детекторов.

Аналоговый СД (ключ) можно представить как перемножитель на +1 и -1 что эквивалентно двухполупериодному СД. В качестве базовой функции подобного фильтра выступает "меандр", это значит что этот фильтр пропускает не только базовую (первую) гармонику но и весь спектр нечётных гармоник содержащихся в прямоугольном сигнале. А если перемножение вести на +1 и 0 (эквивалентно однополупериодному СД) то и весь спектр чётных гармоник включая ПОСТОЯННУЮ СОСТАВЛЯЮЩУЮ, а так же НИЗКОЧАСТОТНЫЕ ШУМЫ ВХОДНОГО ОУ, сетевую частоту и всё остальное что ниже частоты базовых функций (либо частоты переключения аналоговго СД).

Для достижения наилучшего соотношения сигнал/шум базовые функции должны как можно более близко соответствовать синусоидальной форме. Поэтому по идее ДПФ должно улучшить соотношение сигнал/шум что должно сказаться на более качественном определении ВДИ цели.

Остановимся подробнее на реализации ДПФ. Аппроксимация дискретных значений базовых функций делается по методу средних прямоугольников по 16-и точкам на период TX (2*PI). В данный момент имеем накопление по 32-м периодам ТХ, на каждый период по 16-сэмплов с равным шагом по фазе. Благодаря корреляционному ДПФ имеем оверсэмплинг штатного 10-bit АЦП по 512 отсчётам (32*16) за счёт оверсэмплинга имеем дополнительные 3.5 разряда к разрешению АЦП. После накопления данных по 16-и точкам фазы, перемножаем накопленные значения с базовыми функциями. И в конце суммируем результаты произведений. Таким образом имеем на выходе ДПФ Im-мнимую и Re-действительную части (эквивалентны каналам X и Y аналоговых МД). Используя принцип симметрии базовых функций накопление можно вести только по четверти отсчётов на период (с учётом знака естественно) но это годится лишь в том случае если измерение ведём по одной единственной гармонике - по первой. Но мы ведь перед собой ставим высокие цели :) т.к. на дальнее будущее есть задумка поэкспериментировать с третьей гармоникой то переписывать код по новой не совсем то чего бы хотелось делать в будущем. Опять таки будет ли выигрыш в скорости вычисления если "инты" переводить на "лонги" не известно, т.к. заметил приличную зависимость времени выполнения операций перемножения от величины умножаемых чисел.

Ожидал что частота на выходе ДПФ получится в районе 200 Герц, но как оказалось больше 60 Герц практически пока не получается. Ситуация усугубляется тем что время вычисления зависит от величины действительной и мнимой части. Т.е. если числа маленькие вычисление идёт этак раза в два три быстрее чем при максимальных значениях. Но в принципе этого достаточно. Ресурсов контроллера таких как - память программ, оперативка, отсутствие аппаратного умножения, отсутствие возможности использования арифметики с плавающей точкой явно не хватает. Но в принципе то что удалось выжать из самого бедного из доступных контроллеров радует.

Первопроходец в данном направлении конечно Робебрт Хулко с десяток лет назад на AVR с трудом выжал 4-е сэмпла на период, и о вычислении ДПФ даже не мечтал. Поэтому повторюсь ещё раз можно сколь угодно долго безосновательно хаять данный тип контроллера, но факт остаётся фактом - контроллер великолепный!!!

Далее вычисляем амплитуду вектора сигнала (Ma) как корень квадратный из суммы квадратов действительной и мнимой части. Затем находим угол вектора как арктангенс отношения действительной части к мнимой (atan2(Im,Re)) что и есть тот самый ВДИ который нас интересует.

Сравнивая Ma с порогом принимаем решение есть цель или нет, и если Ma выше порога озвучиваем ВДИ поделив интервал 2*PI на 31 равный участок, каждому участку соответствует свой тон. Отрицательным ВДИ — низкий тон, положительным — высокий. Как только Ma становится меньше порога звук отключается. В фоне пока лишь грубо реализована автоматическая установка порога, и балансировка в ноль Re, Im частей ДПФ. Баланс на феррит пока задается константой в программе. Всем этим балансировкам планирую уделить больше времени. Пока это лишь предварительные результаты.

По поводу разрядности АЦП. Нас интересует не столько разрядность АЦП сколько расширение динамического диапазона. Поэтому аппаратно сигнал снимаемый с РХ, усиливается и подаётся на один из входов АЦП, этот же сигнал усиливается в 16 раз (фазовая коррекция сделана аппаратно дабы упростить программную часть) и подаётся на другой вход АЦП. Таким образом имеем уже не 10-бит а все 14 бит. Да разрешение в 14 бит справедливо только для малых сигналов. Но для больших сигналов для уверенного определения ВДИ цели больше чем есть практически и не нужно, т.к. сигнал имеет приличную амплитуду. Но это ещё не всё. Т.к. накопление идёт по 32-м периодам, а сэмплирование по 16-и точкам, то оверсэмплинг идет по 512-и сэмплам (32*16) что дёет ещё примерно 3.5 бита разрешения. А т.к. арифметика 16-и битная то 14-бит аппаратно + 3.5 бита за счёт оверсэмплинга в принципе не так и плохо в итоге получается. Т.к. вместо базовой функции +1 -1 используемой в аналоговой схемотехнике в данном случае используется синус/косинус то в итоге прибор имеет преимущество в плане преобразования из ВЧ в НЧ перед аналоговой схемотехникой а так же перед цифровой реализацией без использования ДПФ.

Не питаю иллюзий что получится нечто сверх естественное, да и задачу сделать рабочий прибор не ставил. Задача была опробовать идею применения ДПФ применительно к МД. И она как мне кажется удалась на все 100.



Несколько фотографий.

pcb1 LUT

pcb1 LUT


============================================

Hosted by uCoz