Схемы металлоискателей MD4U
http://md4u.ru/

Немного о том, как это делается...
http://md4u.ru/viewtopic.php?f=27&t=2272
Страница 1 из 2

Автор:  Alteh [ Вт: 09 сен 2008 11:58 ]
Заголовок сообщения:  Немного о том, как это делается...

Для тех, кто сам хочет делаеть МД с ЦОС, коротенько, как это делается у меня :wink:
Входной сигнал с датчика представляет из себя смесь из остаточного сигнала А0(разбаланс датчика), сигнала помехи, сигнала грунта Аg и собственно сигнала мишени Аm. Ввиду невысоких возможностей МК и наличия некоторых опытных данных, сигналом помехи вынужденно пренебрегаем. Возможно, кто-то скажет, что это опрометчиво, но увы… В результате, полученное можно представить в следующем виде:
А0*Sinα+Ag*Sinβ+Am*Sinδ=Y0
А0*Cosα+Ag*Cosβ+Am*Cosδ=X0
X0=X-Xf
Y0=Y-Yf
Где X иY текущие значения на выходе АЦП (здесь и далее имеются ввиду значения после первичного ЦФ). Xf и Yf значения на выходе второго фильтра. Т.е. с учётом его тау усреднённые значения X и Y равны 0. Ввиду того, что А0 имеет очень низкую скорость изменения, считаем, что они равны
Yf= А0*Sinα
Xf= А0*Cosα
Тогда:
X= Ag*Cosβ+Am*Cosδ или Ag*Cosβ = X - Am*Cosδ
Y= Ag*Sinβ+Am*Sinδ или Ag*Sinβ = Y - Am*Sinδ
Учитывая, что после баланса грунта мы имеем коэффициент:
К=( Ag*Sinβ)/( Ag*Cosβ)=tgβ
и
К*Х - К*Аm* Cosδ=Y - Am*Sinδ
K*X – Y=Am(K* Cosδ - Sinδ)=m
В отсутствии мишени Am=0, т.е. мы имеем только составляющую грунта, и
K*X-Y=m=0
Как только составляющая мишени m превысит значение выставленного порога Р, считаем, что мишень обнаружена.
При этом после каждого такого вычисления, если m<Р, мы сохраняем значения X и Y в буферных ячейках XB и YB.
Как только выполняется условие m>P, опорными величинами для вычисления истинных значений X и Y мишени.
Xm=Аm* Cosδ=X-XB
Ym=Am*Sinδ=Y-YB
Правда, нам приходится сделать одно немаловажное допущение, что параметры грунта в пределах мишени ПОСТОЯННЫ. Увы, идеальных систем не существует…
С уважением.
Александр.

Автор:  OSTIN [ Вт: 09 сен 2008 14:16 ]
Заголовок сообщения: 

Спасибо! очень интересно и познавательно! :)

Автор:  shemmer [ Вт: 09 сен 2008 17:48 ]
Заголовок сообщения: 

Вы говорите "ввиду невысоких возможностей мк"-интересно а что именно не удается реализовать на данном мк,или вообще на 8-ми разрядном? Какие параметры возможно было бы улучшить например применив 16-ти разрядные типа dspic30 или msp430?

Автор:  Alteh [ Ср: 10 сен 2008 11:24 ]
Заголовок сообщения: 

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

Автор:  shemmer [ Ср: 10 сен 2008 11:57 ]
Заголовок сообщения: 

Щас рассуждаю вслух- ведь перекинуть на dspic30 с pic18 не так сложно. Нужно изменять только регистры и порты,правильно? И исходник по моему вы выкладывали..

Автор:  Alteh [ Ср: 17 сен 2008 15:55 ]
Заголовок сообщения: 

Схема этого нового аппарата будет приблизительно такой:
Изображение
http://alteh.narod.ru/Gif/DMD_auto.GIF
ПО в разработке. Есть несколько проблем, но вроде решаются :wink:
Посмотрим, что получится.
С уважением.
Александр.

Автор:  Alteh [ Пн: 29 сен 2008 16:42 ]
Заголовок сообщения: 

