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

Вопрос по индикации...

Добрый день!

 

Подскажите пожалуйста, кто имел опыт работы с индикацией параметров на LCD.

Ворос заключается в том, как сгладить движение стрелки(на примере... можно и не тока стрелки)?

 

Есть 3 условия:

1 - скорость отображения изменения параметра не должна превышать X [ед/с]

2 - скорость обновления показа не должна быть меньше Y [fps]

3 - скорость поступления пар-ра Z [отсч/с]

 

Есть ли наработки по таким вещам?

Пока я думаю собрать цифровой либо интеполятор либо ресемплер, а потом ФНЧ и поставить. (а может и наоборот :) )

Попутный вопрос, если фильтры делать для них надо коэфф. жестко считать, а если X,Y,Z параметры необходимо менять динамически?

А если пар-р Z случайная величина как быть? Да и Y может гулять...

 

Заранее спасибо!

Любая литература или совет будет мной очень приветствоваться :)

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


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

А предельные значения (мин./макс.) всех этих параметров известны? Кто их определяет/задает? Синхронизацию асинхронных потоков обычно делают с помощью буферов.

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


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

А предельные значения (мин./макс.) всех этих параметров известны? Кто их определяет/задает? Синхронизацию асинхронных потоков обычно делают с помощью буферов.

Ситуация такая: значения приходят через какой-то период(вполне определенный). скажем 500-1000 мс. А скорость движения стрелки ограничена эргономическими соображениями(чтобы не слишком быстро скакала). Refresh стрелки планирую производить либо по таймеру, либо асинхронно по завершению отрисовки(у меня контроллер ЖК с буфером). Ксатати тоже пока не знаю, что лучше с точки зрения работы ОС. Ну вот, и мне необходимо сглаженно двигать эту стрелку(интерполировать частота refresha на порядок больше частоты поступления данных).

И хотелось бы узнать как это обычно осуществляется на практике?

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


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

Если на порядок, то суммируй 10 приходящих значений, а выводимое на индикатор дели на 10.

В микроконтроллерах лучше делить/множить на 8 или 16.

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


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

Если на порядок, то суммируй 10 приходящих значений, а выводимое на индикатор дели на 10.

В микроконтроллерах лучше делить/множить на 8 или 16.

У меня стрелка нарисованная - её надо медленно двигать по пикселам иначе некрасиво будет!!! :)

 

Насчет кратности 8/16 спасибо, я в курсе :) Тока у меня DSP-сопроцессор. Могу и float делить - не убудет :) :) :)

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


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

Раз вывод через буфер, то синхронизировать нужно с выводом буфера. Поскольку частота поступления данных небольшая 1-2Гц, то ИМХО фильтровать значения не нужно. В крайнем случае можно реализовать плавающее среднее из двух-трех отсчетов.

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


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

Раз вывод через буфер, то синхронизировать нужно с выводом буфера. Поскольку частота поступления данных небольшая 1-2Гц, то ИМХО фильтровать значения не нужно. В крайнем случае можно реализовать плавающее среднее из двух-трех отсчетов.

Если не фильтровать совсем, то получится так: я показываю через 20 мс (к примеру), через 1с значение меняется скачком(тоже возможно) как следствие стрелка переместится скачком, или я неправильно вас понял?

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


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

Если не фильтровать совсем, то получится так: я показываю через 20 мс (к примеру), через 1с значение меняется скачком(тоже возможно) как следствие стрелка переместится скачком, или я неправильно вас понял?

У человеческого глаза имеется инерционность порядка 100мс. Если выводить изображение чаще, чем 18 раз в секунду (в кинематографе, например, кадр меняется 24 раза/сек), то глаз наблюдателя сам "отфильтрует" движение. Нюансы могут возникнуть лишь, если будет присутствовать стробоскопический эффект от внешних источников света с разностной частотой биений ниже указанной.

Для вашего же случая фильтр "скользящее среднее" ИМХО хорошо подходит. Используя скользящее среднее с периодом равным или чуть меньшим, чем поступление входных данных вы как раз получите плавное движение стрелки с текущему значению. Для этого вы должны иммитировать поступление данных в буфер синхронно с обновлением изображения. Допустим, если у вас период обновления 20мс, а данные поступают через 500мс, то можно использовать буфер с периодом 300-400мс. 400мс/20мс=20. Т.е. буфер фильтра на 20 значений. Каждый раз после обновления экрана, если нового отсчета еще нет, то вы иммитируете его, дописывая в буфер фильтра (плавающего среднего) значение последнего отсчета. Если же новый отсчет поступил, то заменяете последний отсчет его текущим значением и дописываете уже его в буфер фильтра.

Если вам не нравится фильтрация типа "простое слользящее среднее", то можете выбрать сами другой тип цифрового фильтра. http://www.may.nnov.ru/mak/DSP/Contents.shtml

P.S. указанные фильтры являются КИХ-фильтрами. Поэтому для нормальной их работы отсчеты (в вашем случае рефреш экрана) должны быть равномерными.

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


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

А что посоветуете по поводу подстройки "налету" частоты среза фильтра?

P.S. указанные фильтры являются КИХ-фильтрами. Поэтому для нормальной их работы отсчеты (в вашем случае рефреш экрана) должны быть равномерными.

А у БИХ могут быть неравномерными?

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


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

А что посоветуете по поводу подстройки "налету" частоты среза фильтра?

Можно глубину буфера фильтра менять. Но изменение не должно быть чаще, чем период заполнения всего буфера.

А у БИХ могут быть неравномерными?
Честно говоря, я не очень хорошо подкован в теории, могу и глупость сморозить :laughing:

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

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


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

Кто может подсказать: где можно взять информацию по ЖК знакогенератору AC16ZEYJLY56H-AR (схема, распиновка, применение)? Спасибо.

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


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

Угу. Скорее всего символ 2 как Z прочитан и на самом деле это двухстрочный символьный LCD фирмы AMPIRE из серии AC162E.

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


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

...Скорее всего символ 2 как Z прочитан и на самом деле это двухстрочный символьный LCD.

 

Наверное так и есть. Спасибо за помощь. Еще, если не затруднит, помогите найти ему достойное применение. Благодарю.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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