Усреднение показаний аналоговых датчиков
Усреднение показаний аналоговых датчиков
Добрый день.
Я подключил ИК-дальномер Sharp 2YOA21 на аналоговый вход к Ардуине Мега.
Его показания конвертировал в строку и вывел на ЖК дисплей HD44780.
Дисплей подключен по четырехпроводной схеме I2C.
Но показания постоянно прыгают и мерцают.
Я так понимаю, что нужно реже опрашивать датчик или лучше как-то усреднять показания, чтобы они реже менялись и были более точными.
Теоретически я понимаю, что нужно как-то заполнять массив, вычислять его сумму и делить ее на количество элементов в массиве. Это будет среднее арифметическое показаний. Про отбрасывание случайных величин, которые резко выбиваются из ряда я пока не думаю (образования не хватает) .
Я не могу понять как практически осуществить загрузку допустим 5 измерений в массив, обработку, вывод на дисплей и снова по кругу. Это нужно делать быстро, чтобы предыдущие значения не пропадали с дисплея
Я посмотрел в интернете примеры для обработки показний переменного резистора на С+,
но ничего не понял.
Там организован цикл и видна формула для среднего арифметического между прошлыми показаниями и последующими.
Помогите пожалуйста !
PS. Я думаю эта тема важная и многим будет интересна. Аналоговых датчиков очень много и в промышленности их показания обрабатывают ( те же Овены )
Я подключил ИК-дальномер Sharp 2YOA21 на аналоговый вход к Ардуине Мега.
Его показания конвертировал в строку и вывел на ЖК дисплей HD44780.
Дисплей подключен по четырехпроводной схеме I2C.
Но показания постоянно прыгают и мерцают.
Я так понимаю, что нужно реже опрашивать датчик или лучше как-то усреднять показания, чтобы они реже менялись и были более точными.
Теоретически я понимаю, что нужно как-то заполнять массив, вычислять его сумму и делить ее на количество элементов в массиве. Это будет среднее арифметическое показаний. Про отбрасывание случайных величин, которые резко выбиваются из ряда я пока не думаю (образования не хватает) .
Я не могу понять как практически осуществить загрузку допустим 5 измерений в массив, обработку, вывод на дисплей и снова по кругу. Это нужно делать быстро, чтобы предыдущие значения не пропадали с дисплея
Я посмотрел в интернете примеры для обработки показний переменного резистора на С+,
но ничего не понял.
Там организован цикл и видна формула для среднего арифметического между прошлыми показаниями и последующими.
Помогите пожалуйста !
PS. Я думаю эта тема важная и многим будет интересна. Аналоговых датчиков очень много и в промышленности их показания обрабатывают ( те же Овены )
Усреднение показаний аналоговых датчиков
блок не мой
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Усреднение показаний аналоговых датчиков
Все верно, только не возьму в толк зачем умножать? Три математики (плюс, минус, деление) далее преобразуем и подаем на дисплей. Ничего не прыгает. Лень клацать программой? Выводим в меню на дсплее изменение интежер в онлайн режиме с последующим сохранением в эпром. Получится (уменьшить на 10) в данных уменьшиться на еденицу, (делим на 20) в данных уменьшится на 10... Примерно так. Вы же получаете полный спектр (1023), а отправляете на дисплей деленные данные... Вернее не деленные, а преобразованные в сантиметры или метры... А это совсем иные данные...
Последний раз редактировалось injener 18 июн 2017, 22:30, всего редактировалось 1 раз.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Усреднение показаний аналоговых датчиков
Если работа самой логики устраивает, мешают только мерцание цифр,Андрейка писал(а):Но показания постоянно прыгают и мерцают.
то можно так
[spoiler=Спойлер][/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Усреднение показаний аналоговых датчиков
Всем спасибо за помощь.
Особенно rw6cm.
Я этот блок NumberChange раньше не видел. Сидел на старой версии программы.
Я просто с массивами никогда не работал. Не разобрался пока как организовывать загрузку данных в массив и выгрузку из него.
Особенно rw6cm.
Я этот блок NumberChange раньше не видел. Сидел на старой версии программы.
Я просто с массивами никогда не работал. Не разобрался пока как организовывать загрузку данных в массив и выгрузку из него.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Усреднение показаний аналоговых датчиков
Можно без таймера, прям в нем настроить гистерезис,Андрейка писал(а):Я этот блок NumberChange раньше не видел
но для дисплея мне с таймером больше нравится.
Массивы если ссылки найду выложу
Win10-64, FLProg (portable)
Усреднение показаний аналоговых датчиков
Только что залил по вашему совету и прилепил медианный фильтр.
Работает круто.
Буду изучать массивы.
Работает круто.
Буду изучать массивы.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Андрейка 21 июн 2017, 20:44, всего редактировалось 1 раз.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Усреднение показаний аналоговых датчиков
Сразу все и не вспомнить, наверно подходящее к вашей теме можно посмотреть здесь, и здесь.
Если вспомню еще выложу.
п/с в проектах более старых версий возможно нужно будет переместить блоки,
или собрать заново в новой версии.
Если вспомню еще выложу.
п/с в проектах более старых версий возможно нужно будет переместить блоки,
или собрать заново в новой версии.
Последний раз редактировалось rw6cm 22 июн 2017, 12:44, всего редактировалось 1 раз.
Win10-64, FLProg (portable)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя