Как стать автором
Обновить

Комментарии 13

Вот вам и ардуино, плёвая задачка превращается в ад…
И автор ещё молодец, правильным путём пошел вроде-бы, но ардуина, такая дурина, она любит говнокод!
Типичный школьник бы, решил задачку выключением прерываний, велосипедом на тему «pulseIn()» и включением прерываний перед передачей результата :-)
Где тут место для г-кода? 3 простых реализации измерения времени. С анализом результатов.
И что-то мне подсказывает, что частоту физических процессов по 1 периоду все равно не стОит мерить.
НЛО прилетело и опубликовало эту надпись здесь
А как насчет статьи о самом самодельном чашечном анемометре? Конструкция, материалы?
А еще не приступал. Только базовые идеи опробую, пока время есть. Летом буду делать. Анемометр+флюгер с энкодером на коде Грея. Там самое сложное — а)обеспечить более-менее энергосберегающий режим с передачей данных на расстояние (так как установить это в пределах досягаемости электророзетки нереально); б) сделать конструкцию, открытую всем ветрам, но достаточно долговечную. Электронные проблемы тут дело десятое.
Подскажите идейку в тему.
На цифровом входе 2 Atmega328 висит ИК датчик, который ловит отраженный сигнал от кусочка фольги наклеенный на вал двигателя.
Программа считает количество прерываний на этой ноге, и тем самым показывает частоту вращения двигателя.
Но иногда датчик выдает лишние прерывания. То ли ловит что-то еще, то ли сигнал от фолгьки не всегда стабильный.
Как повысить достоверность сигнала? Например проверкой скважности (она в данном случае всегда примерно одинаковая)
Или выбраковкой недостоверных значений по доверительному интервалу из ряда нескольких значений частоты.
А может есть какие то более простые методы?
НЛО прилетело и опубликовало эту надпись здесь
Посмотрите программные методы защиты от дребезга кнопок — та же самая задача. Не примитивные, вроде задержки прерывания, а с многократным считыванием сигнала через установленные промежутки времени. Если несколько отсчетов подряд совпадает — есть импульс, в противном случае считаем, что случайный дребезг. Для надежности можно поверх всего применить фильтрацию откровенных выбросов (например, простейшую — по 2 или 3 сигмам). Только это занимает время и замедляет реакцию системы, так что всяко лучше поработать над защитой от дребезга.
Да уж. Раз в несколько миллисекунд рассчитывать сигма, да хотя бы средеквадратичное с корнями — это не для амеги. Видимо проще ловить оба фронта и рассчитывать длительность высокого и низкого уровней и все что не попадает в необходимое соотношение как то отсекать
Среднее значение за N периодов?

Некроответ. Лучше брать не фольгу, а светоотражающую ленту, такая идет в китайских тахометрах. И отдельно продается. Да, можно проверять..ну, не скважность, а период между соседними метками. Он должен быть примерно одинаковый, а если скачет в несколько раз, то это паразитные отражения.

А у STM32 можно ножку назначить входом таймера, и его счетчик будет увеличиваться при каждом импульсе. Или использовать режим захвата, когда в момент импульса текущее значение счетчика автоматически записывается в регистр. И всё это без участия ядра. По мне так это самые правильные методы измерения частоты.
s/STM32/ATmega/
s/ATmega/Arduino/

КМК, использовать таймер в режиме счетчика можно в любом микроконтроллере. Только от дребезга контактов это не поможет все равно.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории