Jump to content

    

atan2 в аналоге

Добрый день,

 

всем известна функция вычисления комплексного аргумента, если x+iy - это наше комплексное число, то arg(x,y) = atan2(y,x). Пусть у меня имеются аналоговые сигналы x,y а я хочу получить этот аргумент (то есть угол) тоже в аналоге, например, -Пи - это 0, а +Пи - это VCC.

 

Скажите, пожалуйста, как такая микросхема называется, ведь должна же она быть где-то востребована, не так ли?

 

PS: как сделать через два ADC и один DAC ноги контроллера - я знаю, но не хотел бы, хочу в аналоге.

 

Спасибо!

 

ИИВ

Share this post


Link to post
Share on other sites

PlotFourQuadrantInverseTangentExample_01

 

с какой точностью и насколько быстро?

и вот этот вот переход через У=0 при отрицательных Х как "в аналоге" выглядеть будет?

Share this post


Link to post
Share on other sites

Спасибо! Переход - да, именно так, как есть, скачком - переходом из -Пи в +Пи, хотя сами входные значения будут изменяться без скачка. На сколько быстро - где-то 50КГц плюс-минус лапоть, то есть может и 10КГц хватит, а может и 200КГц надо. С точностью - тоже нет четкого понимания, 1% по углу в большинстве случаев - за глаза, но аппетит может прийти во время еды и захочется чуток побольше точности.

 

То есть задавая вопрос я знаю решение через цифру, и, если не найду аналоговое решение, сделаю именно через цифру, но если есть понимание как такое называется, и оно более-менее доступно в мойзерах и фарнеллах, и легко разводится, но с радостью бы попользовал, чтоб МК не ставить.

Share this post


Link to post
Share on other sites

если 200кГц и 1% нужен в области где нет разрыва, это означает что около скачка полоса для того же 1% нужна будет в 100 раз больше.

https://www.analog.com/en/parametricsearch/11106

для 1% должно хватить двух умножителей atan = x * (a + b*x*x), или даже умножителя и выпрямителя, если сделать atan = x*(a+b*|x|)

ну или ad538, только он NRND да и стоит негуманно.

Share this post


Link to post
Share on other sites

Спасибо большое, _pv!

 

Я-то думал, что есть что-то проще и не дорого, но похоже, что кроме как какого-то простого кортекса с DACом никакой более альтернативы, к сожалению, нет.

Share this post


Link to post
Share on other sites

Цапы встроенные не особо быстрые как правило, но для десятков кГц может и хватит, а вот на ad734, 10МГц и 0.1% получить можно пожалуй, но недешево, это да.

Share this post


Link to post
Share on other sites

Генератор -> Квадратурный модулятор (смеситель) -> ограничитель -> фазовый детектор

Share this post


Link to post
Share on other sites
10 hours ago, FatRobot said:

Генератор -> Квадратурный модулятор (смеситель) -> ограничитель -> фазовый детектор 

Простите, пожалуйста, но я не смог понять...

 

У меня-то частоты может и не быть, просто попало на синус значение 10, а на косинус 20, что это - около 26 градусов, atan2(10,20). Если бы несущая частота была бы, то да, сделал бы именно так, как Вы сказали!

Share this post


Link to post
Share on other sites

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

по сути вам нужно превратить аргумент во что-то, что легко измеряется. в данном случае это будет временной интервал или скважность

Share this post


Link to post
Share on other sites
16 hours ago, FatRobot said:

Генератор -> Квадратурный модулятор (смеситель) -> ограничитель -> фазовый детектор

несущую частоту, наверное, для 200кГц и 1% придётся в большие мегагерцы задрать, да и готовых модуляторов/детекторов для не сильно большой частоты наверное сложнее найти чем для совсем RF.

а например max1472(генератор) + BGX7101/LTC5599(модулятор) и какой-нибудь готовый детектор вроде MCK12140 в результате не особо-то и проще/дешевле аналоговой арифметики получится.

 

Share this post


Link to post
Share on other sites
4 hours ago, FatRobot said:

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

по сути вам нужно превратить аргумент во что-то, что легко измеряется. в данном случае это будет временной интервал или скважность

так нету генератора-то, тю-тю! Просто два сигнала, которые могут, например, соответствовать одному и тому же углу целую минуту, но по амплитуде их может очень зверски колбасить, возможно даже 200КГц и выше. Но угол сам тоже может меняться, примерно до 200КГц, то есть изменение угла может быть от 0 градусов в минуту, до 40 градусов в микросекунду. И как тут через фазовый детектор задачу решать? Я может конечно не понимаю что-то, но вроде для такой задачи - Ваш вариант не пойдет, нет?

Share this post


Link to post
Share on other sites

так поставьте генератор, если изначально его 'нету'.

насчет больших мегагерцев я тоже не вполне понимаю. несущая 200 кгц плюс 200 кгц х 100 для счета

Share this post


Link to post
Share on other sites

если на квадратурный модулятор подать постоянные сигналы, они просто сдвинут фазу несущей как раз на тот угол, который Вы через арктангенс и хотите получить.

ну а фазовый детектор опёртый на исходную несущую этот угол и покажет

 

Share this post


Link to post
Share on other sites
18 часов назад, iiv сказал:

И как тут через фазовый детектор задачу решать?

Вы бы написали в ТТ какие квадранты нужны вообще, в аналоге то. Емнип можно получить или только 2 (4-й и 1-й)   на простом смесителе (исключающем ИЛИ, перемножителе)  или сразу 8 с неопределенностью по виткам фазы, как фишка ляжет.

также важен динамический диапазон сигналов X Y, если широкий (более 20дБ) - то с аналогом будут проблемы в точности результата из-за усилителя ограничителя.

Edited by µ₀N²

Share this post


Link to post
Share on other sites

Про фазовый детектор - понял, спасибо!!! Да, действительно, если еще генератор добавить и квадратурным модулятором смешивать, то будет фаза. Тогда, похоже на компонентах будет конский ценник, так как если мне надо 200КГц и 1градус точности, то это около 40МГц у генератора и работа на этой частоте.

 

Похоже, что на МК сделать эту задачу будет и проще, и дешевле.

 

1 hour ago, µ₀N² said:

Вы бы написали в ТТ какие квадранты нужны вообще

Спасибо! Если я правильно понял вопрос, Вы имели ввиду именно о диапазонах получаемого угла. Нужен именно полный диапазон, от -180 до +180 градусов. Причем, при cos(x)=-1, sin(x)=0 меня устроит неопределенность, то есть или +VCC или GND.

 

По задаче у меня эта пара формируется в одной части устройства, а потом длиннючим проводом на несколько метров мне надо передать угол на другую плату, и принять микроконтроллером. Туда приходит с десяток таких углов, и в среднем скорость изменения угла обычно не супер большая, так, что я ожидал, что эту-то величину можно протащить аналогом и на приемнике оцифровать каким-то быстрым встроенным в кортекс оцифровщиком.

Так как конструкционно у меня на соединение имеется только один провод, то протаскивать этот угол в цифре было как-то сложновато, поэтому-то я и хотел аналоговый сигнал.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this