Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: банальное измерение частоты
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
xin
уважаемые гуру, помогите, пожалуйста, советом в решении следующей задачи
есть ротор турбины, он вращается с высокой скоростью - порядка 1500 об/с
единственный источник получения информации - датчик вращения, который представляет собой катушку над ротором, в которой возбуждается ЭДС от магнитного поля восьмигранного сердечника.
Т.о., имеем почти синусоиду (в силу наличия биений форма сигнала искажается, и возникают дополнительные гармоники) частотой порядка 12 кГц. К сожалению, исторически сложилось, что модифицировать конструкцию невозможно совершенно - турбины поставлены в серию, т.е. задача только в сборе информации с этих датчиков и ее интерпретации (все турбины объединены в блоки по 10 штук)

И, собственно, вопрос - как в моей ситуации правильно измерить эту самую скорость вращения? Требуемая точность - не хуже 0,01 Гц, амплитуда сигнала - порядка 1 В, время измерения - порядка 100-200 мс. Фактически, 95% времени нужно измерять скорость вращения именно на уровне 1400-1500 об/с, однако оставшееся время - при разгоне и торможении - измерение также необходимо, допустимо только слегка загрубить точность. (Это к возможности реализации разностной схемы регистрации)

Форум листал, и в одном из топиков нашел утверждение, что детектирование прохождения через нуль с последующим усреднением - это совсем по-пэтэушному smile.gif самое смешное, что нынешние приборы для регистрации именно так и работают. Вариант с БПФ для каждой машины тоже где=то назвали решением "по-программистски, в лоб", т.е. с бесцельным растрачиванием вычислительных ресурсов. И можно ли выделить гармонику с такой точностью в нужном мне временнОм диапазоне?

заранее спасибо
UMP
Задачка давно известная. Один из вариантов решения в прикрепленном файле. smile3046.gif
ukpyr
Код
И, собственно, вопрос - как в моей ситуации правильно измерить эту самую скорость вращения?
любым контроллером с таймером, поддерживающим захват по входу (ICP). Входной сигнал заводится на компаратор с любым уровнем срабатывания (не обязательно 0), далее делитель на 8, вход захвата таймера. В зависимости от контроллера компаратор и делитель внешние или внутренние. Точность - микросекунды, и даже точнее (миллионные доли герца).
Microwatt
Цитата(ukpyr @ Jan 14 2009, 23:41) *
Точность - микросекунды, и даже точнее (миллионные доли герца).

Миллионные доли герца?
Или это так, случайно сорвалось?
zltigo
Цитата(ukpyr @ Jan 14 2009, 22:41) *
...контроллером с таймером..

Здорово-то как smile.gif. Этот вопрос задан ведь не в детском саду, Быстрое Преобразование Фурье и прочие выкрутасы поминаются, раздел Матеманика.... Ни какое сомнение не закралось?
asdf
Цитата(zltigo @ Jan 15 2009, 00:27) *
Здорово-то как smile.gif. Этот вопрос задан ведь не в детском саду, Быстрое Преобразование Фурье и прочие выкрутасы поминаются, раздел Матеманика.... Ни какое сомнение не закралось?

Нет, ну если контроллер может измерять частоту заполнения -200мГц, то можно и контроллер. laughing.gif
Правда, пока непонятно, хватит ли 10-15 усреднений, для получения точности 0.01Гц при искажениях.
Скажите, хотя бы, какова амплитуда гармоник.
Herz
Цитата(xin @ Jan 14 2009, 19:05) *
уважаемые гуру, помогите, пожалуйста, советом в решении следующей задачи
есть ротор турбины, он вращается с высокой скоростью - порядка 1500 об/с

Тут нет ошибки случаем? 1500 об/сек это 90000 об/мин. С такой скоростью вращаются турбины?!
ukpyr
Цитата
Миллионные доли герца?
Или это так, случайно сорвалось?
в смысле c дискретностью в мкс и меньше
Microwatt
Цитата(Herz @ Jan 15 2009, 02:03) *
Тут нет ошибки случаем? 1500 об/сек это 90000 об/мин. С такой скоростью вращаются турбины?!

