Перейти к содержанию
    

Дребезг параметра на индикаторе, как бороться?

4 minutes ago, wim said:

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

Специально для двоешников:

8 minutes ago, Forger said:

переменное число знаков после запятой решается двукратным округлением:

сначала все округляем до скажем двух знаков после запятой, а потом до одного.

в зависимости от диапазона выбираем нужное значение

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, pokk сказал:

Подскажите, как бороться с болтанием параметра на индикаторе, т.е  было значение 5.00 через секунду  4.99 потом опять 5.00... 4.99,5.01

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

Интегрирование значений АЦП параметра присутствует(1000 изерений).

Пока из решений вижу снять цифровой сигнал(значения АЦП) построить спектр(найти частоту среза)  и посчитать цифровой фильтр. 

Есть ещё какие либо решения?

 

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

ЗЫ. На Forger-а не тратьте время, это местный "умник".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, AHTOXA сказал:

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

Если это влитое значение окажется на границе скажем тех-же 4.99 и 5.00 (после выхода из фильтра) - всё равно будет "болтаться". Так как абсолютно идеальный фильтр - невозможен.

Тут только средства визуализации менять (задержка, отображение границ, линейные шкалы и т.п.).

Ну или - придумать свою систему счисления, не позиционную как общеупотребительная.  :biggrin:

 

Цитата

ЗЫ. На Forger-а не тратьте время, это местный "умник".

Заметил уж. Умник-теоретик....  :umnik2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте экспоненциальное сглаживание:
 Yn = (Yn-1 * K) + Xn * (1 - K)
Где Yn - отфильтрованное значение,
      Yn-1 - отфильтрованное на предыдущем пересчете,
      Xn - фильтруемое значение, K - коэффициент фильтрации (0...1).
K подберите сами -  около 1 (0.999, например) - будет фильтровать очень плавно, около 0 (0.001) - почти не фильтрует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, AHTOXA сказал:

Попробуйте пропустить ваш сигнал через медианный фильтр

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, pokk сказал:

Есть ещё какие либо решения?

Ещё вариант: Добавить гистерезис при переходе отображаемого значения от одной цифры к другой. Величина гистерезиса должна быть меньше позиции округления. Если скажем округляем до 0.01, то можно сделать гистерезис например на 0.001. И знак величины гистерезиса устанавливать в зависимости от направления перехода через границу округления: вверх или вниз.

Правда это введёт дополнительную ошибку в отображаемую величину. И может быть неприемлемо в каких-то случаях. Но зато пропадут "болтания" возле какой-то отметки если они меньше удвоенной величины гистерезиса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 минут назад, wim сказал:

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

Простое усреднение - это, по сути, ФНЧ. Видимо, частота среза низковата получается, и колебания пролазят.

А с медианой проще - задал окно шириной больше периода помехи, и порядок. Для отображения - первейшее дело.

45 минут назад, jcxz сказал:

Если это влитое значение окажется на границе скажем тех-же 4.99 и 5.00 (после выхода из фильтра) - всё равно будет "болтаться". Так как абсолютно идеальный фильтр - невозможен.

Согласен, вероятность попасть на стык останется при любой фильтрации. Но если мы срежем помеху, то эта вероятность уменьшится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, AHTOXA сказал:

Простое усреднение - это, по сути, ФНЧ. Видимо, частота среза низковата получается, и колебания пролазят.

А с медианой проще - задал окно шириной больше периода помехи, и порядок.

Так для этого надо сначала убедиться, что там есть периодическая помеха. Я ж и говорю - надо распределение кодов АЦП смотреть. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, wim сказал:

Так для этого надо сначала убедиться, что там есть периодическая помеха. Я ж и говорю - надо распределение кодов АЦП смотреть

Колебания показаний есть, значит коды с АЦП меняются со временем. Это и есть помеха. Если автор видит эти колебания, и оценивает их как неприятные для восприятия, значит, частота довольно высокая. Поэтому можно попробовать, скажем, брать каждые 100 мс по значению, и засовывать их в циклический массив из 10-20 значений. И отображать медиану из этого массива. Вполне возможно, что это решит проблему. А уж если не решит, то можно и углубиться :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Если сделать все верно, то для примера: числа в диапазоне 9.95....10.04 будут отображаться как 10.0

 

 

Т.е. просто тупо теряем разрешение. И нахрена бы это ? Но даже и при всем этом на границе значений точно так же будет "дребезг". А вот если сделать именно гистерезис - то не будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Правда это введёт дополнительную ошибку в отображаемую величину.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 minutes ago, rx3apf said:

Т.е. просто тупо теряем разрешение.

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

Можно поступить проще: сначала перевести отображаемый результат в целое число, где кол-во цифр будет строго равно кол-ву сегментов на индикаторе (сдвинуть запятую "до упора вправо").

Обрабатывать (фильтровать, округлять) в таком виде - как целое число, а уже потом "сдвигать" запятую на нужное место. Заодно это позволит получить некоторый прирост, поскольку расчеты в основном проводятся с целочисленными данными.

 

Другой вариант: задаться строго определенным кол-вом знаков после запятой в независимости от результата. Это актуально для индикаторов, в которых не предусмотрено переключение на диапазоны (например: кВ, В, мВ, мкВ). 

Варианты есть и они сильно зависят от поставленной задачи. 

 

Quote

Но даже и при всем этом на границе значений точно так же будет "дребезг".

Да, есть такой "эффект" :(

Лечится этим самым гистерезисом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...