Измеритель скорости ветра

Cамодельный анемометр

roman2205

История такова. Перед тем как тратить деньги на большой проект ветряка решил сначала сделать анемометр, который покажет есть ли у меня ветры. А потом будет как дополнительный датчик для тормозной системы, который будет оповещать, что поднялся сильный ветер.

Должно было получиться что-то вот такое

Этапы изготовления самого датчика:

Корпус сделал так: взял кусок квадратной трубы в ней вырезал окошко, чтобы через него потом смонтировать начинку (кстати окошко вырезал с температурой, но так мне очень хотелось это сделать, что встал и пошел пилить). Затем внутрь приварил пластину (держатель внутреннего подшипника), тогда приварил низ (держатель нижнего подшипника). Когда решил делать верх задумал сделать скатную крышу-для этого вырезал четыре треугольника и аккуратно поприхватывал, а затем проварил полностью и так сделал заостренный козырек. Тогда зажал в тиски и сверлом на 0,5 мм меньше, чем диаметр подшипника просверлил вертикально отверстие в нижние крышке и в средние, оба для подшипников. Чтоб подшипники стали с натяжкой подгонял разверткой. Подшипники встали как родные. Затем в них вставил чуть-чуть подшлифованный гвоздь 100-ку при этом в середине окошка надев на него пластмассовую шаийбу с 4-мя прорезями. На гвозде снизу нарезал резьбу и на нее накрутил крыльчатку.

Крыльчатку изготовил так: к гайке электродом двойкой приварил три гвоздя потом их обрезал и на концах нарезал резьбу которой прикрутил половинки от мячика.

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

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

Светодиодиодно — фототранзисторный датчик выдернул из принтера, там таких навалом.

Сначала сделал из теннисных мячиков

Пришлось немного модифицировать прибор. На крыльчатка от теннисных мячиков он стартовал при ветре 5м/с. были куплены мячики в магазине детских игрушек диаметром 55 мм. Стартует при 2м/с и ведет измерения до 22 м/с, Мне хватаєт.

После того как датчик был готов. Надо было сделать электронику.

Первый вариант был самодельный ЛУТ технология + зеленая маска из Китая, сохнет под ультрафиолетом.

55 на фотографии это оборотов в секунду. Надо было как-то перевести в м/с. Долго думал как, достал даже два анемометры старый еще с СССР и китайский за 50 $, но с поверкой возникли проблемы, потому что ветер порывистый и не дует стабильно.

Поэтому придумал так: в выходной день я с Папой нашли за городом 2 км ровной дороги без машин, без ветра и с обеих сторон посадка деревьев (Папа за рулем а я сидел наполовину за окном) и давай гонять взад вперед. Сначала выставил СССР-кий и китайские анемометры я убедился, что они оба показывают одинаково и правильно, потому что если разделить скорость на спидометре машины на 3,6 то получалась цифра которую показывали анемометры в м/с. Папа ехал с одинаковой скоростью и приборы показывали одинаковый ветер. Таким образом я и проверял свой прибор. Папа добавлял каждый раз +5 км в час, а я записывал новый показатель (оборотов в секунду). Замеры провел трижды. Когда мы ехали более 80 км/ч (22м/с) мой анемометр уже не мог раскрутиться и цифра замирала, потому более 22м/с он не измеряет….

Кстати, Китайский показывал до 28м/с. СССР-кий до 20м/с. Когда установил его в месте с доработанной программой, еще раз сверил с китайским все сошлось.

Сейчас переделывается под Ардуино.

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

Видео работы

Результаты работы за зиму

с-сть — часов за зиму
0 м/с — 511,0
1 м/с — 475,0
2 м/с — 386,5
3 м/с — 321,2
4 м/с — 219,0
5 м/с — 131,5
6 м/с — 63,3
7 м/с — 32,5
8 м/с — 15,4
9 м/с — 9,1
10 м/с — 5,0
11 м/с — 3,5
12 м/с — 2,2
13 м/с — 1,3
14 м/с — 0,8
15 м/с — 0,5
16 м/с — 0,5
17 м/с — 0,2
18 м/с — 0,0
19 м/с — 0,1

