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

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

Вам точность измерения нужна или красивые цифры?

Введите зону нечувствительности, к примеру, 4.98 - 5.02, и будете получать красоту на дисплее.

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


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

10 hours ago, pokk said:

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

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

У вас 1000 отсчетов усреднено и все равно остался шум.
Это значит дальше фильтровать в лоб бесполезно.Будет только увеличиваться инерционность показаний.

Существенно уменьшить шум (раз в 10) может применение априорной информации о модели измеряемого процесса.

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


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

Мельтешение цифр может раздражать, я прекрасно понимаю ТС. И ладно бы одна последняя цифра, но на границе могут меняться все (а то и позицию точки придется двигать). Это неприятно выглядит и на LED, а на тормозных знакосинтезирующих LCD вообще погано смотрится (а на "негативных" синих особенно). Потому - гистерезис. Причем отключаемый - значения меняются, гистерезис отключен. В течении некоторого количества обновлений не меняется - включаем. Как изменилось больше чем на значение гистерезиса - обновляем и вновь отключаем гистерезис. А дрожание +/- 1 lsb тоже можно блокировать, чуть иначе.

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


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

Для каждых 1000 отсчётов считать частое и гистерезис, например, 1%, т.е. если 10 из них были равны текущему, то оно остаётся, иначе заменяется частым.

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


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

Приветствую!

6 minutes ago, rx3apf said:

Мельтешение цифр может раздражать, я прекрасно понимаю ТС. И ладно бы одна последняя цифра, но на границе могут меняться все (а то и позицию точки придется двигать). Это неприятно выглядит и на LED, а на тормозных знакосинтезирующих LCD вообще погано смотрится (а на "негативных" синих особенно). ...

Ха- ха - ха   - так может вообще нафиг мерить -  пусть TC сделает установку нужных значений индикации кнопкой  - сколько нравится столько и поставит - цифры будут стоять как вкопанные :biggrin:.  TC поставил задачу БЕЗ решения (за исключением варианта с кнопками).  Тем более он сам говорит что сигнал ему известен (почти)

12 hours ago, pokk said:

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

Надо бы сначала TC решить системную задачу - определиться с требованиями к входному сигналу и точности измерениям и индикации - а уж потом придумывать чудо нейросеть для приятной индикации неизвестного измеренного значения. :mosking:

Удачи! Rob.

 

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


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

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

Любой гистерезис - потеря точности. 

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


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

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

Изменено пользователем rx3apf

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


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

Гистерезис на 1LSB - математическая несуразность. 

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


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

Ошибаетесь. Впрочем, поскольку толковать можно по-разному, я имел в виду, что изменение на 1 lsb от значения на экране после включения гистерезиса не должно вызывать изменение показаний. 

Изменено пользователем rx3apf

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


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

То есть, когда значение 40 изменится на 39, мы его не индицируем? Те-ря-ем. 

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


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

+1. Сколько не встречал попыток введения гистерезиса - везде получалось криво. Потому что кривая сама идея.

Добавлю. Было очень забавно, когда на системе с таким гистерезисом в одну единицу пользователь никак не мог установить значение отображаемого параметра, потому что гистерезис не хотел отображать изменение параметра на единицу! :) Пользователь, условно говоря, крутит резистор, пытаясь установить напряжение на нём 5.00. Доводит до 4.99, замедляется, программа решает, что пора включать гистерезис. Пользователь пытается докрутить до 5.00, но фиг там:) Крутит сильнее, параметр перескакивает на 5.01, потом по инерции сразу дальше. И потом то же самое, только в другую сторону :-)

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


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

Если выч.ресурсы есть, может гистограмма ? К томуже можно будет получить инф. о зашумленности сигнала. IMHO

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


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

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

Сколько не встречал попыток введения гистерезиса - везде получалось криво.

Вот еще пример. На входе i, на выходе adc_press_value. Таймаут adc_press_to где-то увеличивается в мс.

Итого: если переменная не изменилась больше чем на 2 lsb, то меняться будет раз в 10 секунд.

Если изменилась более чем на 2 lcb, то обновиться мгновенно.

Пользуюсь серийно - юзеры довольны.

			i = (i / 10) * 75006 / 1000000;

			if((myabs(adc_press_value - i) > 2) || (adc_press_to > 10000))
			{
				adc_press_value = i;
				adc_press_to = 0;
			}

 

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


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

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

Итого: если переменная не изменилась больше чем на 2 lsb, то меняться будет раз в 10 секунд. 

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

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


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

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

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

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

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

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

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

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

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

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