А это что возникает в воображении.
Если электростанция- наврано раз в 50-60
Если МИГ- раз в 5-6
А если стоматолог, то еще и мало.
---
По теме. При чем тут гармоники - совершенно непонятно. Гармоники могут исказить ФОРМУ сигнала. А измерять-то нужно частоту?
akl
Цитата(xin @ Jan 14 2009, 21:05) *
...И, собственно, вопрос - как в моей ситуации правильно измерить эту самую скорость вращения? Требуемая точность - не хуже 0,01 Гц, амплитуда сигнала - порядка 1 В, время измерения - порядка 100-200 мс...

Здравствуйте. Может наведет на какие-то мысли следующая веточка и пример практического воплощения (MSP430F1121A+TIC5231; время измерения 0.33 сек) обсуждаемого алгоритма и предположении, что сигнал датчика нормирован.
http://electronix.ru/forum/index.php?showtopic=50159
Нажмите для просмотра прикрепленного файла
scifi
Цитата(xin @ Jan 14 2009, 20:05) *
...имеем почти синусоиду (в силу наличия биений форма сигнала искажается, и возникают дополнительные гармоники) частотой порядка 12 кГц.
...Требуемая точность - не хуже 0,01 Гц

Минуточку. 0,01 Гц на 12 кГц - это точность порядка 10^-6. Ничего не путаете? Даже кварц у Вас на плате такой точности не имеет.

Цитата(xin @ Jan 14 2009, 20:05) *
...время измерения - порядка 100-200 мс
...детектирование прохождения через нуль с последующим усреднением - это совсем по-пэтэушному smile.gif самое смешное, что нынешние приборы для регистрации именно так и работают.

Подсчёт числа импульсов с частотой около 12 кГц за 100 мс даст около 1200 импульсов. Погрешность отсчёта (+/- 1 импульс) даёт точность порядка 10^-3. Такая точность больше похожа на правду.
Вы сначала разберитесь со своими требованиями.

Цитата(xin @ Jan 14 2009, 20:05) *
Форум листал, и в одном из топиков нашел утверждение, что детектирование прохождения через нуль с последующим усреднением - это совсем по-пэтэушному smile.gif

А по-пэтэушному - это хорошо или плохо?
Если Вы свои инженерные решения таким сомнительным образом будете обосновывать, то ничего хорошего не получится.
evgeny_ch
Цитата(xin @ Jan 14 2009, 20:05) *
...
Форум листал, и в одном из топиков нашел утверждение, что детектирование прохождения через нуль с последующим усреднением - это совсем по-пэтэушному smile.gif самое смешное, что нынешние приборы для регистрации именно так и работают. Вариант с БПФ для каждой машины тоже где=то назвали решением "по-программистски, в лоб", т.е. с бесцельным растрачиванием вычислительных ресурсов. И можно ли выделить гармонику с такой точностью в нужном мне временнОм диапазоне?

заранее спасибо
Ничего странного в подсчёте импульсов от датчика нет.
Многие стандартные средства устроены т. о.
Возможно пригодится. Rotational Speed Sensors.
asdf
Цитата(scifi @ Jan 15 2009, 09:56) *
Минуточку. 0,01 Гц на 12 кГц - это точность порядка 10^-6. Ничего не путаете? Даже кварц у Вас на плате такой точности не имеет.

Подсчёт числа импульсов с частотой около 12 кГц за 100 мс даст около 1200 импульсов. Погрешность отсчёта (+/- 1 импульс) даёт точность порядка 10^-3. Такая точность больше похожа на правду.
Вы сначала разберитесь со своими требованиями.

Если измерять не частоту, а период с заполнением частотой более 200мГц, то заявленная точность достижима.
В этом случае вопрос только в возможности уменьшения ошибки из-за негармоничности сигнала.
В принципе, важно как возбуждается гармоника - синхронно с основной частотой или плавает.
Это и амплитуда гармоники и будет определять потребное количество периодов усреднения.
Аналогичная тема (измерение частоты КГ с высокой точностью за малый промежуток времени) весной прошлого года уже обсуждалась, там обсуждались и разные варианты решения.
Правда, использование для решения задачи БПФ - там не обсуждалось.
Tanya
Цитата(asdf @ Jan 15 2009, 12:53) *
Если измерять не частоту, а период с заполнением частотой более 200мГц, то заявленная точность достижима.

scifi правильно все описал, за исключением того, что +/- один период это грубовато. Вполне возможно и точнее, но в любом случае точность будет определяться опорным кварцем.
Измерять нужно 8*N периодов. Если сигнал с датчика близок к синусоиде, то грубо можно оценить погрешность, определяемую jitterом компаратора от 1/20 до 1/100 периода. Так что 10^-5 правильная верхняя оценка, согласующаяся с кварцем. И 200МГц - не нужно, хватит и 5-10.
Но что можно сказать про интерпретацию результата одиночного измерения длительности 1024 периодов для реальной турбины? Много разного...
Microwatt
Читаю пост 11 и соглашаюсь.
Какое-то беспомощное барахтанье эмбеддеров в воробьиной луже.
Точность в миллионные доли, заполнение 200МГц, БПФ.....Все, что слышали! Кому в турбине нужна точность выше 1-0.1 %? Вы хоть приближенно стабильность опорного кварца представляете?
Ни сформулировать задачу, ни рационально технически решить.
Да тут простой формирователь нуль-детектор и примитивный счетчик. Если уж расчехлили микроконтроллер, то меряйте период и 1/х вычисляйте.
evgeny_ch
Цитата(Microwatt @ Jan 15 2009, 14:21) *
Читаю пост 11 и соглашаюсь.
...
Ни сформулировать задачу, ни рационально технически решить.
Да тут простой формирователь нуль-детектор и примитивный счетчик. Если уж расчехлили микроконтроллер, то меряйте период и 1/х вычисляйте.
Недисертабельно. biggrin.gif
=GM=
Цитата(xin @ Jan 14 2009, 17:05) *
И, собственно, вопрос - как в моей ситуации правильно измерить эту самую скорость вращения? Требуемая точность - не хуже 0,01 Гц, амплитуда сигнала - порядка 1 В, время измерения - порядка 100-200 мс. Фактически, 95% времени нужно измерять скорость вращения именно на уровне 1400-1500 об/с, однако оставшееся время - при разгоне и торможении - измерение также необходимо, допустимо только слегка загрубить точность. (Это к возможности реализации разностной схемы регистрации)

Посмотрите здесь http://electronix.ru/forum/index.php?showtopic=29796, в посте #23 и далее представлены зачатки теории. Для входной частоты 12 кГц достижимая точность указанным методом на авр МК не хуже 0,001 Гц за период 0,2 с.
asdf
Цитата(Tanya @ Jan 15 2009, 13:56) *
scifi правильно все описал, за исключением того, что +/- один период это грубовато. Вполне возможно и точнее, но в любом случае точность будет определяться опорным кварцем.
Измерять нужно 8*N периодов. Если сигнал с датчика близок к синусоиде, то грубо можно оценить погрешность, определяемую jitterом компаратора от 1/20 до 1/100 периода. Так что 10^-5 правильная верхняя оценка, согласующаяся с кварцем. И 200МГц - не нужно, хватит и 5-10.
Но что можно сказать про интерпретацию результата одиночного измерения длительности 1024 периодов для реальной турбины? Много разного...

