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

Опубликовано 17.09.2013 21:06:00


Автор: roman2205

   

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

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

Размеры анемометра

 

 

 

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

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

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

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

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

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

Детали для сборки анемометра

Детали для сборки анемометра

 

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

Внешний вид анемометра

 

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

Собранный анемометр


 

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

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

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

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

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

Плата собирающая данные с датчика ветра

плата

 

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

Вывод информации о скорости ветра на LCD Keypad Shield

 

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


 

Видео работы


 

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

с-сть --- часов за зиму
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

speed_wind_max

 

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

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


А как же комментарии?