Продолжение :wink:
Теперь, попробуем определиться с вариантом произвольной начальной фазы. Поясню, имеется ввиду, что мы не знаем какой фазовый сдвиг даёт наша аппаратная часть. Но, если при настройке к датчику МД поднести феррит, то полученный сигнал можно использовать как эталон (естественно, при отсутствии рядом постороннего металла). Тогда:
А0*Sinα+Af*Sinφ=Yf
А0*Cosα+Af*Cosφ=Xf
Учитывая сказанное в самом начале, имеем:
Af*Sinφ=Yf
Af*Cosφ=Xf
или
tgφ=Yf/Xf=F
Теперь вычисляем arctg и узнаём истинное значение φ.
Запомним это число.
Теперь надо вычислить реальное соотношение X и Y для мишени. Для грунта это будет выглядеть так:
Ag*Sin(β+φ)=Yg
Ag*Cos(β+φ)=Xg
Но вычислять истинную фазу грунта нет никакой необходимости. Вполне достаточно знать, соотношение K=Yg/Xg. Далее используем это число так, как сказано выше. Вместо нужного нам соотношения
m=Ym/Xm=Sin δ/Cos δ
мы имеем некое
D=Am*Sin(φ +δ)/Аm* Cos(φ +δ),
Вычисляем значение arctg. Теперь, зная (φ +δ) и φ, вычислить δ большого труда не составит ;) Значения от 0 до 90˚ соответствуют чёрным металлам, от 90˚ до 180˚ - цветным.
Далее выполняются следующие действия:
вычисляем (Ag*Sin(β+φ))^2+(Ag*Cos(β+φ))^2=Ag^2
и берём от полученного числа логарифм по основанию 2.
Вычисляем Sin δ и Cos δ.
Y= (Sin δ)*log(Ag^2)
X= (Cos δ)*log(Ag^2)
Эти величины откладываются на годографе.
Все тригонометрические функции вычисляются табличным способом, что позволяет максимально увеличить скорость операции и занимает совсем немного места в памяти программ.
С уважением.
Александр.

Автор:  Andy_F [ Пн: 29 сен 2008 22:24 ]
Заголовок сообщения: 

На Си будешь писать ?

Автор:  kos [ Вт: 30 сен 2008 4:43 ]
Заголовок сообщения: 

хотелось бы отметить, что лучше отказаться от запоминания X и Y в момент появления цели. Хоть скорость изменения амплитуды грунта не велика, но соизмерима с амплитудой сигнала от цели.
Я по крайней мере попробовал и отбросил этот вариант.

Автор:  Alteh [ Вт: 30 сен 2008 10:11 ]
Заголовок сообщения: 

Andy_F писал(а):
На Си будешь писать ?

Уже практически написал на асме :wink: На С пока не рискую проекты такого объма делать. Но тихонько осваиваю :D

Автор:  Alteh [ Вт: 30 сен 2008 10:16 ]
Заголовок сообщения: 

kos писал(а):
хотелось бы отметить, что лучше отказаться от запоминания X и Y в момент появления цели. Хоть скорость изменения амплитуды грунта не велика, но соизмерима с амплитудой сигнала от цели.
Я по крайней мере попробовал и отбросил этот вариант.

Честно говоря, не понял о каком моменте идёт речь :(

Автор:  kos [ Вт: 30 сен 2008 10:21 ]
Заголовок сообщения: 

Цитата:
Как только составляющая мишени m превысит значение выставленного порога Р, считаем, что мишень обнаружена.
При этом после каждого такого вычисления, если m<Р, мы сохраняем значения X и Y в буферных ячейках XB и YB.
Как только выполняется условие m>P, опорными величинами для вычисления истинных значений X и Y мишени.

вот тута

Автор:  Andy_F [ Вт: 30 сен 2008 10:36 ]
Заголовок сообщения: 

Alteh писал(а):
Andy_F писал(а):
На Си будешь писать ?

Уже практически написал на асме :wink: На С пока не рискую проекты такого объма делать. Но тихонько осваиваю :D

Жаль... Хотел подкинуть пару фрагментов.

Кстати, log(A) / log(B) != log(A / B) . Логарифмировать показания годографа - абсолютно правильно, но логарифмировать координаты по отдельности нельзя. Надо перейти от прямоугольных координат к полярным (вычислить длину вектора и угол его наклона), затем длину прологарифмировать, и перейти "обратно" - в прямоугольные координаты экрана.

P.S. Виноват, пригляделся - всё так и сделано. :)