По результатам за две зимы я увидел что ветры у меня не сильные и ветряк будет не эффективен, поэтому сделал маленький с лопастями по 50см. мощностью в пику 150 Вт. Сделал просто, чтобы хотя бы одна экономная лампочка светила когда свет пропадет.

Теперь немного о Arduino.

Нашел в Интернете схему работы мышки, она наглядно иллюстрирует как работает моя система.

Отталкиваясь от схемы мышки я сделал следующую схемку.

Импульсы поступают с фототранзистора на Arduino, а он воспринимает их как нажатия кнопки.

Алгоритм работы программы таков: Считаем сколько нажатий кнопки произошло за одну секунду вот и имеем частоту вращения. Для того чтобы эту частоту перевести в м/с. еще когда я делал на Атмел я сделал алгоритм расчета частоты в м / с. Выглядел он так:

int ob_per_sec=0; // Переменная в которую попадает частота оборотов в секунду.

int speed_wind=0; // Сюда будет попадать значение после пересчета частоты в м/с.

int speed_wind_max=0; // Сюда попадает максимальное значение показаний ветра м/с.

int speed_wind_2=0; // К-во секунд с начала работы программы со скоростью ветра 2 м/с.

int speed_wind_3=0; // К-во секунд с начала работы программы со скоростью ветра 3 м/с.

int speed_wind_4=0; // К-во секунд с начала работы программы со скоростью ветра 4 м/с.

int speed_wind_5=0; // К-во секунд с начала работы программы со скоростью ветра 5 м/с.

…………………………………………………………..

int speed_wind_22=0; // К-во секунд с начала работы программы со скоростью ветра 22 м/с.

if (ob_per_sec >0 && ob_per_sec<4) { speed_wind=2; speed_wind_2++;}

if (ob_per_sec >4 && ob_per_sec<7) { speed_wind=3; speed_wind_3++; }

if (ob_per_sec >7 && ob_per_sec<11) { speed_wind=4; speed_wind_4++; }

if (ob_per_sec >11 && ob_per_sec<15) { speed_wind=5; speed_wind_5++; }

if (ob_per_sec >15 && ob_per_sec<18) { speed_wind=6; speed_wind_6++; }

if (ob_per_sec >18 && ob_per_sec<23) { speed_wind=7; speed_wind_7++; }

if (ob_per_sec >23 && ob_per_sec<27) { speed_wind=8; speed_wind_8++; }

if (ob_per_sec >27 && ob_per_sec<30) { speed_wind=9; speed_wind_9++; }

…………………………………………………………..

if (ob_per_sec >60 && ob_per_sec<67) { speed_wind=22; speed_wind_22++; }

if (speed_wind> speed_wind_max){ speed_wind_max = speed_wind ;}// проверяем и перезаписываем, если максимальное значение больше чем предыдущее записанное.

И выводим на экран значение.

При необходимости можно затем просмотреть сколько минут дул ветер с определенной скоростью, для этого нужно на экран вывести переменную (с необходимым индексом скорости) speed_wind_№ (но разделить ее на 60, чтобы получились минуты.).

Я у себя в программе сделал так: при нажатии определенной кнопки поочередно выводятся все переменные, от speed_wind_1 до speed_wind_22.

Анемометром называют устройство, использующиеся в метеорологии для показания скорости и направления ветровых волн. Составляющие компоненты: чашечная верхушка, крепко прицепленная к оси прибора, соединяется с механизмом измерения. Когда воздушный поток проходит сквозь приспособление, чашечки или лопасти активизируются и начинают вращаться вокруг осевого столба.

Конструируют метеорологический инструмент, учитывая, для какого конкретного действия он будет предназначен. Анемометр измеряет количество оборотных действий чашечек или лопастей вокруг осевого центра в определенное время, что обычно равняется расстоянию, после этого считается скорость ветровых потоков в средней величине.

В другом случае лопасти или чашечки присоединяются к индукционному тахометру, заряженному электричеством. Здесь скорость ветровых потоков показывается сразу: не нужно дополнительно просчитывать другие величины и наблюдать за меняющейся скоростью.

Вышеописанный прибор можно с легкостью сконструировать в домашних условиях. Статья ниже расскажет читателю, как сделать автоматический Arduino анемометр в домашних условиях.

Шаг 1: Инструмент и периферия для изготовления анемометра на базе Arduino

В таблице ниже перечислены все необходимые компоненты для конструирования и их особенности.

Компонент Особенности
Модуль МПЗ Во всех инструкциях указано, что общая поддержка модуля равняется 25 тысячам фрагментов фраз, звуковых сигналов и мелодичных тонов. Загруженное аудио делится ровно на 255 музыкальных композиций. Встроено 30 уровней для регулирования громкости, а эквалайзер включает в себя 6 режимов обработки.
«Ручной» анемометр Инструмент представляет собой сенсорный датчик, который используется для слежения и оповещения, для человека, занимающегося различными видами спорта, где учитывается дуновение ветра.

Внутрь встроен контроллер, работа которого заключается в отсеивании помех. Следовательно, исходящий сигнал будет надежным и увеличенным по громкости. Через секунду с момента появления ветра датчик запиликает, и на сенсоре высветится показатель.

Корпус сооружения полностью спрятан от попадания влаги. Разъем, куда присоединен шнур питания, также обмотан водонепроницаемым материалом. Само устройство сконструировано с использованием прочного металла. Поэтому такой сенсор не боится плохих погодных условий под открытым небом.

Микропроцессор Ардуино Составляющие компоненты микропроцессора: аппаратная и программная группа. Программируемый код записан на знаменитом языке программирования С++, который был гораздо упрощен до Wiring. В микропроцессор встроена бесплатная среда, в которой любой пользователь может дать жизнь своей программе с помощью кода. Ардуино-среду разработки поддерживают все операционные системы: Виндовс, Мак ОС и Линукс.

Ардуино-платформа «разговаривает» с компьютером с помощью юсб-кабеля. Чтобы микропроцессор работал в автономном режиме, придется приобрести блок питания до 12 В. Однако питание для Ардуино-платформы, кроме юсб адаптера, может осуществляться с помощью батареи. Определение источника производится автоматическим образом.

Норма для питания платы варьируется между 6 и 20 В. Следует учитывать, что если напряжение в электрической сети меньше 7 В, работа микропроцессора становится неустойчива: возникает перегрев, после чего на плате появляются повреждения. Поэтому не стоит верить указанной в инструкции норме питания и выбрать диапазон, начиная с 7 В.

Встроенная в микропроцессор флеш-память равна 32 кБ. Однако 2 кБ потребуется для работы бутлоадера, с помощью которого осуществляется прошивка Ардуино с использованием компьютера и юсб-кабеля. Предназначение флеш памяти в таком случае – сохранение программ и надлежащих статических ресурсов.

В Ардуино платформу также включена СРАМ-память, в которой числится 2 кБ. Предназначение данного вида памяти микропроцессора – сохранение временных сведений в качестве переменных, использующихся в программных кодах. Данную закономерность можно сравнить с оперативной памятью любого компьютерного устройства. Когда платформа отключается от источника питания, оперативная память очищается.

Динамик с мощностью до 3-х Вт Можно купить в любом компьютерном магазине.
Карта с памятью не меньше 32 Гб Аналогично предыдущему пункту.
Резистор на 220 Ом в количестве 2 штуки Такие резисторы отличаются постоянной мощностью в 0,5 ВТ и точностью до 5 процентов. Работа осуществляется под напряжением не более 350 В.
Батарея «Крона» Батарейка «Крона» сделана на алкалайновой основе и отлично работает на 9 В. Инструмент предназначен для управления электронной самодельной аппаратурой, к которой подключаются периферийные устройства наподобие сенсорных или дисплейных датчиков. Выпускает заряженное «чудо» компания из Германии – Ansmann.
Кабель питания для подзарядки батареи Кабель предназначен для того, чтобы заряжать стандартные батарейки «Крона» на 9 В. С одной стороны торчит штекер с плюсовым центром, с другой – разъем для применения батареи.
Провода для соединения схемы «папа-папа» Данные провода отлично соединяют периферийные устройства между собой.
Бредбоард Бредбоард – специальная дощечка, которая создана для прототипирования. Такое устройство не заставит юного электронщика делать множественные спайки, которые обычно требуются для конструирования электронных устройств.
Клеммник в количестве 3 штуки Клеммник – небольшая коробочка для присоединения пары контактов. Расстояние между разъемами контактов равняется 2х3 мм. Оборудование легко установить на макетной плате: все соединительные провода плотно фиксируются и крепко сжимаются.

Шаг 4: Дополнительные примеры

Еще один вариант реализации этого устройства продемонстрировали коллеги из компании ForceTronics. Они сделали видео о том как происходил процесс создания анемометра:

Скетч для микроконтроллера от этой компании ниже:

//*****************Arduino anemometer sketch****************************** const byte interruptPin = 3; //anemomter input to digital pin volatile unsigned long sTime = 0; //stores start time for wind speed calculation unsigned long dataTimer = 0; //used to track how often to communicate data volatile float pulseTime = 0; //stores time between one anemomter relay closing and the next volatile float culPulseTime = 0; //stores cumulative pulsetimes for averaging volatile bool start = true; //tracks when a new anemometer measurement starts volatile unsigned int avgWindCount = 0; //stores anemometer relay counts for doing average wind speed float aSetting = 60.0; //wind speed setting to signal alarm void setup() { pinMode(13, OUTPUT); //setup LED pin to signal high wind alarm condition pinMode(interruptPin, INPUT_PULLUP); //set interrupt pin to input pullup attachInterrupt(interruptPin, anemometerISR, RISING); //setup interrupt on anemometer input pin, interrupt will occur whenever falling edge is detected dataTimer = millis(); //reset loop timer } void loop() { unsigned long rTime = millis(); if((rTime — sTime) > 2500) pulseTime = 0; //if the wind speed has dropped below 1MPH than set it to zero if((rTime — dataTimer) > 1800){ //See if it is time to transmit detachInterrupt(interruptPin); //shut off wind speed measurement interrupt until done communication float aWSpeed = getAvgWindSpeed(culPulseTime,avgWindCount); //calculate average wind speed if(aWSpeed >= aSetting) digitalWrite(13, HIGH); // high speed wind detected so turn the LED on else digitalWrite(13, LOW); //no alarm so ensure LED is off culPulseTime = 0; //reset cumulative pulse counter avgWindCount = 0; //reset average wind count float aFreq = 0; //set to zero initially if(pulseTime > 0.0) aFreq = getAnemometerFreq(pulseTime); //calculate frequency in Hz of anemometer, only if pulsetime is non-zero float wSpeedMPH = getWindMPH(aFreq); //calculate wind speed in MPH, note that the 2.5 comes from anemometer data sheet Serial.begin(57600); //start serial monitor to communicate wind data Serial.println(); Serial.println(«……………………………..»); Serial.print(«Anemometer speed in Hz «); Serial.println(aFreq); Serial.print(«Current wind speed is «); Serial.println(wSpeedMPH); Serial.print(«Current average wind speed is «); Serial.println(aWSpeed); Serial.end(); //serial uses interrupts so we want to turn it off before we turn the wind measurement interrupts back on start = true; //reset start variable in case we missed wind data while communicating current data out attachInterrupt(digitalPinToInterrupt(interruptPin), anemometerISR, RISING); //turn interrupt back on dataTimer = millis(); //reset loop timer } } //using time between anemometer pulses calculate frequency of anemometer float getAnemometerFreq(float pTime) { return (1/pTime); } //Use anemometer frequency to calculate wind speed in MPH, note 2.5 comes from anemometer data sheet float getWindMPH(float freq) { return (freq*2.5); } //uses wind MPH value to calculate KPH float getWindKPH(float wMPH) { return (wMPH*1.61); } //Calculates average wind speed over given time period float getAvgWindSpeed(float cPulse,int per) { if(per) return getWindMPH(getAnemometerFreq((float)(cPulse/per))); else return 0; //average wind speed is zero and we can’t divide by zero } //This is the interrupt service routine (ISR) for the anemometer input pin //it is called whenever a falling edge is detected void anemometerISR() { unsigned long cTime = millis(); //get current time if(!start) { //This is not the first pulse and we are not at 0 MPH so calculate time between pulses // test = cTime — sTime; pulseTime = (float)(cTime — sTime)/1000; culPulseTime += pulseTime; //add up pulse time measurements for averaging avgWindCount++; //anemomter went around so record for calculating average wind speed } sTime = cTime; //store current time for next pulse time calculation start = false; //we have our starting point for a wind speed measurement }

