Jump to content

    
Sign in to follow this  
DisplayName

Замер амплитуды у синуса

Recommended Posts

Добрый день. Помогите, пожалуйста, советом.

Есть сигнал в виде синусоиды. Частота известна (её, в принципе, можно иметь любую в диапазоне 50-500 кГц).

Амплитуда сигнала может быть в диапазоне от 0 до 3.3 В.

Исправление: Сигнал центрирован на 1.6 В (DC составляющая сигнала). Амплитуда может быть в диапазоне от 0 до 1.6 В.

Есть микроконтроллер и 12 бит АЦП.

Надо найти амплитуду для последующей обработки на микроконтроллере.

Есть некоторые ограничения:

1. операция получения амплитуды должна уложится в 100 мкс (в принципе, можно подвинуться до 200 мкс, 300, 400 и т.д. но 1 мс уже нежелательный потолок). Если меньше, то вообще хорошо.

2. скорость АЦП максимум 1 Msps (в принципе, можно чуть-чуть увеличить за счёт поиска либо внешнего АЦП, либо микроконтроллера с более высокой скоростью АЦП)

3. значение должно быть как минимум 12-ти битным, если можно больше, то вообще хорошо.

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

5. надо учесть, что бюджет этого должен быть в районе 500 рублей при неоптовой закупке. Ну +-. 500 рублей - это лишь рамка, чтобы сразу отбросить вариант приобретения какого-нибудь АЦП за тысячу рублей. Но если есть веская причина, то бюджет можно и расширить.

 

Я сейчас рассматриваю 2 варианта.

Первый - это пустить сигнал через аналоговый пиковый детектор, а дальше на АЦП + усреднить, если надо.

Второй - это просто пустить сигнал на АЦП. Здесь пишут https://stackoverflow.com/a/24161088, что достаточно иметь 2-3 сэмпла, чтобы получить параметры сигнала, в том числе и амплитуду. Фаза сигнала неизвестна, но при желании её можно синхронизировать с АЦП и в итоге сделать её известной. По итогу из той формулы можно знать всё, кроме амплитуды и получится простое вычисление y / sin. Или здесь не всё так просто?

 

В принципе, первый вариант достаточно простой, если пиковый детектор состоит из двух операционных усилителей, а между ними диод и RC. Но в виду того, что на цифровом уровне можно делать продвинутые вычисления и не надо заморачиваться с подбором компонент для пикового детектора, то есть подозрение, что второй вариант может дать по итогу лучший результат.

 

Что лучше всего ляжет под выданные ограничения? Как лучше получить амплитуду сигнала? Есть ли фатальные недостатки второго способа из-за возможной неидеальности чистоты сигнала по частоте и амплитуде?

Стоит ли рассмотреть вариант первого способа, но взять какой-нибудь сигма-дельта АЦП, чтобы получить надёжное как минимум 12-ти битное значение с первого раза?

Edited by DisplayName
Плохо написано условие про амплитуду сигнала.

Share this post


Link to post
Share on other sites
Quote

но при желании её можно синхронизировать с АЦП и в итоге сделать её известной

А отсюда же можно сделать так, чтобы АЦП снимал показания только с пиков синуса. И тогда никакие формулы не нужны будут, а просто голое считанное значение из АЦП и будет ответом... Но здесь же должен быть в чём-то подвох? Например, скорости АЦП может не хватить, если сигнал будет слишком быстрый. Но в виду того, что частота сигнала может быть хоть 50 кГц, а скорость АЦП 1 Msps, то, вроде, такой способ тоже должен работать.

 

36 minutes ago, DisplayName said:

если пиковый детектор состоит из двух операционных усилителей, а между ними диод и RC

Ещё какое соображение. Вот у АЦП внутри есть сэмплирующий конденсатор. Если на вход АЦП подключить диод, то получится пиковый детектор. Диод не будет давать разряжаться встроенному конденсатору и в итоге в нём окажется только максимальное значение. Надо только запрограммироват АЦП на достаточное время сэмплирования. При таком подходе есть что-то плохое?

Edited by DisplayName

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
38 минут назад, DisplayName сказал:

Ещё какое соображение. Вот у АЦП внутри есть сэмплирующий конденсатор. Если на вход АЦП подключить диод, то получится пиковый детектор. Диод не будет давать разряжаться встроенному конденсатору и в итоге в нём окажется только максимальное значение. Надо только запрограммироват АЦП на достаточное время сэмплирования. При таком подходе есть что-то плохое?

Еще надо после каждого измерения разряжать конденсатор. Подключить другой выход МК, или тот же перевести в режим выхода, и выдать низкий уровень.

Share this post


Link to post
Share on other sites
43 minutes ago, Plain said:

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

Ох, я неправильно описал сигнал. У него DC 1.6 В, а амплитуда сигнала от 0 до 1.6 В. В таком же случае не надо иметь двуполярное питание?

Quote

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

А что за калибратор и для чего он? Что является эталоном?

По эталонному синус сигналу определяется "поведение" пикового детектора, а дальше при измерении уже настоящего сигнала производится его замер с поправками, полученными от эталонного сигнала?

36 minutes ago, ViKo said:

Еще надо после каждого измерения разряжать конденсатор. Подключить другой выход МК, или тот же перевести в режим выхода, и выдать низкий уровень.

Это да, верно подмечено.

Share this post


Link to post
Share on other sites
1 час назад, DisplayName сказал:

В принципе, первый вариант достаточно простой, если пиковый детектор состоит из двух операционных усилителей, а между ними диод и RC. Но в виду того, что на цифровом уровне можно делать продвинутые вычисления и не надо заморачиваться с подбором компонент для пикового детектора, то есть подозрение, что второй вариант может дать по итогу лучший результат.

Семейство XMC4xxx (например XMC4500) содержит АЦП (VADC) умеющий аппаратно находить экстремумы (параграф "Finding Extrema (Peak Detection)" юзер мануала). Без вычислительных затрат со стороны CPU. АЦП - 12битный, с макс. частотой сэмплирования в несколько MS/s.

Можно ещё повысить разрядность АЦП аппаратным же суммированием нескольких отсчётов.

Share this post


Link to post
Share on other sites

Нет, так не пойдет... Если сигнал синус, то амплитуда его может быть измерена всего один лишь только раз...

А если нечто меняется, то это не синус и нужно точно знать, когда и что нужно измерять.

Share this post


Link to post
Share on other sites
10 minutes ago, Tanya said:

Нет, так не пойдет... Если сигнал синус, то амплитуда его может быть измерена всего один лишь только раз...

Если я правильно вас понял, то я представил лишь частную проблему, когда точно известно, что амплитуда одна и её надо измерить.

Если приоткрыть завесу, то там есть ещё мультиплексоры и к ним подключены антенны. Есть источник синуса, который наводит сигнал на антенны. Антенны переключаются и получается разная амплитуда. В каждое такое переключение надо считать амплитуду.

1 hour ago, jcxz said:

Семейство XMC4xxx (например XMC4500) содержит АЦП (VADC) умеющий аппаратно находить экстремумы (параграф "Finding Extrema (Peak Detection)" юзер мануала). Без вычислительных затрат со стороны CPU. АЦП - 12битный, с макс. частотой сэмплирования в несколько MS/s.

Получается, там просто оно само делает считывания и запоминает максимальное или минимальное значение. Такой подход мне не очень нравится в виду того, что это на удачу - если АЦП поймает пик, тогда он его запомнит. Да, большая скорость АЦП увеличивает шансы его поймать. Но тут вопрос в повторяемости результатов. Может, с этим всё ок и я сильно заморачиваюсь. Раз эта функция есть, значит она работает. Если с этим всё ок, то остаётся вопрос его доступности для покупки. Быстрый гуглёж не дал положительных результатов.

Share this post


Link to post
Share on other sites
20 минут назад, DisplayName сказал:

Быстрый гуглёж не дал положительных результатов.

Наверное, слишком быстрый...

https://www.digikey.co.il/product-detail/en/infineon-technologies/KITXMC45RELAXLITEV1TOBO1/KITXMC45RELAXLITEV1TOBO1-ND/4693821?cur=USD&lang=en

 

Share this post


Link to post
Share on other sites
1 minute ago, Herz said:

Да, возможно. Но мне надо в виде микросхемы. А если заказывать в digikey, то как быстро оттуда присылают в ту же, например, Москву?

Share this post


Link to post
Share on other sites
1 час назад, DisplayName сказал:

Получается, там просто оно само делает считывания и запоминает максимальное или минимальное значение. Такой подход мне не очень нравится в виду того, что это на удачу - если АЦП поймает пик, тогда он его запомнит. Да, большая скорость АЦП увеличивает шансы его поймать. Но тут вопрос в повторяемости результатов.

С АЦП только так и можно сделать. А как ещё? Пока значение не преобразуете при помощи АЦП, Вы не сможете его обработать (найти экстремумы). И точность обнаружения экстремумов будет зависеть от частоты квантования АЦП - чем выше, тем точнее. Вы вроде писали про 1MS/s? И считали что хватит. А у XMC4xxx частота преобразования в ~4 раза выше, и почему-то говорите что её не хватит.

Да и опять-же противоречите своим же изначальным условиям:

4 часа назад, DisplayName сказал:

4. точность амплитуды в абсолютных величинах не так важна,

Так важна точность или нет?  :wacko2:

Если точности получаемой от 4MS/s АЦП мало, можно найти более шустрые АЦП. Тот же LPC4370 с 80 MS/s. Только там экстремумы придётся искать программо.

Share this post


Link to post
Share on other sites
3 минуты назад, jcxz сказал:

С АЦП только так и можно сделать. А как ещё?

Топикстартер написал, как. 

Share this post


Link to post
Share on other sites
12 минут назад, ViKo сказал:

Топикстартер написал, как. 

Где? Не вижу.

Вы про внешний пиковый детектор и запуск преобразования от него? если про него, то и его можно использовать: его сигнал подавать на вход запуска преобразования встроенного АЦП XMC4500.

Share this post


Link to post
Share on other sites
3 часа назад, DisplayName сказал:

DC 1.6 В, а амплитуда сигнала от 0 до 1.6 В. В таком же случае не надо иметь двуполярное питание?

Если сопротивление источника сигнала достаточно небольшое, чтобы тягать ёмкость детектора, то можно обойтись имеющимся однополярным.

 

3 часа назад, DisplayName сказал:

А что за калибратор и для чего он? Что является эталоном?

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

 

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

Edited by Plain

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this