|
Выделение резких изменений амплитуды |
|
|
|
Oct 28 2017, 22:10
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Здравствуйте, форумчане! Подскажите пожалуйста, как отфильтровать резкие изменения амплитуды. Частота: 100кГц Напряжение амплитуды, примерно: 2В Сложность в том, что присутствует плавное изменение амплитуды. В приложении форма сигнала и то чего я добиваюсь. Дальнейшая обработка будет в МК, нужно поймать горбушку для вызова прерывания. Побывал АМ демодулятор на диоде и ОУ, но в сигнале все равно присутствует пила и как отфильтровать, я уже всю голову сломал. Хотя бы направьте в каком направлении копать!
Сообщение отредактировал Vasily_ - Oct 30 2017, 09:30
Эскизы прикрепленных изображений
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 39)
|
Oct 29 2017, 12:14
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Цитата(Plain @ Oct 29 2017, 05:11)  Например, два чередуемых пиковых детектора и компаратор модуля разности их результатов. А можно поподробнее? Сейчас придумал использовать два детектора с разной чувствительностью. Первый - с совсем малой чувствительностью - задает опорное напряжение Второй - более чувствителен Затем сравнить их компаратором. Это позволит исключить срабатывания при плавном изменении амплитуды. Помогите схемой для развития темы
Сообщение отредактировал idle1 - Oct 29 2017, 12:17
|
|
|
|
|
Oct 29 2017, 23:10
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Цитата(Plain @ Oct 30 2017, 01:29)  Спасибо, Plain!!! Я честно не ожидал столь развернутого ответа! Завтра прогоню через симулятор и попробую собрать на макетке. Мне же удалось достичь более скромного результата Еще раз спасибо!!!!!!!
Сообщение отредактировал Herz - Oct 30 2017, 08:44
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Oct 30 2017, 09:53
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 17-07-15
Пользователь №: 87 598

|
Здравствуйте. Я так понял, что нужно найти резкое падение огибающей сигнала. Предложу свой-микроконтроллерный способ. Сигнал детектируете - на конденсатор, для сглаживания - ну в общем это входит в обычный детектор.  Далее на ногу микроконтроллера - в АЦП. Программой обрабатываете амплитуду сэмплов. Берет несколько сэмплов(массив) и смотрите как изменяется амплитуда по времени. Если амплитуда упала за короткий промежуток времени, то генерируете прерывание(искусственное, программное). Если медленно амплитуда ушла - значит задаете новое опорное напряжение - это то же своя величина, а не AREF. Какой микроконтроллер, кстати?
|
|
|
|
|
Oct 30 2017, 10:06
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Цитата(Molotov @ Oct 30 2017, 12:53)  Здравствуйте. Я так понял, что нужно найти резкое падение огибающей сигнала. Предложу свой-микроконтроллерный способ. Сигнал детектируете - на конденсатор, для сглаживания - ну в общем это входит в обычный детектор.  Далее на ногу микроконтроллера - в АЦП. Программой обрабатываете амплитуду сэмплов. Берет несколько сэмплов(массив) и смотрите как изменяется амплитуда по времени. Если амплитуда упала за короткий промежуток времени, то генерируете прерывание(искусственное, программное). Если медленно амплитуда ушла - значит задаете новое опорное напряжение - это то же своя величина, а не AREF. Какой микроконтроллер, кстати? Я пробовал так, но на МК потребляется слишком много ресурсов для этого, т.к. небольшой дрейф амплитуды присутствует всегда, и таких цепей 16шт. Контроллер ATmega168. К тому же мне нужно очень точно определить время появление данного провала, а при программном прерывание этого сделать невозможно.
Сообщение отредактировал idle1 - Oct 30 2017, 10:06
|
|
|
|
|
Oct 30 2017, 13:54
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 17-07-15
Пользователь №: 87 598

|
Ну микроконтроллеры ATMega не такие уж и слабые. Я даже читал, что в него и преобразование Фурье даже можно запихнуть.  Цитата(jcxz @ Oct 30 2017, 17:29)  Берёте нормальный контроллер, соответствующий задаче: хотя-бы ARM, лучше - DSP. Далее - всё программно: демодуляция, убирание "плавного изменение амплитуды" (ФВЧ) и т.п. Для такой несложной задачи наворачивать лес из кучи внешних элементов - это прошлый век. - Ему нужна аналоговая часть, я понял о чем он говорит. Вероятно, АЦП там работает медленно и ему нужно побыстрее. Там АЦП работает 10-20 с копейкам тактов - медленно - понимаю. А зачем это все вообще нужно?  ARM и DSP - это конечно хорошо, но в радиолюбительских условиях, возможно, ему трудно будет спаять много тонких и маленьких выводов, да и плата тоже может развестись с трудом - имею ввиду само изготовление.
Сообщение отредактировал Molotov - Oct 30 2017, 14:19
|
|
|
|
|
Oct 30 2017, 14:45
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Цитата(Molotov @ Oct 30 2017, 16:54)  Ну микроконтроллеры ATMega не такие уж и слабые. Я даже читал, что в него и преобразование Фурье даже можно запихнуть.  - Ему нужна аналоговая часть, я понял о чем он говорит. Вероятно, АЦП там работает медленно и ему нужно побыстрее. Там АЦП работает 10-20 с копейкам тактов - медленно - понимаю. А зачем это все вообще нужно?  ARM и DSP - это конечно хорошо, но в радиолюбительских условиях, возможно, ему трудно будет спаять много тонких и маленьких выводов, да и плата тоже может развестись с трудом - имею ввиду само изготовление. ARM и DSP конечно хорошо, но использовать 1-5% потенциала процессора только ради АЦП не вижу смысла. Хотя сам придерживаюсь мнения, что если можно сделать обработку на МК, то её нужно сделать на МК!
|
|
|
|
|
Oct 30 2017, 18:57
|
Гуру
     
Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710

|
Цитата(toweroff @ Oct 30 2017, 09:11)  не совсем понятна идея работы Q3 и Q5 Буферы (усилители тока). Токи их эмиттеров 40 мкА заданы R1 — стало быть, токи баз порядка 200 нА, и можно посчитать, не превышает ли дрейф напряжений на удерживающих конденсаторах выбранной ёмкости рабочего диапазона схемы. Цитата(jcxz @ Oct 30 2017, 14:29)  Берёте нормальный контроллер, соответствующий задаче: хотя-бы ARM, лучше - DSP. Данная задача математически не решается на фиксированной частоте дискретизации — данную же схему немного переделать, и она будет работать и на 100 МГц, и на 1 ГГц, а у ЦПС пупок развяжется уже на 1 МГц, если попытаться приблизиться хоть к какой-нибудь достоверности, ещё и подразумевая сугубо тепличный сигнал.
Сообщение отредактировал Plain - Oct 30 2017, 19:15
|
|
|
|
|
Oct 31 2017, 10:04
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(iliusmaster @ Oct 31 2017, 11:29)  Совсем неясна любовь к использованию МК там, где 3 корпуса мелкосхем и сборка транзисторов решают задачу быстро, "дешево" и эффективно. Вот оно Использование МК ради использования МК! Что именно неясно? Вам неясно почему решение вообще без каких либо мелкосхем и транзисторов лучше, чем их наличие? Я думал - это должно быть очевидно. Неясно почему 1 чип (МК), лучше чем огород из 5 (МК+3логики+сборка)?
|
|
|
|
|
Oct 31 2017, 13:48
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(jcxz @ Oct 31 2017, 17:04)  Неясно почему 1 чип (МК), лучше чем огород из 5 (МК+3логики+сборка)? Везде есть свои плюсы и минусы, и каждый человек к ним имеет свой собственный набор весовых коэффициентов  Возможно вам проще реализовать программно, но вы алгоритм еще не выложили, а Plain по-быстрому собрал и выложил готовую схему. Кому-то проще схему сделать, потому что время жмет, а программист не очень высокой квалификации и долго будет реализовывать, а кому-то надо 100к шт. выпустить - ему выгоднее привлечь стороннего. С другой стороны, всё-равно надо плату/комплектацию заказывать-монтировать-проверять и что 1 корпус, что 10 - не будет играть большой роли(тем более у ТС на плате уже не 1 корпус). Вот когда будет приличная серия - тогда да, можно и переделать на программную реализацию. И т.д. и т.п.
|
|
|
|
|
Oct 31 2017, 21:17
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 15-04-17
Пользователь №: 96 556

