Страница 1 из 1

Усреднение показаний аналоговых датчиков

Добавлено: 18 июн 2017, 19:44
Андрейка
Добрый день.
Я подключил ИК-дальномер Sharp 2YOA21 на аналоговый вход к Ардуине Мега.
Его показания конвертировал в строку и вывел на ЖК дисплей  HD44780.
Дисплей подключен по четырехпроводной схеме I2C.
Но показания постоянно прыгают и мерцают.
Я так понимаю, что нужно реже опрашивать датчик или лучше как-то усреднять показания, чтобы они реже менялись и были более точными.
Теоретически я понимаю, что нужно как-то заполнять массив, вычислять его сумму и делить ее на количество элементов в массиве. Это будет среднее арифметическое показаний. Про отбрасывание случайных величин, которые резко выбиваются из ряда я пока не думаю (образования не хватает)  .
Я не могу понять как практически осуществить загрузку допустим 5 измерений в массив, обработку, вывод на дисплей и снова по кругу. Это нужно делать быстро, чтобы предыдущие значения не пропадали с дисплея
 Я посмотрел в интернете примеры для обработки показний переменного резистора на С+,
но ничего не понял.
Там организован цикл и видна формула для среднего арифметического между прошлыми показаниями и последующими.
Помогите пожалуйста !
 PS. Я думаю эта тема важная и многим будет интересна. Аналоговых датчиков очень много и в промышленности их показания обрабатывают ( те же Овены )

Усреднение показаний аналоговых датчиков

Добавлено: 18 июн 2017, 19:52
pan
блок не мой

Усреднение показаний аналоговых датчиков

Добавлено: 18 июн 2017, 21:09
Boroda
Андрейка, вот здесь много цифровых фильтров

Усреднение показаний аналоговых датчиков

Добавлено: 18 июн 2017, 22:28
injener
Все верно, только не возьму в толк зачем умножать? Три математики (плюс, минус, деление) далее преобразуем и подаем на дисплей. Ничего не прыгает. Лень клацать программой? Выводим в меню на дсплее изменение интежер в онлайн режиме с последующим сохранением в эпром. Получится (уменьшить на 10) в данных уменьшиться на еденицу, (делим на 20) в данных уменьшится на 10... Примерно так. Вы же получаете полный спектр (1023), а отправляете на дисплей деленные данные... Вернее не деленные, а преобразованные в сантиметры или метры... А это совсем иные данные...

Усреднение показаний аналоговых датчиков

Добавлено: 19 июн 2017, 09:08
rw6cm
Андрейка писал(а):Но показания постоянно прыгают и мерцают.
Если работа самой логики устраивает, мешают только мерцание цифр,
то можно так
[spoiler=Спойлер][/spoiler]

Усреднение показаний аналоговых датчиков

Добавлено: 21 июн 2017, 19:46
Андрейка
Всем спасибо за помощь.
Особенно rw6cm.
Я этот блок NumberChange раньше не видел. Сидел на старой версии программы.
Я просто с массивами никогда не работал. Не разобрался пока как организовывать загрузку данных в массив и выгрузку из него.

Усреднение показаний аналоговых датчиков

Добавлено: 21 июн 2017, 20:02
rw6cm
Андрейка писал(а):Я этот блок NumberChange раньше не видел
Можно без таймера, прям в нем настроить гистерезис,
но для дисплея мне с таймером больше нравится.

Массивы если ссылки найду выложу

Усреднение показаний аналоговых датчиков

Добавлено: 21 июн 2017, 20:38
Андрейка
Только что залил по вашему совету и прилепил медианный фильтр.
Работает круто.
Буду изучать массивы.

Усреднение показаний аналоговых датчиков

Добавлено: 21 июн 2017, 20:50
rw6cm
Сразу все и не вспомнить, наверно подходящее к вашей теме можно посмотреть здесь, и здесь.
Если вспомню еще выложу.

п/с в проектах более старых версий возможно нужно будет переместить блоки,
 или собрать заново в новой версии.