реклама на сайте
подробности

 
 
> Помогите со схемно-программным решением для измерения периода, при ограниченных ресурсах
Diusha
сообщение Dec 27 2010, 03:24
Сообщение #1


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



На вход девайса может поступать периодический сигнал. А может не поступать, а вместо него – лабуда. Будем считать, что если сигнал есть, то он по крайней мере в разы больше шума, но когда cигнала нет, «лабуда» м.б. большой (как сигнал, если бы он был). Задача – определить, что появился сигнал и измерить его период. Диапазон 1…10 мс, точность нужна порядка 2% (все числа пока ориентировочные).
Форма сигнала может быть любой, вовсе не обязательно, что только с двумя экстремумами по времени за период.
Вычислительная мощность ограничена, ибо AVR => 8 бит, невысокая тактовая. Плюс загружен еще другой задачей.
Обрабатывать непрерывный поток с АЦП, боюсь, некогда, поэтому пытаюсь его минимизировать. Попытался сделать так:

сигнал (с правильной пост. сост.) завожу на аналоговый компаратор и АЦП. Компаратор выдает прерывание по каждой смене состояния (т.е. в обе стороны). По прерыванию запускаю АЦП, и в идеале должен получить отсчеты в моменты минимумов и максимумов.

Реально, конечно, в моменты горбов получаю кучу отсчетов, часть из которых отсекаю по признаку «слишком рано после предыдущего».

Вопросы:

1. Удачно ли такое схемное-программное решение для получения отсчетов?

2. (в случае положительного ответа на 1.) Каким путем посоветуете поступить с полученными отсчетами?
На заметке а) быстрое преобразование Фурье, б) автокорреляционная функция. Есть еще и в) мысля в сторону алгоритмов поиска периода подстроки в строке.

3. Или вообще надо всё совсем не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexeyv
сообщение Dec 28 2010, 00:41
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



частота полезного периодического сигнала в каком диапазоне?
может стоит сначала прогнать сигнал через полосовой фильтр, а потом производить дальнейшую обработку?
Go to the top of the page
 
+Quote Post
Diusha
сообщение Dec 28 2010, 10:27
Сообщение #3


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(alexeyv @ Dec 28 2010, 06:41) *
частота полезного периодического сигнала в каком диапазоне?
может стоит сначала прогнать сигнал через полосовой фильтр, а потом производить дальнейшую обработку?

Я же написал: период полезного сигнала 1...10 мс (ориентировочно). Наверно нечетко сформулировал
Фильтры ставить не хочется, хочетс с самым минимальным минимумом компонентов. Ну если уж окажется никак, то тут уж шо уж тут уж (с).
Тем более, что шумы в основном примерно в том же диапазоне

Цитата(KARLSON @ Dec 28 2010, 08:22) *
Так отсчёты не нужны для основной рабготы? А что если Вам считать период таймером (наверника он есть в АВР), запускающийся от прерывания компаратора?

Само собой, таймером определяю моменты срабатывания компаратора (Input Capture mode).
Я привел пример формы сигнала, для которого в идеале за период (его) я должен получить 6 отсчетов. Но сигнал может быть и "хуже" (больше отсчетов), а может быть синусоида (2 отсчета), наперед это неизвестно. Поэтому чтобы из кучи отсчетов выудить период, нужен какой-то алгоритм. Это раз. А два - это то, что реально на период я получаю не 6 (как в примере), а десятки отсчетов, из которых надо как-то отсечь лишние (чтобы меньше обрабатывать), но "не выплеснуть и младенца".

P.S. Под отсчетом я здесь подразумеваю пару: [момент времени (по сигналу с компаратора); величина в этот момент (с АЦП)]

Сообщение отредактировал Diusha - Dec 28 2010, 10:28
Go to the top of the page
 
+Quote Post
alexkok
сообщение Dec 29 2010, 04:39
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(Diusha @ Dec 28 2010, 17:27) *
Я же написал: период полезного сигнала 1...10 мс (ориентировочно). Наверно нечетко сформулировал
Фильтры ставить не хочется, хочетс с самым минимальным минимумом компонентов.

Но придется, хотя бы одно звено.
Цитата
Само собой, таймером определяю моменты срабатывания компаратора (Input Capture mode).
Я привел пример формы сигнала, для которого в идеале за период (его) я должен получить 6 отсчетов. Но сигнал может быть и "хуже" (больше отсчетов), а может быть синусоида (2 отсчета), наперед это неизвестно. Поэтому чтобы из кучи отсчетов выудить период, нужен какой-то алгоритм. Это раз. А два - это то, что реально на период я получаю не 6 (как в примере), а десятки отсчетов, из которых надо как-то отсечь лишние (чтобы меньше обрабатывать), но "не выплеснуть и младенца".

P.S. Под отсчетом я здесь подразумеваю пару: [момент времени (по сигналу с компаратора); величина в этот момент (с АЦП)]

Предлагаю:
1. Изменить схему, добавив гистерезис
Прикрепленное изображение

2. Алгоритм примерно такой:
- считаете средний, максимальный и минимальный полупериоды/периоды на скользящем окне;
- считаете некое подобие "дисперсии", попроще;
- если "дисперсия" меньше порога, значит есть сигнал.


--------------------
Go to the top of the page
 
+Quote Post
Diusha
сообщение Dec 30 2010, 04:12
Сообщение #5


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(alex_os @ Dec 29 2010, 09:36) *
Крайне сомнительная схема, работать будет только на идеальной синусоиде (да Вы сами в этом убедились).

Синусоида ничуть не лучше нарисованного примера сигнала, у нее такие же плоские верхушки. По идее схема должна хорошо работать с пилой (не проверял, т.к. такая форма маловероятна).

Цитата(alex_os @ Dec 29 2010, 09:36) *
Если время измерения не критично можно попробовать сделать что-то вроде ФАПЧ.

К сожалению, очень критично. 0.5 сек – уже точно не годится. Хотелось бы 0.1, ну 0.2 макс. Получается на нижней частоте 10 (20) периодов. Вероятно придется чем-то пожертвовать.

Цитата(alexkok @ Dec 29 2010, 10:39) *
1. Изменить схему, добавив гистерезис

Вот это идея мне понравилась! Спасибо!
Только у АВРок, к сожалению, у компаратора нет выхода на улицу. Придется на внешнем операционнике сделать. Программно выводить выход компаратора по прерыванию – возможны ошибки. Хотя, кто его знает…

Цитата(alexkok @ Dec 29 2010, 10:39) *
2. Алгоритм примерно такой:
- считаете средний, максимальный и минимальный полупериоды/периоды на скользящем окне;

Дело «за малым»: определить период. В это-то все и упирается. Выделив период, возможно будет достаточно тупо 10 периодов разделить на 10.

Можно, наверно, период искать банально как интервал от максимума до максимума, а максимумами считать те, которые отличаются друг от друга не более, чем на …% от амплитуды. Ну вот мы и нашли период; если за N периодов разброс меньше, чем, значит все в абажуре. Но может быть такая форма сисигнала, которая все испортит.

Можно, добавив еще несколько IF–THEN, предусмотреть и 2 и 3 максимума (≈одинаковых) на период. Но наверно есть покрасивше алгоритм
Go to the top of the page
 
+Quote Post
alexkok
сообщение Dec 30 2010, 05:12
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(Diusha @ Dec 30 2010, 11:12) *
Вот это идея мне понравилась! Спасибо!
Только у АВРок, к сожалению, у компаратора нет выхода на улицу. Придется на внешнем операционнике сделать. Программно выводить выход компаратора по прерыванию – возможны ошибки. Хотя, кто его знает…

У меня ошибка в схеме, цепь ПОС/гистерезиса нужно подключить к средней точке, а не к сигнальной цепи.
Нулём сигнала, соответственно, должна быть средняя точка.
Цитата
Дело «за малым»: определить период. В это-то все и упирается. Выделив период, возможно будет достаточно тупо 10 периодов разделить на 10.

После корректировки схемы Вы будете иметь точки пересечения нуля и никаких проблем с вычислением периода быть не должно.


--------------------
Go to the top of the page
 
+Quote Post
Diusha
сообщение Dec 30 2010, 11:22
Сообщение #7


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(alexkok @ Dec 30 2010, 11:12) *
У меня ошибка в схеме, цепь ПОС/гистерезиса нужно подключить к средней точке, а не к сигнальной цепи.
Нулём сигнала, соответственно, должна быть средняя точка.

Ну вот, до этого было понятно, а теперь стало непонятно sad.gif wink.gif
Разве приведенная Вами схема не будет выделять пики? По-моему, там все логично

Цитата(alexkok @ Dec 30 2010, 11:12) *
После корректировки схемы Вы будете иметь точки пересечения нуля и никаких проблем с вычислением периода быть не должно.

Я-то как раз хотел сделать схему, выделяющую пики, а не пересечения нуля, чтобы эти пики измерить и получить доп. информацию. Измерение нулей много информации не добавит wink.gif
Сигнал может пересекать ноль больше 2-х раз за период (также как и иметь больше 2-х пиков (верхний и ниж.) за период). Так что, с нулями я окажусь в той же ситуации, только без величины сигнала
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Diusha   Помогите со схемно-программным решением для измерения периода   Dec 27 2010, 03:24
|- - alexkok   Цитата(Diusha @ Dec 30 2010, 17:22) Ну во...   Dec 30 2010, 15:18
|- - Diusha   Цитата(alexkok @ Dec 30 2010, 21:18) Этот...   Dec 31 2010, 05:14
|- - Diusha   Вот примеры реальных данных, полученных с моей схе...   Jan 9 2011, 00:51
- - KARLSON   Цитата(Diusha @ Dec 27 2010, 09:24) 2.Как...   Dec 28 2010, 02:22
- - Евгений Николаев   Цитатаесли сигнал есть, то он по крайней мере в ра...   Dec 28 2010, 11:14
|- - Diusha   Цитата(Евгений Николаев @ Dec 28 2010, 17...   Dec 29 2010, 03:05
|- - alex_os   Цитата(Diusha @ Dec 29 2010, 09:05) Если ...   Dec 29 2010, 03:36
- - Designer56   а просто отфильтровать сигнал на входе до 1 кГц? П...   Dec 28 2010, 13:10
- - GetSmart   Цитата(Diusha @ Dec 27 2010, 11:24) По пр...   Dec 28 2010, 14:47


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 08:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.02077 секунд с 7
ELECTRONIX ©2004-2016