А что собственно надо мерить?Добрый день!
Подскажите пожалуйста, в каком направлении двигаться ? Хочу прикрутить к esp датчик ветра , на базе которого геркон. Не могу сообразить какой скетч или библиотека нужна для считывания показаний с геркона?
А что собственно надо мерить?
Варианты для ответа:
1) Момент замыкания геркона,
2) число замыканий в единицу времени,
3) интервал между замыканиями,
4) включать свисток по замыканию,
5) количество выпитого пива,
6) длину тени от столба ночью
7) иное, но пока не придумал.
Как понял Вы не будете писать прогу а хотите халяву.Хе хе...хороший ответ.)
Да есть анемометр от станции погоды...так вот там , я читал, при полном обороте скорость 1 м/с, соответственно и считывать есть желание, один оборот 1 м/с.
Получается 2) число замыканий в единицу времени,
Нафиг там нужен оптрон и прерывания. В соседней теме человек которую неделю мучается и с тем и с другим. Сначала тоже совершенно ненужный оптрон поставил от балды, получил кучу ложных срабатываний потому что оптрон ловил помехи. Потом удалось его уговорить избавиться от оптрона, зато теперь ловит ложные срабатывания потому что сигнал обрабатывается по прерываниям, за счет этого ловится каждая помешка на входе.Геркон лучше подключить через оптрон иначе будет много левых импульсов, это проще всего по мне).
Выбери пин на ESP и включи по нему прерывания.
Пока помех мало, то не ловит. Посчитаем, какую мощность должна иметь помеха, чтобы вызвать ложное срабатывание. Для простоты примем, что ложное срабатывание будет, когда напряжение на COUNT упадет с 3.3В до 1 В. Ток через R34 при этом должен составить 2.3 мА. Коэффициент передачи оптрона PC817 по току - в диапазоне от 50% до 600%.На оптроне нормально работает ни каких левых импульсов не ловит.
И со счетчиком будет без проблем если работаете с прерываниям.Не стал бы сравнивать кнопку которую один раз нажали и все с счетчиком который может пол часа гнать импульсы. Вопрос в том сколько импульсов он потеряет и зловещий вачдог который любит все отрубить в самый неподходящий момент. Мне вот нельзя терять импульсы, по этому перед работой счетчика отключал все и перезагружал ESP по завершению.
Конечно выкладывайте, заценим.
Вместо кнопки - контакт геркона:Накидайте пож свое виденье на схему. Я попробую сравнить результат и обязательно отпишусь.
Исходные данные - минимальное время замкнутого и разомкнутого состояния геркона, или макс. частота срабатываний. Положим, макс. частота 10 Гц, а время замкнутого и разомкнутого состояний отличаются друг от друга не более чем в 3 раза. Значит, надо ловить импульсы минималной длительности 25 мс.я не понимаю как вы можете считать импульсы без прерываний.)) НЕ работает не фига. Нет стабильности.
void debounce(void)
{
static unsigned short int shreg;
shreg <<= 1;
if (pin_state(X)) // читаем пин
{
shreg |= 1;
}
if (shreg == 0xFFFF)
{
cont <<= 1; // в младшем разряде 0, контакт разомкнут
}
else if (shreg == 0)
{
cont <<= 1;
cont |= 1; // в младшем разряде 1, контакт зaмкнут
if ((cont & 3) == 1) // если контакт был разомкнут, а стал замкнут
{
// увеличиваем счетик импульсов
}
}
}
ПояснитеВместо кнопки - контакт геркона:
Посмотреть вложение 6220
Конденсатор ставить необязательно, а вот резистор R2 - обязательно
Исходные данные - минимальное время замкнутого и разомкнутого состояния геркона, или макс. частота срабатываний. Положим, макс. частота 10 Гц, а время замкнутого и разомкнутого состояний отличаются друг от друга не более чем в 3 раза. Значит, надо ловить импульсы минимальной длительности 25 мс.
Она убирает дребезг, при этом позволяет ловить импульсы длительностью более 16 мсПоясните
1) каким образом эта функция реализует измерение длительностью 25 мс?
Определение момента прерывания будет иметь неопределенность, зависящую от длительности дребезга. Если дребезга нет, то замыкание/размыкание будет отловлено с задержкой 16...17 мс. Если есть - то к этомy надо прибавить время дребезга.2) Как к Вы узнаете момент замыкания без прерываний?
3) Какое будет максимальное запаздывание реакции в таком алгоритме?
Посмотрите на код. Он очень простой, а исполняется всего один раз в миллисекунду. Голый вызов и возврат из прерывания наверное больше процессорного времени возьмут.4) Сколько времени процессора надо затратить на обнаружение одного нажатия?
Т е Вы данный код ставите в колбек таймера?Она убирает дребезг, при этом позволяет ловить импульсы длительностью более 16 мс
Определение момента прерывания будет иметь неопределенность, зависящую от длительности дребезга. Если дребезга нет, то замыкание/размыкание будет отловлено с задержкой 16...17 мс. Если есть - то к этомy надо прибавить время дребезга.
Посмотрите на код. Он очень простой, а исполняется всего один раз в миллисекунду. Голый вызов и возврат из прерывания наверное больше процессорного времени возьмут.
Я вообще-то писал "в основном цикле раз в 1 мс обращаемся к процедуре подавления дребезга контакта". Если хотите, то можете и обработку прерывания таймера вставить, но это хуже, поскольку из-за этого будет притормаживать обработка других прерываний.Т е Вы данный код ставите в колбек таймера?
А это тоже прерывание. Т е без прерываний нельзя?
Столько же. Для обычных кнопок я вызываю процедуру раз в 10 мс, задержка обнаружения 160 мс. Это определяется длительностью дребезга.В вашем варианте если длительность 1 сек то надо сколько ячеек памяти c квантом 1 мс?