Таня, Вы не совсем правы. До тех пор пока автор не указал вид и амплитуды гармоник, нельзя катигорично говорить, что хватит 5-10 мГц.
Может и двухсот не хватить.
Ну а КГ со стабильностью 10^-6 - не такая уж и проблема.
Компараторы - у многих достаточно дешевых - J<100pS.
Другое дело, что получить разрешение 10^-6 при входном синусе 1V, без фильтрации практически невозможно.
И, действительно, нужна ли в данном случае точность 0.01Гц?
Tanya
Цитата(asdf @ Jan 15 2009, 18:56) *
Таня, Вы не совсем правы. До тех пор пока автор не указал вид и амплитуды гармоник, нельзя катигорично говорить, что хватит 5-10 мГц.
Может и двухсот не хватить.
Ну а КГ со стабильностью 10^-6 - не такая уж и проблема.
Другое дело, действительно, нужна ли в данном случае точность 0.01Гц?

Ну, что Вы... Ради Бога... Гармоники... они тут привязаны...не волнуют. Компаратор... шумы.. + непредвиденное...
Точнее сотой периода воспроизводимость (мне так видится...) тут не получить. Отсюда и цифры...
xin
Во-первых, спасибо всем большое за обсуждение и особенно за полезные ссылки
Сейчас пойду их все разбирать
Во-вторых, внесу уточнения

1. Частота вращения моих турбин в самом деле порядка 1500 оборотов в секунду - не оговорка - и даже несколько выше: это не электростанция и стоматологический бур, это газовые турбины
2. Амплитуда выходного сигнала в различных конструктивных исполнениях меняется, но почти всегда составляет от 1 до 2 вольт. Амплитуды гармоник сегодня посмотрю, завтра постараюсь выложить
3. Индуктор, возбуждающий ЭДС в датчике вращения, имеет восьмигранную форму, кроме того, один из углов срезан - для определения направления биений. В силу этого факта, а также того, что роторы моих турбин вращаются не строго вдоль оси симметрии, возникают дополнительные гармоники. Причин много, но банально - в первую очередь изначальный дисбаланс, во вторую - возникающие напряжения в материале ротора деформируют его и дальше уже возникают изгибы и колебания различного вида, которые, разумеется, модулируются частотой вращения, умноженной на 8. Примерно такова исходная физическая картина.
4. Вероятно, с величиной точности на уровне 0,01 Гц я слегка погорячился - можно обойтись разрешением (шагом квантования) на уровне 0,001 Гц, а точности достаточно 0,05, ну в совсем плохом случае при быстрой оценке - даже 0,1 Гц.
Специфика работы этих машин такова, что контроль скорости вращения происходит постоянно и имеет критически важное значение, отсюда столь жесткие требования.
5. БПФ я упомянул, поскольку вместе с задачей определения скорости вращения, параллельно необходимо решать еще и задачу определения осевых биений ротора турбины, правда требования к ней значительно мягче smile.gif.

Т.о., резюмируя (и заодно извиняясь за некоторую недосказанность в первом посте), имеем блок из десятка газовых турбин, в котором нужно измерять 1) скорость вращения и 2) величину биений роторов. Точность измерения частоты - лучше 0,05 Гц (при увеличенном времени измерения, скажем до 0,5 сек на одну машину) и 0,1 Гц, с меньшим временем.

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

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

p.s. на первом шаге - только проекте, постройке алгоритма - можно и не говорить о типе контроллеров, но, наверное, с учетом объемов математики, которые нужно переварить, следует задуматься о DSP или ARM
=GM=
Цитата(xin @ Jan 15 2009, 16:58) *
на первом шаге - только проекте, постройке алгоритма - можно и не говорить о типе контроллеров, но, наверное, с учетом объемов математики, которые нужно переварить, следует задуматься о DSP или ARM

Слушайте, а вам не надо момент вращения ваших турбин измерять? Мы тут как раз делаем такие датчики на DSP для дистанционного измерения, правда, выше 18000 rpm на автомобильном движке не поднимались, но инженеры, разрабатывающие этот двигатель, были слегка ошарашены точностью результатов.
scifi
Это не те самые пресловутые турбины для перекачки транзитного газа? biggrin.gif