Автор:  Alteh [ Вт: 30 сен 2008 12:22 ]
Заголовок сообщения: 

kos писал(а):
Цитата:
Как только составляющая мишени m превысит значение выставленного порога Р, считаем, что мишень обнаружена.
При этом после каждого такого вычисления, если m<Р, мы сохраняем значения X и Y в буферных ячейках XB и YB.
Как только выполняется условие m>P, опорными величинами для вычисления истинных значений X и Y мишени.

вот тута

Ну, если ты можешь предложить другой вариант решения, буду только рад :wink: А, кстати, чем тебе этот вариант не нравится?

Автор:  kos [ Вт: 30 сен 2008 15:53 ]
Заголовок сообщения: 

обратимся к любой аналоговой схеме. фильтр после СД работает всегда, никакое запоминание не делается.

Автор:  Alteh [ Вт: 30 сен 2008 17:33 ]
Заголовок сообщения: 

Пардон! А при чем тут ФНЧ после СД?! Если ты посмотришь первое сообщение, то прочтёшь следующее:
"X0=X-Xf
Y0=Y-Yf
Где X иY текущие значения на выходе АЦП (здесь и далее имеются ввиду значения после первичного ЦФ). Xf и Yf значения на выходе второго фильтра."
Т.е. этот процесс непрерывен.
Kos, ты уж прочти повнимательнее весь алгоритм :wink:
P.S. Я, кстати, тоже пробывал, и вроде как всё получилось...

Автор:  Ciklon [ Вт: 30 сен 2008 17:39 ]
Заголовок сообщения: 

А что раскачка меандром? Не мешает? Как с этими проблемами? Мне чтото разонравилось.

Автор:  Alteh [ Ср: 01 окт 2008 9:17 ]
Заголовок сообщения: 