Велокомпьютер

Узел вращения собран. Теперь необходимо подумать об установке датчика вращения и о креплении узла. В качестве датчика оптимально применить геркон, срабатывающий от магнита, закрепленного на вращающемся узле. Частоту импульсов вращения можно преобразовать в оценку скорости ветра при помощи аналоговых или цифровых схем. Но можно пойти более простым путём – использовать велокомпьютер.

Установим в анемометр датчик велокомпьютера

1. Приклеим магнит

Магнит приклеен

Магнит извлечен

на вращающейся части узла. Во время крепления можно заодно провести работу по балансировке узла вращения. Магнит применен от комплекта велокомпьютера, единственно он вынут из пластмассового контейнера с помощью которого он крепится на спицах велосипеда. Балансировка необходима для устранения биений при вращении анемометра и как следствие раскачивания шеста и появления посторонних звуков в узлах крепления.

2. Просверлим в неподвижной части

Датчик установлен

Отверстие 7мм

узла отверстие диаметром 7мм и закрепим клеем герконовый датчик велокомпьютера в пластмассовом корпусе. При вклеивании датчика я собрал узел, положил на магнит кусочек картона толщиной 1мм, вставил датчик смазанный клеем в нужном месте в отверстие до касания с картоном и дополнительно промазал клееем. Такой способ установки датчика позволяет сохранить минимальный зазор между магнитом и датчиком и обеспечить надежное его срабатывание.

3. Проверяем работу узла на отсутствия касаний и по надежности срабатывания датчика (проверяем тестером).

Установка анемометра

Анемометр лучше установить на длинный шест вдали от построек или на крышу дома. При монтаже продумываем все действия, готовим инструмент и крепежный материал. Полезно провести установку шеста без анемометра, сделать крепежные отверстия и отверстия для проходки кабеля. Закрепляем анемометр на шесте и аккуратно монтируем конструкцию. Пропускаем кабель внутрь здания и подключаем велокомпьютер.

В каждом простом велокомпьютере есть опции по замеру максимальной скорости, средней скорости за весь пробег, средней скорости за заданный период. Использование этих опций позволит замерить в месте установки анемометра максимальную скорость ветра, среднюю скорость ветра за период и за всё время его работы. Фрагмент работы самодельного анемометра показан на видео.

Анемометр – прибор для измерения скорости ветра. Классический чашечный анемометр представляет собой чисто механический прибор, способный измерять скорость ветра в диапазоне от 2 до 20 м/с. Анемометр просто подсчитывает количество оборотов крыльчатки. Для определения скорости ветра надо отмерить количество оборотов за некоторый промежуток времени, например 30 с, а затем рассчитать количество делений которые проходит стрелка анемометра за 1 с. После этого для определения скорости ветра следует воспользоваться графиком.

Сконструировать его аналог проще всего на основе маломощного электромотора, например ДМ-03-3АМ 3 91, который выступает в роли генератора. Четырехлопастная крыльчатка анемометра взята готовая, приобретена на Aliexpress примерно за 1 доллар.

Диаметр крыльчатки 10 см, а высота 6 см.

Электромотор располагается в корпусе, сделанном из емкости для холодной сварки, в крышке которой прорезано отверстие для вала электродвигателя и ведущих от двигателя проводов.

К электродвигателю подключен диодный мост VD1 собранный на диодах Шоттки 1N5817. На выходе диодного моста подключен электролитический конденсатор C1 1000 мкФ х 16 В.