не проще ли по энкодеру и на флюгер (направление) и на анемометр (чашечный) поставить и не заморачиваться?
предсказать направление ветра все равно бесполезно, хоть обанализируйся (если только не иметь достаточно плотное покрытие сетью станций). Поэтому если тупо регулировать открытие фрамуг в конкретной точке (тамже, где и флюгер с анемометром стоят) то данных энкодеров выши крыши.
Если же монитроить и пытаться предсказывать напрвление на достаточно большой территории - тогда, конечно, лучше вместо сети флюгеров датчики атмосферного давления навтыкать и тогда можно просто прям на карте видеть направления по областям давления.
Для моего случая думаю достаточно определить откуда дует ветер с погрешностью скажем +-10 градусов.
А если складывать в массив типа uint16_t, то получится ещё большее "усреднение". А поддерживая пики гистограммы на каком то уровне (больше-меньше данных), можно управлять "периодом усреднения".
- опять не совсем точная постановка задачи.
Давайте доберемся до сути процессов
Для чего вам нужно знать направление и силу ветра?:
- используете ветреные генераторы
- используете ветер для конвекции (охлаждения)
- защишаете ваше пространство от потока воздуха
...
В каждом из этих случаев совершенно разные будут алгоритмы действий
Уточните как вы далее "используете" поток воздуха?
Мало того, они еще и от раза к разу будут сильно скакать если ветер с порывами. Прийдется усреднять на большем промежутке времени, а значить изменения ситуации, например поднялся ветер т.к. начинается гроза, будут определены с большим запаздыванием. Так что верно, именно ОТСТОЙ. Хотя для помойки народного мониторинга сойдет ;) AndryGladky, а подумайте, нужен ли на той помойке еще и ваш вклад? Напомню, измерения, в т.ч. метеорологические, должны выполнятся по установленной методике на повереном оборудовании иначе им грош цена. Скорость сквозняков и нагрев термометра на солнце хрен кому нужны.
По поводу нагрева датчика я эту проблему устранил, засунул датчик в трубу высотой в метр, датчик внизу трубы посредине труба на уровне роста человека, и мелкий сквозняк полностью справляется с погрешностью от солнца. А метеостанция так для себя, скорость ветра тоже, тем более в моем поселке много людей которые интересуются сколько градусов было ночью или как изменилось давление. Усреднять данные за пять минут, принцыпе даже с порывами, как раз примерное среднее значение, для чего и максимум что бы передавать тоже порывы, а для точности, у меня есть мажордомо который ведет лог всего, и не раз в пять минут, а пишет все данные. Там можно посмотреь с точностью, так вот что примерно вычисляеться среднее то примерно и прослеживается на графике. И делается ето с интереса, думаю лучше заниматся таким, чем то что мои сверстники тратят время на непонятно что. Насчет повереного оборудования я думаю DS18B20 не владеет особой погрешностью, а вычисление ветра с разрешонностью 4 импульса на оборот, ето тоже думаю нормально.
Думаю это поможет с расчётами, а не могли бы вы поподробнее рассказать про устройство вашего анемометра
Про устройство могу рассказать, я взял обычный крановый анемометр, нашол на олх два за ценой 70 грн. Со второго планирую сделать флюгер.
Анемометр крановый М-95М-2
Внутри стоит обмотка прикрученая на трех болтах, которую я благополучно выбросил, потому что так и не смог толково снять показания там слелан типа двигатель переменного тока, на валу в алюминиевой чашке стоит вклеян круглый магнит, я его выдрал, в чашке сделал четыре прорези и внизу на креплении поставил оптопару с ограничивающеми резисторами, что бы прорези проходили в оптопаре. Вот такая у меня конструкция.
Для моего случая думаю достаточно определить откуда дует ветер с погрешностью скажем +-10 градусов.
А если складывать в массив типа uint16_t, то получится ещё большее "усреднение". А поддерживая пики гистограммы на каком то уровне (больше-меньше данных), можно управлять "периодом усреднения".
- опять не совсем точная постановка задачи.
Давайте доберемся до сути процессов
Для чего вам нужно знать направление и силу ветра?:
- используете ветреные генераторы
- используете ветер для конвекции (охлаждения)
- защишаете ваше пространство от потока воздуха
...
В каждом из этих случаев совершенно разные будут алгоритмы действий
Уточните как вы далее "используете" поток воздуха?
Добавлю. По направлению ветра определяются наветренная и подветренная стороны фрамуг, которые работают по своему алгоритму с учетом заданных настроек. Все направлено на то, чтоб не допустить попадания холодного воздуха на макушки растений, не повредить фрамуги порывами встречного ветра и др.
Коллеги, кому интересна тема про управление фрамугами с учетом ветра, кто хочет помочь или разоьраться, прошу в мою тему. Здесь переплетаются разные вопросы и сложно понимать кто к кому обращается.
В таком случае знать направление ветра это не совсем правильная цель. Вам нужно знать направление максимально воздействия ветра = скорость ветра × Время с этого направлния. Например слабый ветер постоянно дует с одного направления а сильные порывы всегда приходят с другого. В таком случае вы должны бояться направления откуда приходят порывы а не откуда дует слабый ветер
Спасибо. Примерно так сейчас происходит. Аппаратно.
Выше писал:
....При каждом обороте анемометра читаю показания флюгера, значение 0-15 (при тихой погоде направление не учитывается).....
Получается чем выше скорость ветра, тем быстрее вращается анемометр, тем быстрее инкриминируется соответствующая ячейка массива.
Осталось правильно проанализировать данные. Мне сейчас не до этого.
Буду очень признателен если сомжете ответить на пару моих вопросов.
Петр скажите, а из чего у Вас теплица построена? И какие расходы на отопление (в киловатах имею ввиду), насколько я понял площадь у Вас 200 квадратов....
Насколько я понял трубы отопления у Вас в земле зарыты?
Используете ли Вы подсветку? Правильно ли я понял, что первый что в Марте у Вас уже свои огурцы? Почесу от привода фрамуг на основе двигателя от стеклоочистителей Вы отказались и купили актуатор?
Буду очень признателен если сомжете ответить на пару моих вопросов.
Петр скажите, а из чего у Вас теплица построена? И какие расходы на отопление (в киловатах имею ввиду), насколько я понял площадь у Вас 200 квадратов....
Насколько я понял трубы отопления у Вас в земле зарыты?
Используете ли Вы подсветку? Правильно ли я понял, что первый что в Марте у Вас уже свои огурцы? Почесу от привода фрамуг на основе двигателя от стеклоочистителей Вы отказались и купили актуатор?
ноль. там он будет автоматически, так как изначально показания переменной ни чему не равны - программа присваивает ей ноль. Так что тут даже мудрить нет необходимости))
и так с каждым вновь поступившим показанием. У меня работает
Это ровно то, что я писал в начале ветки. Это т.н. фильтр. Он работает в десятки раз быстрее скользящего среднего примерно с тем же результатом. В Вашем примере Вы берете предыдущее значение K(n-1) с весом 2, и усредняете с текущим. (2*K(n-1)+K(n))/3 если этими весами поиграть, то фильтр то больше сглаживает (9*K(n-1)+K(n))/10 , то наоборот быстрее реагирует на изменения - (2*K(n-1)+3*K(n))/5
Быстрее - это очевидно. Там вообще нет цикла и нет хранения значений окна! Есть только предыдущее значение и одна (!!!Одна операция).
А сглаживание - тоже очевидно. Играя коэффициентами вы либо даете приоритет новому значению (текущему), либо предыдущему - тогда появляется инерционность. Как бы система не может резко изменить значение. См. мои посты с картинками в самом начале 3 года назад ))))
Вот тут много формулок, но суть та же: http://we.easyelectronics.ru/Theory/chestno-prostoy-cifrovoy-filtr.html
Тут народ совсем заморочился скоростью работы и решил вообще не умножать и не делить, т.к. это "долго".
Используются коэффициенты - степени двойки и вместо умножений и делений - сдвиг битов влево и вправо ))))
Наверное у них супер летает ))))))
Вы с каким скользящим средним сравниваете, SMA или EMA? SMA считается быстро. EMA может дать бОльшую объективность за счет бОльшей глубины истории при тех же преимуществах, что и простой фильтр
Pablos, т.к. Вы отвечаете уже на пост после моего, хочу напомнить вопросы, на которые Вы не ответили?
- За счет чего быстрее?
- Откуда там цикл?
Заодно замечу, что Вы в своем посте №66 обсуждаете совсем не тот фильтр, что привел Posol88. Обратите внимание, что предыдущее значение и накопленное среднее - это совсем не одно и то же.
Далее, Вы, почему-то, утверждаете, что формула average = (K[n]*B + K[n-1]*C)/(B + C) считается в одно действие. На самом деле действий 6: два умножения, два сложения, вычитание и деление. В частном случае количество действий можно сократить до 4, но не менее.
В то же время при подсчете скользящего среднего для вычисления последнего используется две строки:
summ = summ + K[n] - K[n-m]
average = summ/m
т.е. операции изначально 4. Причем, отсутствует операция умножения, которая вычислительно сложнее сложения или вычитания.
Почему это должно работать в десятки раз медленнее?
Ну, никто и не говорил, что это "одно и то же". Я говорил, что результат почти не отличим, а реализация проще.
Да, можно обойтись без цикла, но, если область хранения коэффициентов конечна (кольцевой стек), то надо ещё и вычислять индексы N и N-M путём вычисления остатка от деления.
Места нужно точно больше, программа сложнее, результат почти не отличим. Посмотрите мои графики по ссылке выше. Фильтр практически повторяет среднее, но с задержкой как бы.
"Остаток от деления" - это круто. Почему-то Вы упорно предлагаете самые неэффективные алгоритмы. В случае степени двойки - это одна логическая операция (которые, как известно, проще арифметических), если же нет - операция одна - инкремент запомненного ранее значения. Т.е. точности то же самое, что и вычисление предыдущего (т.е. [n-1]) индекса.
Да, по памяти это явно проигрывает, но по скорости либо так же, либо чуть быстрее, но никак не в десятки раз медленнее.
Но есть еще одно обстоятельство: скользящее среднее можно считать и в целых числах, а вот с фильтрами такое не получится. Так что на контроллере без аппаратной плавающей точки, скорее всего, фильтр в десятки, а то и сотни раз проиграет по скорости окну.
А графики в теме, на которую Вы ссылаетесь, - неубедительные. Слишком мелко, и внимательно разглядеть мешает исходный зашумленный сигнал. По крайней мере, по тому, что опубликовано, делать вывод "почти неотличим" явно нельзя. Вероятно, сами Вы разглядывали графики в более адекватном размере, но тогда вопрос уже состоит не в том, что каждый желающий сам может сделать выводы, а в том, что следует верить Вам на слово, что совсем не одно и то же.
И еще: фильтр, конечно, дает задержку, но она, наоборот, меньше, чем у скользящего среднего.
Если не параноить скоростью расчетов, реально-интересный результат может дать анализ двух EMA с таймфреймом примерно 1:2. Это не просто усредняет результат, но и дает возможность краткосрочного прогнозирования. Индикатор называется MACD. Применял его в погодной станции
ноль. там он будет автоматически, так как изначально показания переменной ни чему не равны - программа присваивает ей ноль. Так что тут даже мудрить нет необходимости))
Точно? Боюсь, Вы когда-нибудь сильно разочаруетесь :-(
не проще ли по энкодеру и на флюгер (направление) и на анемометр (чашечный) поставить и не заморачиваться?
предсказать направление ветра все равно бесполезно, хоть обанализируйся (если только не иметь достаточно плотное покрытие сетью станций). Поэтому если тупо регулировать открытие фрамуг в конкретной точке (тамже, где и флюгер с анемометром стоят) то данных энкодеров выши крыши.
Если же монитроить и пытаться предсказывать напрвление на достаточно большой территории - тогда, конечно, лучше вместо сети флюгеров датчики атмосферного давления навтыкать и тогда можно просто прям на карте видеть направления по областям давления.
А если складывать в массив типа uint16_t, то получится ещё большее "усреднение". А поддерживая пики гистограммы на каком то уровне (больше-меньше данных), можно управлять "периодом усреднения".
Давайте доберемся до сути процессов
Для чего вам нужно знать направление и силу ветра?:
- используете ветреные генераторы
- используете ветер для конвекции (охлаждения)
- защишаете ваше пространство от потока воздуха
...
В каждом из этих случаев совершенно разные будут алгоритмы действий
Уточните как вы далее "используете" поток воздуха?
Мало того, они еще и от раза к разу будут сильно скакать если ветер с порывами. Прийдется усреднять на большем промежутке времени, а значить изменения ситуации, например поднялся ветер т.к. начинается гроза, будут определены с большим запаздыванием. Так что верно, именно ОТСТОЙ. Хотя для помойки народного мониторинга сойдет ;) AndryGladky, а подумайте, нужен ли на той помойке еще и ваш вклад? Напомню, измерения, в т.ч. метеорологические, должны выполнятся по установленной методике на повереном оборудовании иначе им грош цена. Скорость сквозняков и нагрев термометра на солнце хрен кому нужны.
По поводу нагрева датчика я эту проблему устранил, засунул датчик в трубу высотой в метр, датчик внизу трубы посредине труба на уровне роста человека, и мелкий сквозняк полностью справляется с погрешностью от солнца. А метеостанция так для себя, скорость ветра тоже, тем более в моем поселке много людей которые интересуются сколько градусов было ночью или как изменилось давление. Усреднять данные за пять минут, принцыпе даже с порывами, как раз примерное среднее значение, для чего и максимум что бы передавать тоже порывы, а для точности, у меня есть мажордомо который ведет лог всего, и не раз в пять минут, а пишет все данные. Там можно посмотреь с точностью, так вот что примерно вычисляеться среднее то примерно и прослеживается на графике. И делается ето с интереса, думаю лучше заниматся таким, чем то что мои сверстники тратят время на непонятно что. Насчет повереного оборудования я думаю DS18B20 не владеет особой погрешностью, а вычисление ветра с разрешонностью 4 импульса на оборот, ето тоже думаю нормально.
Думаю это поможет с расчётами, а не могли бы вы поподробнее рассказать про устройство вашего анемометра
Про устройство могу рассказать, я взял обычный крановый анемометр, нашол на олх два за ценой 70 грн. Со второго планирую сделать флюгер.
Анемометр крановый М-95М-2
Внутри стоит обмотка прикрученая на трех болтах, которую я благополучно выбросил, потому что так и не смог толково снять показания там слелан типа двигатель переменного тока, на валу в алюминиевой чашке стоит вклеян круглый магнит, я его выдрал, в чашке сделал четыре прорези и внизу на креплении поставил оптопару с ограничивающеми резисторами, что бы прорези проходили в оптопаре. Вот такая у меня конструкция.
А если складывать в массив типа uint16_t, то получится ещё большее "усреднение". А поддерживая пики гистограммы на каком то уровне (больше-меньше данных), можно управлять "периодом усреднения".
Давайте доберемся до сути процессов
Для чего вам нужно знать направление и силу ветра?:
- используете ветреные генераторы
- используете ветер для конвекции (охлаждения)
- защишаете ваше пространство от потока воздуха
...
В каждом из этих случаев совершенно разные будут алгоритмы действий
Уточните как вы далее "используете" поток воздуха?
О своей задаче я писал http://arduino.ru/forum/programmirovanie/vychislenie-srednego-arifmeticheskogo-s-dannykh-kotorye-prikhodyat-raz-v-10-s#comment-318595
Добавлю. По направлению ветра определяются наветренная и подветренная стороны фрамуг, которые работают по своему алгоритму с учетом заданных настроек. Все направлено на то, чтоб не допустить попадания холодного воздуха на макушки растений, не повредить фрамуги порывами встречного ветра и др.
Флюгер и анемометр у меня есть и работают http://arduino.ru/forum/ishchu-ispolnitelya/upravlenie-mikroklimatom-teplitsy#comment-127818
Коллеги, кому интересна тема про управление фрамугами с учетом ветра, кто хочет помочь или разоьраться, прошу в мою тему. Здесь переплетаются разные вопросы и сложно понимать кто к кому обращается.
В таком случае знать направление ветра это не совсем правильная цель.
Вам нужно знать направление максимально воздействия ветра = скорость ветра × Время с этого направлния.
Например слабый ветер постоянно дует с одного направления а сильные порывы всегда приходят с другого.
В таком случае вы должны бояться направления откуда приходят порывы а не откуда дует слабый ветер
Спасибо. Примерно так сейчас происходит. Аппаратно.
Выше писал:
....При каждом обороте анемометра читаю показания флюгера, значение 0-15 (при тихой погоде направление не учитывается).....
Получается чем выше скорость ветра, тем быстрее вращается анемометр, тем быстрее инкриминируется соответствующая ячейка массива.
Осталось правильно проанализировать данные. Мне сейчас не до этого.
Доброго времени суток!
Буду очень признателен если сомжете ответить на пару моих вопросов.
Петр скажите, а из чего у Вас теплица построена? И какие расходы на отопление (в киловатах имею ввиду), насколько я понял площадь у Вас 200 квадратов....
Насколько я понял трубы отопления у Вас в земле зарыты?
Используете ли Вы подсветку? Правильно ли я понял, что первый что в Марте у Вас уже свои огурцы? Почесу от привода фрамуг на основе двигателя от стеклоочистителей Вы отказались и купили актуатор?
Доброго времени суток!
Буду очень признателен если сомжете ответить на пару моих вопросов.
Петр скажите, а из чего у Вас теплица построена? И какие расходы на отопление (в киловатах имею ввиду), насколько я понял площадь у Вас 200 квадратов....
Насколько я понял трубы отопления у Вас в земле зарыты?
Используете ли Вы подсветку? Правильно ли я понял, что первый что в Марте у Вас уже свои огурцы? Почесу от привода фрамуг на основе двигателя от стеклоочистителей Вы отказались и купили актуатор?
Чтоб не засорять эту тему, ответил в соответствующей по теплицам.
http://arduino.ru/forum/ishchu-ispolnitelya/upravlenie-mikroklimatom-teplitsy#comment-394457
я может конечно не прав буду сейчас, но я реализовывал усреднение так:
"среднее значение" = ("среднее значение" *2+"фактическое значение")/3
и так с каждым вновь поступившим показанием. У меня работает
я может конечно не прав буду сейчас, но я реализовывал усреднение так:
"среднее значение" = ("среднее значение" *2+"фактическое значение")/3
и так с каждым вновь поступившим показанием. У меня работает
а при первых значениях что подставлется в первый член этой формулы?
ноль. там он будет автоматически, так как изначально показания переменной ни чему не равны - программа присваивает ей ноль. Так что тут даже мудрить нет необходимости))
я может конечно не прав буду сейчас, но я реализовывал усреднение так:
"среднее значение" = ("среднее значение" *2+"фактическое значение")/3
и так с каждым вновь поступившим показанием. У меня работает
Такое себе решение.
Рекомендую почитать про среднее медианное и среднее скользящее.
осталось определиться какое же среднее будет оптимальным для измерения скорости ветра
я может конечно не прав буду сейчас, но я реализовывал усреднение так:
"среднее значение" = ("среднее значение" *2+"фактическое значение")/3
и так с каждым вновь поступившим показанием. У меня работает
Это ровно то, что я писал в начале ветки. Это т.н. фильтр. Он работает в десятки раз быстрее скользящего среднего примерно с тем же результатом. В Вашем примере Вы берете предыдущее значение K(n-1) с весом 2, и усредняете с текущим. (2*K(n-1)+K(n))/3 если этими весами поиграть, то фильтр то больше сглаживает (9*K(n-1)+K(n))/10 , то наоборот быстрее реагирует на изменения - (2*K(n-1)+3*K(n))/5
Удачи!!!
"За счет чего" что????
Быстрее или сглаживает! ))))) Изъясняйтесь яснее.
Быстрее - это очевидно. Там вообще нет цикла и нет хранения значений окна! Есть только предыдущее значение и одна (!!!Одна операция).
А сглаживание - тоже очевидно. Играя коэффициентами вы либо даете приоритет новому значению (текущему), либо предыдущему - тогда появляется инерционность. Как бы система не может резко изменить значение. См. мои посты с картинками в самом начале 3 года назад ))))
За счет чего быстрее?
И откуда там цикл?
Вот тут много формулок, но суть та же: http://we.easyelectronics.ru/Theory/chestno-prostoy-cifrovoy-filtr.html
Тут народ совсем заморочился скоростью работы и решил вообще не умножать и не делить, т.к. это "долго".
Используются коэффициенты - степени двойки и вместо умножений и делений - сдвиг битов влево и вправо ))))
Наверное у них супер летает ))))))
Вы с каким скользящим средним сравниваете, SMA или EMA? SMA считается быстро. EMA может дать бОльшую объективность за счет бОльшей глубины истории при тех же преимуществах, что и простой фильтр
Ещё раз. Про "объективность" см. мои картинки 3 года назад в этой ветке. На глаз не различимо!
"Вам шашечки или ехать?" )))))
Ой! Сорри! Картинки мои были в другом обсуждении )))))) Виноват. Сейчас найду.
Вот!!! Картинки сравнения скользящего среднего и фильтра тут: http://arduino.ru/forum/programmirovanie/dozator-s-dvumya-vesami
Pablos, т.к. Вы отвечаете уже на пост после моего, хочу напомнить вопросы, на которые Вы не ответили?
- За счет чего быстрее?
- Откуда там цикл?
Заодно замечу, что Вы в своем посте №66 обсуждаете совсем не тот фильтр, что привел Posol88. Обратите внимание, что предыдущее значение и накопленное среднее - это совсем не одно и то же.
Далее, Вы, почему-то, утверждаете, что формула average = (K[n]*B + K[n-1]*C)/(B + C) считается в одно действие. На самом деле действий 6: два умножения, два сложения, вычитание и деление. В частном случае количество действий можно сократить до 4, но не менее.
В то же время при подсчете скользящего среднего для вычисления последнего используется две строки:
summ = summ + K[n] - K[n-m]
average = summ/m
т.е. операции изначально 4. Причем, отсутствует операция умножения, которая вычислительно сложнее сложения или вычитания.
Почему это должно работать в десятки раз медленнее?
Ну, никто и не говорил, что это "одно и то же". Я говорил, что результат почти не отличим, а реализация проще.
Да, можно обойтись без цикла, но, если область хранения коэффициентов конечна (кольцевой стек), то надо ещё и вычислять индексы N и N-M путём вычисления остатка от деления.
Места нужно точно больше, программа сложнее, результат почти не отличим. Посмотрите мои графики по ссылке выше. Фильтр практически повторяет среднее, но с задержкой как бы.
"Остаток от деления" - это круто. Почему-то Вы упорно предлагаете самые неэффективные алгоритмы. В случае степени двойки - это одна логическая операция (которые, как известно, проще арифметических), если же нет - операция одна - инкремент запомненного ранее значения. Т.е. точности то же самое, что и вычисление предыдущего (т.е. [n-1]) индекса.
Да, по памяти это явно проигрывает, но по скорости либо так же, либо чуть быстрее, но никак не в десятки раз медленнее.
Но есть еще одно обстоятельство: скользящее среднее можно считать и в целых числах, а вот с фильтрами такое не получится. Так что на контроллере без аппаратной плавающей точки, скорее всего, фильтр в десятки, а то и сотни раз проиграет по скорости окну.
А графики в теме, на которую Вы ссылаетесь, - неубедительные. Слишком мелко, и внимательно разглядеть мешает исходный зашумленный сигнал. По крайней мере, по тому, что опубликовано, делать вывод "почти неотличим" явно нельзя. Вероятно, сами Вы разглядывали графики в более адекватном размере, но тогда вопрос уже состоит не в том, что каждый желающий сам может сделать выводы, а в том, что следует верить Вам на слово, что совсем не одно и то же.
И еще: фильтр, конечно, дает задержку, но она, наоборот, меньше, чем у скользящего среднего.
Если не параноить скоростью расчетов, реально-интересный результат может дать анализ двух EMA с таймфреймом примерно 1:2. Это не просто усредняет результат, но и дает возможность краткосрочного прогнозирования. Индикатор называется MACD. Применял его в погодной станции
ноль. там он будет автоматически, так как изначально показания переменной ни чему не равны - программа присваивает ей ноль. Так что тут даже мудрить нет необходимости))
Точно? Боюсь, Вы когда-нибудь сильно разочаруетесь :-(