Цитата(xin @ Jan 15 2009, 19:58) *
Точность измерения частоты - лучше 0,05 Гц (при увеличенном времени измерения, скажем до 0,5 сек на одну машину) и 0,1 Гц, с меньшим временем.

Всё-таки уточняющий вопрос: 0,05 Гц на 1500 Гц или 0,05 Гц на 12000 Гц? Разница почти на порядок.

Цитата(xin @ Jan 15 2009, 19:58) *
Проблема в том, что сегодня мы имеем решение на уровне знаний 70-х годов и элементной базы той же эпохи (могу соврать, но там даже процессор буквально 580-й используется) и морально оно устарело.

Если старое решение с задачей адекватно справляется, то нужно ли напрягаться? Если нет, тогда другой разговор...
ukpyr
Цитата
Всё-таки уточняющий вопрос: 0,05 Гц на 1500 Гц или 0,05 Гц на 12000 Гц? Разница почти на порядок
цитата :
Цитата
время измерения - порядка 100-200 мс
накопить и измерить за 100-200мс можно и на 1.5КГц и на 12КГц (с предделителем), результат будет один.
еще автор не указал амплитуду помех, может подойдет и простейший аналоговый фильтр 1-2го порядка.
xin
замечено совершенно точно - нужно знать скорость вращения с точностью до сотых оборота в секунду, т.е. на частоте 12 кГц можно загрубить величину в 8 раз

амплитуда помех обычно невелика - на уровне 20-30 мВ

старое решение с задачей справляется, но неэффективно, как в скорости подсчета, так и в банальном устаревании электроники - она ломается (время наработки уже велико), замена стоит дорого, поиск неисправности тоже чрезмерно затратен, но, как говорится, это уже совсем другая история
Tanya
Цитата(xin @ Jan 18 2009, 19:28) *
замечено совершенно точно - нужно знать скорость вращения с точностью до сотых оборота в секунду, т.е. на частоте 12 кГц можно загрубить величину в 8 раз

амплитуда помех обычно невелика - на уровне 20-30 мВ

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

Никакого повышения эффективности на новой элементной базе не будет. Если нужно измерить интервал времени между двумя событиями, то относительная погрешность будет определяться (абсолютной точностью регистрации этих событий)/(время измерения - временем между ними) и точностью часов - кварца. У Вас один оборот - (грубо) 500 мкс, точность регистрации - хорошо, если 1 мкс. Вот и считайте...
P.S. В PICах есть TIMER0 перед которым стоит асинхронный предделитель, работающий до (не помню точно) 40 MHz.
scifi
Цитата(xin @ Jan 18 2009, 19:28) *
старое решение с задачей справляется, но неэффективно, как в скорости подсчета, так и в банальном устаревании электроники - она ломается (время наработки уже велико), замена стоит дорого, поиск неисправности тоже чрезмерно затратен, но, как говорится, это уже совсем другая история

Предлагаю перейти на новую элементную базу, но оставить старый алгоритм. Это называется "здоровый консерватизм". Другими словами, "лучшее - враг хорошего". Я понимаю, что могут быть "более продвинутые" решения, что есть желание "оптимизировать". Этому нерациональному желанию надо сопротивляться. Слышали такое: "if it ain't broken, don't fix it"?
Krolm
да можно много чего придумать. мы вот частоту измеряем как производную мгновенной фазы. реализуется на плиске относительно просто. Гильберт -> тангенс (табличный 1/cos * sin) -> табличный atan -> производная. её уже и по времени можно усреднять и всякие штуки по выделению шумов делать. а перед всей штукой для уменьшения разрядности можно еще ЦФильтр со следящим циф гетеродином забабахать чтоб полосу обузить blink.gif
777777
Цитата(Krolm @ Mar 11 2009, 16:09) *
да можно много чего придумать. мы вот частоту измеряем как производную мгновенной фазы. реализуется на плиске относительно просто. Гильберт -> тангенс (табличный 1/cos * sin) -> табличный atan -> производная.

Ээ.. А подробнее можно? Что такое Гильбет? Зачем получать тангенс?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.