Меандр? Мешает конечно :( Но я и не скрываю, что на первом месте этой конструкции (изначально) стояла простота схемы. Формировать Sin програмно не позволяют возможности МК. Возможно, перейду на треугольные.

Автор:  kos [ Ср: 01 окт 2008 11:21 ]
Заголовок сообщения: 

вчитался еще раз. в предыдущем письме был всетаки прав.
запоминаются XB и YB - значения АЦП.
за время прохождения над целью грунт меняется, это искажает ВДИ.

почему бы не брать Х0 и Y0 для расчета ВДИ ?

Автор:  Ciklon [ Ср: 01 окт 2008 11:44 ]
Заголовок сообщения: 

Alteh писал(а):
Меандр? Формировать Sin програмно не Возможно, перейду на треугольные.


Так вовсе не нужен синус. В идеале нужен именно треугольник. Как линейная функция. Но! Треугольника не получить, всеравно будет синус. При таком питании советую обратить внимание на вых. каскад Троя. Вполне прилично при 6В питания. Могу добавить, что "лишний спектр" который образуется в результате ТХ меандром вызивает различные отклики не хорошие, на артефакты ( руки и т.п.) Создается впечатление плохого экрана, кабеля. Нужна тщательная фильтрация как ТХ так и RX сигналов.

Автор:  Alteh [ Ср: 01 окт 2008 13:18 ]
Заголовок сообщения: 

Ciklon писал(а):
Но! Треугольника не получить, всеравно будет синус.

Это если резонанс делать. Я имел ввиду идею заложенную в Кощея.
Цитата:
При таком питании советую обратить внимание на вых. каскад Троя. Вполне прилично при 6В питания.

А что это за каскад?
Цитата:
Могу добавить, что "лишний спектр" который образуется в результате ТХ меандром вызивает различные отклики не хорошие, на артефакты ( руки и т.п.) Создается впечатление плохого экрана, кабеля. Нужна тщательная фильтрация как ТХ так и RX сигналов.

А вот этого не замечал :?

Автор:  Alteh [ Ср: 01 окт 2008 14:26 ]
Заголовок сообщения: 

kos писал(а):
вчитался еще раз. в предыдущем письме был всетаки прав.
запоминаются XB и YB - значения АЦП.
за время прохождения над целью грунт меняется, это искажает ВДИ.

почему бы не брать Х0 и Y0 для расчета ВДИ ?

И VDI чего мы в этом случае получим?! :shock: Ведь это координаты суммарного вектора, от грунта и мишени.

Автор:  kos [ Чт: 02 окт 2008 15:21 ]
Заголовок сообщения: 

хм. грунт как раз фильтром отсекается( не полностью конечно, но это единственный способ в данном случае).

А так (с запоминанием XB и YB) все изменения грунта откладываются на годографе и сказываются на полученном ВДИ. особенно когда сигнал от цели продолжительный.

Автор:  Alteh [ Чт: 02 окт 2008 15:27 ]
Заголовок сообщения: 

Э, нет! Фильтром он никак не может отсекается. Именно потому, что находится в той же временной области, что и мишень. На эти грабли я уже наступал :D Да за время прохождения датчика над мишенью грунт может измениться, но чем-то приходится жертвовать. Увы...

Автор:  MikeS [ Чт: 02 окт 2008 21:22 ]
Заголовок сообщения: 

Alteh-у!
Высказать свое мнение лучше, где люди понимают суть вопроса.
Вычисление отдельно координат X, Y, как (А0*Sinα+Ag*Sinβ+Am*Sinδ=Y0
А0*Cosα+Ag*Cosβ+Am*Cosδ=X0) – не совсем правомерно.
Угол между каналами равен = 90 гр. (берем его за основу). Если φ=0 (феррит), то мы имеем прямоугольную систему координат. Все рассматриваем на уровне СД-ов (без фильтров треша и.т д). Сигнал на входе обоих каналов один и тот же, только в СД-ах берется из них определенный «кусок» - синус и косинус (тактированием). Смещение от φ=0 от небаланса датчика, смещает φ на определенный угол, который сместит (не вектор) прямоугольную систему координат на определенный угол. Теперь нужно возвратить прямоугольную систему координат на место (φ=0).
В процессорном приборе это можно сделать смещением тактирования обоих каналов одновременно (угол X и Y =90 постоянно). Проконтролировать можно наличием 0 на выходе СД в канале X (Сos). Это первоначальный этап и вносить его в дальнейшее вычисления нет смысла.

Теперь (датчик на грунте) земля, сместит фазу на определенный угол, вычисляем вектор и угол земли и запоминаем его. Возвращаем (способом, описываемым выше) к прямоугольную систему координат на место. При этом на выходе СД канала Х будет 0, а амплитуда канала Y будет отражать «уровень земли». Этот «уровень» можно привести к 0, если ввести управляемую компенсацию на входе МД (как у Костина в его Микадо).

«Ловим цель» и измеряем ее угол, отнимаем или прибавляем угол земли, и получаем итоговый угол цели. «Цель» можно измерять при наличии отклика на выходе фильтров.

Эти измерения можно назвать «стерильными», если учитывать, что фильтры сведут медленные изменения земли (1-8Гц) к минимуму и выделят сигнал «цели».

Конечно, всех интересует реальный поиск и в реальных условиях (поиск возле металлических заборов, труб и различных конструкций, и различного сочетания предметов в земле).
Например: мы имеем датчик у которого TX добротность высока, а RX добротность низка). Индуктивное влияние крупных и средних металлических конструкций в первую очередь отразится на изменении индуктивности (паразитной) катушки TX. Так как амплитуда резонанса связана c Q, то излучаемая амплитуда (при наличии данных предметов) резко упадет, не говоря о нарушении баланса датчика и других последствий. Поэтому необходима подстройка под резонанс, при этом корректировать то, что описывалось раннее.

Возможно, это - мое понимание и оно не верно.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/