Ви не увійшли.
Сторінки 1
Добрый день,
Новичок в ардуине - потихоньку ковыряю и появился вот такой вопрос - как правильно опрашивать аналоговый пин analogRead?
Почему возник вопрос:
1. Плавающие значения на пине - как правильно делать усреднение
2. Как правильно опрашивать пины по таймеру и как таймер влияет на это
Детальнее:
1. Сначала делал одинарный опрос (1 х analogRead), теперь делаю 4 опроса с задержкой в 10 мсек и усредняю, есть мнение, после некоторого чтения в инете по вопросу, что нужно делать 100 опросов без задержки и усреднять. А как это вообще принято? Во всех туториалах 1 х аналогРид и досвидания...
2. Как правильнее проводить сбор данных - по таймеру (например 1 раз в секунду) или проводить опрос в удобное время (согласно коду, когда есть пауза, например), а по таймеру записывать значения (на карточку или в терминал или на дисплей)? Как это обычно принято? Бэст кейс, так сказать, какой?
Извините, если идиотские вопросы и это уже где-то огромными буквами напечатано...
Неактивний
Плавающие значения на пине - как правильно делать усреднение
Да, фильтр поставить (вариант -- RC-цепочка) или сымитировать его, померяв несколько раз и усреднив.
Или отбросить младшие биты как незначимые, если это реально шум ненужный.
Как правильнее проводить сбор данных - по таймеру (например 1 раз в секунду) или проводить опрос в удобное время
Для систем автоматического управления / цифровых регуляторов важно соблюдать точный период дискретизации, т.е., например, собирать данные по таймеру. Иначе дрожание частоты дискретизации может ухудшить качество регулирования. Даже простой ПИД-регулятор может через Д-составляющую что-то напортить. Но если процесс медленно меняющийся по отношению к частоте опроса датчика, да ещё и регулятор всего лишь первого порядка, то IMHO можно не заморачиваться и делать как проще.
Неактивний
void loop()
{
I= ((I * 4) + (analogRead(Pin) ) / 5;
}
середнє значення набігає за рахунок циклу
I= ((I * 4) + analogRead(Pin) ) / 5;
була лишня дужка
Сторінки 1