|
Цитата(jcxz @ Oct 31 2017, 13:04)  Что именно неясно? Вам неясно почему решение вообще без каких либо мелкосхем и транзисторов лучше, чем их наличие? Я думал - это должно быть очевидно. Неясно почему 1 чип (МК), лучше чем огород из 5 (МК+3логики+сборка)? Все просто, 1 - цена. Эта "рассыпуха" стоит сущие копейки. 2 - надежность. Понятие зависание программы для "рассыпухи" отсутствует. 3 - не нужно монструозного МК, который тупо будет гонять данные с АЦП.
|
|
|
|
|
Nov 1 2017, 09:05
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(HardEgor @ Oct 31 2017, 16:48)  Возможно вам проще реализовать программно, но вы алгоритм еще не выложили, а Plain по-быстрому собрал и выложил готовую схему. Готовая - это ещё не говорит о том, что она будет работать так, как надо ТС. И даже не факт, что если сейчас, испытанная на каком-то сигнале эта схема будет работать достаточно удовлетворительно, то завтра, когда что-то немного изменится, оно так же будет работать. А один из главных плюсов программной реализации - гибкость. Алгоритм в будущем нетрудно переделать, доработать под новые исходные данные. А вот схему... Да и программная реализация там должна быть несложная. И раздел здесь - "для начинающих", а это значит для людей развивающихся, а развиваться можно только пытаясь разобраться в чём-то новом, а не тупо повторяя чужое готовое решение.
|
|
|
|
|
Nov 1 2017, 12:22
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Tanya @ Nov 1 2017, 14:58)  Хороший алгоритм нахождения максимума (пусть даже у нас чистая синусоида) по десятку отсчетов на период можете предложить? Чтобы еще за период справлялся... Сразу - нет. Надо сперва в Матлабе пробовать. Но я бы сначала попробовал выпрямить сигнал и прогнать его через простой ФНЧ с децимацией (может даже предварительной, чтобы уменьшить загрузку CPU). Как видно - у автора длительность искомых событий примерно равна 4 периодам, так что можно сделать децимацию как минимум в 4 раза. DSP уровня TI-шного C55xx с такой задачей справится без вопросов. А на Cortex-M надо будет писать очень оптимально и наверное на асме (обработчик сэмплов).
|
|
|
|
|
Nov 2 2017, 01:42
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Цитата(jcxz @ Nov 1 2017, 15:22)  Сразу - нет. Надо сперва в Матлабе пробовать. Но я бы сначала попробовал выпрямить сигнал и прогнать его через простой ФНЧ с децимацией (может даже предварительной, чтобы уменьшить загрузку CPU). Как видно - у автора длительность искомых событий примерно равна 4 периодам, так что можно сделать децимацию как минимум в 4 раза. DSP уровня TI-шного C55xx с такой задачей справится без вопросов. А на Cortex-M надо будет писать очень оптимально и наверное на асме (обработчик сэмплов). Я тоже размышляю на тему перехода в МК, уж больно меня пугает такое количество аналоговой рассыпухи. Сейчас пробую реализацию на стареньком ARM7TDMI. Прерывания с ADC для уменьшения количества циклов выношу в RAM. Частота известна и стабильна, нужно только при инициализации поймать верх горбушки, а далее измерять с заданной частотой и вносить корректировки. Предложенная Plain’ом схема мне очень нравится, если с МК прогорит, то вернусь к ней. * Жалко всего две руки и одна голова, а так бы и схему собирал и кодил одновременно
|
|
|
|
|
Nov 2 2017, 05:58
|
Местный
  
Группа: Свой
Сообщений: 446
Регистрация: 12-03-06
Из: Москва
Пользователь №: 15 142

|
Цитата(jcxz @ Nov 1 2017, 15:22)  DSP уровня TI-шного C55xx с такой задачей справится без вопросов. А на Cortex-M надо будет писать очень оптимально и наверное на асме (обработчик сэмплов). Афтору надо 16 каналов завести в проц - это только дсп и то не всякий справится , а с ним сложностей в изучении вагон. Если был бы один-два канала да, намного проще копеечным STM32F030 обойтись, который дешевле выбранной атмеги, имеет шустрое ацп и достаточно ресурсов для данной задачи без всяких асмов.
|
|
|
|
|
Nov 2 2017, 07:44
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(idle1 @ Nov 2 2017, 04:42)  Сейчас пробую реализацию на стареньком ARM7TDMI. Прерывания с ADC для уменьшения количества циклов выношу в RAM. Частота известна и стабильна, нужно только при инициализации поймать верх горбушки, а далее измерять с заданной частотой и вносить корректировки. Если хотите, чтобы получилось, то имхо - процессор надо всё-таки помощнее - хотя бы Cortex-M с частотой явно больше 100МГц. И писать надо оптимально. А это уж явно не вытягивать сэмплы программно из АЦП - тут у вас всё быстродействие CPU только на это и уйдёт. Явно нужно DMA+ADC и подумать над оптимальным расположением кода/данных в памяти. Цитата(Andreas1 @ Nov 2 2017, 08:58)  Афтору надо 16 каналов завести в проц - это только дсп и то не всякий справится , а с ним сложностей в изучении вагон. Если был бы один-два канала да, намного проще копеечным STM32F030 обойтись, который дешевле выбранной атмеги, имеет шустрое ацп и достаточно ресурсов для данной задачи без всяких асмов. А где автор говорит про 16 каналов? Вроде в исходном задании только 1 канал.... Цитата(ViKo @ Nov 2 2017, 09:16)  Компаратором (внешним или внутренним) находить переходы сигнала через 0. По срабатыванию запускать таймер или АЦП. Таймером или временем выборки подобрать, чтобы АЦП срабатывал на вершинах синусоид. Ну да - и по малейшему шуму, вся работа идёт лесом. PS: Да - и начинать надо не с АЦП и программирования, а с создания модели в Матлабе. Чтобы хоть примерно оценить требуемые для решения задачи ресурсы.
|
|
|
|
|
Nov 2 2017, 09:17
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Цитата(jcxz @ Nov 2 2017, 12:02)  Вот именно. А ещё ТС не сказал об уровне шумов в его канале. От этого очень сильно будет зависеть решение. На картинках сигнал довольно чистый. Шумов в канале нет, но есть плавное изменение амплитуды (его отсеиваю по средней). Задача поймать именно резкий провал. Сейчас я делаю аппроксимацию по 5ти последним пикам синусоиды. Плавное изменение - это изменение на +/-0.1В/сек. Резкое - от 0.4В за период. Частотного и фазового сдвига нет.
Сообщение отредактировал idle1 - Nov 2 2017, 09:18
|
|
|
|
|
Nov 2 2017, 09:49
|
Местный
  
Группа: Свой
Сообщений: 446
Регистрация: 12-03-06
Из: Москва
Пользователь №: 15 142

|
Цитата(jcxz @ Nov 2 2017, 10:44)  А где автор говорит про 16 каналов? Вроде в исходном задании только 1 канал.... В 9 сообщении. Компаратор по переходу через ноль, запуск ацп с задержкой в почти четверть периода и обработка. Канала 2..3 можно обработать для нешумного сигнала и без матлабов и дсп дешевым армом на 48Мгц. Можно еще и с компаратора не сразу на старт таймера, а через ФАПЧ цифровой , если фронты дрожат. А 16каналов - это уже другого уровня проц нужен или несколько попроще.
|
|
|
|
|
Nov 2 2017, 10:20
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 25-02-09
Из: Россия, Москва
Пользователь №: 45 367

|
Цитата(Andreas1 @ Nov 2 2017, 12:49)  В 9 сообщении. Компаратор по переходу через ноль, запуск ацп с задержкой в почти четверть периода и обработка. Канала 2..3 можно обработать для нешумного сигнала и без матлабов и дсп дешевым армом на 48Мгц. Можно еще и с компаратора не сразу на старт таймера, а через ФАПЧ цифровой , если фронты дрожат. А 16каналов - это уже другого уровня проц нужен или несколько попроще. Каналов реально 16! Они синхронны по частоте и сдвигу, но с разными амплитудами. При ТС я рассматривал только один и хотел делать по аналогии. С компаратором будет сложность, т.к. дрейф амплитуды по ним различен.
|
|
|
|
|
Nov 4 2017, 02:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(iliusmaster @ Oct 31 2017, 12:29)  Решение с пиковыми детекторами изящное и работоспособно при правильном выборе элементов в широком диапазоне частот и температур. Совсем неясна любовь к использованию МК там, где 3 корпуса мелкосхем и сборка транзисторов решают задачу быстро, "дешево" и эффективно. Вот оно Использование МК ради использования МК! Все просто. Если надо модификацию, то не надо новую схему собирать. Переписал программу и вперед. Цитата(Tanya @ Nov 1 2017, 15:58)  Хороший алгоритм нахождения максимума (пусть даже у нас чистая синусоида) по десятку отсчетов на период можете предложить? Чтобы еще за период справлялся... Да запросто. Навскидку: Сравнивать сигнал с его автокорреляционной функцией, которая считай тот же синус, но только чистый от шума. Отнормировать на приблизительное равенство амплитуд (чем точнее -- тем чувствительнее будет) и считать дисперсию разницы. Как подскочила -- считай неоднородность. Интервал подсчета дисперсии период -- даже среднего не надо будет считать (хотя можно и без среднего посчитать дисперсию). Время реакции правда будет задержано на период, но может это допустимо.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|