Самодельный анемометр для измерения скорости ветра. "раннее развитие детей" - мастерская -делаем поделки вместе с детьми Самодельный анемометр для метеостанции

Метеостанция построена на Picaxe микроконтроллере от Revolution Education Ltd и состоит из двух основных частей: наружный блок, который посылает свои данные каждые 2 секунды, используя передатчик на частоте 433МГц. И внутренний блок, который отображает полученные данные на 20 х 4 ЖК-дисплее, а также атмосферное давление, которое измеряется локально во внутреннем блоке.

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

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

Уличные датчики

Датчики используются для измерения температуры, влажности, осадков, направления и скорости ветра. Датчики представляют собой сочетание механических и электронных устройств.

Датчик температуры и относительной влажности воздуха

Измерение температуры, пожалуй, проще всего. Для это используется датчик DS18B20. Для измерения влажности был использован HIH-3610, выдающий напряжение 0.8 - 3.9В при влажности 0% до 100%

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

Упрощенный код для каждого из датчиков приведен ниже. Более точный код, который считывает значения с точностью до одной десятой, показан на сайте Питера Андерсона . Его код используется в окончательном варианте метеостанции.

Датчик температуры обеспечивает точность ± 0.5 °C. Датчик влажности обеспечивает точность до ± 2%, так что это не очень важно, сколько знаков доступно после запятой!

Пример участка из программного обеспечения, работающего на ПК.

Температура

Main: readtemp B.6, b1 ; read value into b1 if b1 > 127 then neg ; test for negative sertxd (#b1, cr, lf) ; transmit value to PE terminal pause 5000 goto main neg: b1 = b1 - 128 ; adjust neg value sertxt ("-") ; transmit negative symbol sertxt (#b1, cr, lf) ; transmit value to PE terminal pause 5000 goto main

Влажность

Main: readadc B.7,b1 ; read humidity value b1 = b1 - 41 * 100 / 157 ; change to %RH sertxd (#b1, "%", cr, lf) pause 5000 ; wait 5 seconds goto main

Расчет показаний датчика влажности

Расчеты взяты из документации датчика Honeywell HIH-3610. На графике показывана стандартная зависимость при 0 °C.

Напряжение с датчика измеряется на входе АЦП (B.7) микроконтроллера Picaxe 18M2. В коде, показанном выше, значение, которое представлено в виде числа от 0 до 255 (т.е. 256 значений), хранится в переменной b1.

Наша схема питается от 5В, так что каждый шаг АЦП равен:
5/256 = 0.0195 В.

На графике видно начально значение АЦП 0.8 В:
0.8 / 0.0195 = 41

Взяв значения из графика, наклон графика (с учетом смещения) примерно:
Напряжение выхода / % относительной влажности или
(2.65 - 0.8) / 60 = 0.0308 В в% RH
(В документации 0.0306)

Рассчитаем кол-во шагов АЦП на 1% влажности:
(В на % RH) / (шаг АЦП)
0.0308 / 0.0195 = 1.57

% RH = значение с АЦП - смещение АЦП / (шаги АЦП в % RH), или
% RH = значение с АЦП - 41 / 1.57

Итоговая формула расчет для микроконтроллера будет выглядеть: % RH = значение с АЦП - 41 * 100/157

Защитный корпус

Начните с разрезания каждой панели на две части. Планки на одной части будут крепко прикреплены с двух сторон, а на второй части только с одной стороны. Не выбрасывайте эти части - они используются.

К целым частям прикрепите два деревянных бруска 20мм х 20мм сверху и с низу, и прикрутите к ним другие части.

Обрежьте одну из частей с одной целой стороной по размеру и приклейте ее к внутренней стороне одной из сторон. Убедитесь, что планки приклеены так, что образуют вместе "^" форму. Сделайте так со всеми сторонами.

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

Механическая часть

Датчики скорости и направления ветра представляют собой сочетание механических и электронных компонентов. Механическая часть идентична для обеих датчиков.

12мм вставка из фанеры (marine ply) находится между трубой из ПВХ и диском из нержавеющей стали в верхнем конце трубы. Подшипник приклеен к диску из нержавеющей стали и удерживается нержавеющей пластиной.

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

Остальные три отверстия на фотографии предназначены для лопастей. Лопасти длиной 80 мм дают радиус поворота 95мм. Чашки 50 мм в диаметре. Для них я использовал обрезанные флаконы от одеколона, которые имеют почти сферическую форму. Я не уверен в их надёжности, поэтому сделал их легкозаменяемыми.

Электронная часть

Электроника для датчика скорости ветра состоит только из транзисторного ключа, фотодиода и двух резисторов. Они монтируются на небольшой круглой ПП диаметром 32мм. Они установлены в трубе свободно, чтобы влага в случае её попадания стекала вниз не задевая электронику.

Анемометр - один из трех датчиков, который необходимо откалибровать (два других – счетчик осадков и датчик атмосферного давления)

Фотодиод обеспечивает два импульса за один оборот. В простой «последовательной» системе, к которой я стремился (все датчик опрашиваются поочередно), должен быть компромисс между длиной времени, затрачиваемого на опрос каждого датчика (в данном случае, подсчет импульсов) и отзывчивость системы в целом. В идеале, на полный цикла опроса всех датчиков должно уйти не более 2-3 секунд.

На фото выше проверка датчика при помощью мотора с регулируемыми оборотами.

; LCD-specific commands shown in blue hsersetup B9600_4, %10000 ; Use LCD Pin 1, no hserin hserout 0, (13) : pause 100 ; Initialize LCD hserout 0, (13) : pause 100 hserout 0, (13) : pause 100 pause 500 hserout 0, ("ac1", 13) ; Clear display pause 50 hserout 0, ("acc", 13) hserout 0, ("ac81", 13, "adcount: ", 13) ; Print the headings pause 10 hserout 0, ("ac95", 13, "adpulsin: ", 13) ; Print the headings pause 10 do count C.2, 1000, w0 ; Count the pulses (two per rev) w1 = 0 for b8 = 1 to 2 ; Measure pulse length twice pulsin C.2, 1, w2 ; per rev and... w1 = w1 + w2 next w1 = w1 / 2 ; ...calculate average hserout 0, ("ac89", 13, "ad ", #w0, " ", 13) ;Print the count value hserout 0, ("ac9d", 13, "ad ", #w1, " ", 13) ;Print the pulse-length value pause 100 loop

Я хотел откалибровать его при движении на автомобиле, но на это не было времени. Я живу в относительно плоской местности с аэропортом в нескольких километрах рядом, поэтому я калибровал датчик, сравнивая мои показания скорости ветра с показаниями аэропорта.

Если бы мы имели 100% КПД и лопасти вертелись-бы со скоростью ветра, то:
Радиус ротора = 3.75"
Диаметр ротора = 7.5" = 0.625 фута
Длина окружности ротора = 1.9642 фута

1 фут/мин = 0.0113636 м/ч,
1.9642 фут/мин = 1 об = 0.02232 м/ч
1 м/ч = 1 / 0.02232 об

1 м/ч = 44.8 об
? м/ч = об / 44.8
= (об/мин * 60) / 44.8

Поскольку за поворот выходит два импульса
? м/ч = (импульсов в секунду * 30) / 44.8
= (импульсов в секунду) / 448

Датчик направления ветра - механическая часть

В датчике направления ветра, вместо алюминиевой пластины используется магнит, а вместо оптоэлектронного узла - специальная микросхема AS5040 (магнитный энкодер).

На фото ниже показан 5мм магнит, установленный на торце центрального винта. Выравнивание магнита относительно микросхемы очень важно. Магнит должен быть точно по центру на высоте около 1мм над микросхемой. Как только все будет точно выровнено, датчик будет работать правильно.

Датчик направления ветра - электронная часть

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

Оба метода имеют свои преимущества и недостатки. Основным преимуществом является то, что они оба просты в реализации. Недостатком является то, что они подлежат износу - особенно потенциометры. Альтернативой использованию герконов будет использовать датчика Холла для решения механического износа, но они по-прежнему ограничиваются 8 различными позициями... В идеале, я хотел бы попробовать что-то другое и в конечном счете решил о - поворотном магнитном датчике IC. Хотя это устройство для поверхностного монтажа (которого я стараюсь избегать), оно имеет ряд преимуществ, которые делают ее использование привлекательным!

Он имеет несколько различных форматов вывода, два из которых наиболее подходит для нашей цели. Наилучшая точность достигается с помощью SSI интерфейса. AS5040 выдает импульсы длиной от 1 мкс при 0° и до 1024 мкс при 359,6°

Проверка калибровки датчика направления ветра:

Do readadc10 B.3, w0 ;Read from AS5040 magnetic bearing pause 100 w0 = w0 * 64 / 182 ; Convert to 0 - 360 (degrees) debug ; Display in Prog/Edit debug window loop

Измеритель уровня осадков

Насколько это возможно, я сделал дождемер из пластика и нержавеющей стали, основание сделано из алюминия толщиной 3 мм для жесткости.

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

На данный момент, я оставил его с прозрачными стенками (потому что интересно наблюдать это работает!). Но я подозреваю, что нужно покрасить его белой краской, чтобы отражать тепло летом, во избежание испарения. Я не мог найти маленькую воронку, поэтому пришлось сделать её самому. Обратите внимание на проволоку внутри воронки и по центру желоба. Это поможет остановить поверхностное натяжение воды в воронке и помогает капать воде. Без проволоки, дождь имел бы тенденцию к "водовороту", и его траектория была-бы непредсказуемой

Оптодатчики крупным планом:

Электронная часть дождемера

Из-за случайного характера работы датчика, программное прерывание в микроконтроллере наружного блока, казалось, логичный подход. К сожалению, некоторые команды программы, отключают механизм прерываний в то время, как они выполняются, т.о. есть вероятность, что сигнал придет в никуда. По этим причинам, дождемер имеет собственный микроконтроллер 08М Picaxe.

Использование отдельного чипа позволяет использовать его для создания достаточно точной 1-часовой задержки для того, чтобы считать ведра в час.

Калибровка

Picaxe 18м2 получает текущее количество ведерок в час и выводит его на дисплей и компьютер.

В качестве отправной точки, я использую следующие данные:
Воронка диаметров 120мм и емкость площадью 11,311мм2
1 мм дождя = 11,311мм3 или 11,3 мл.
Каждое ведро это 5,65 мл. Таким образом, 2 ведра 2 х 5,65 = 11,3 мл (или 1 мм) осадков. Одно ведро = 0,5 мм осадков.

Для сверки, я купил дешевый стакан для измерения осадков.

Для вышеприведенной схемы и схемы 08М Picaxe для датчика используется одна и та же топология печатной платы. Устройство питается от аккумулятора 12V 7Ah через стабилизатор 7805.
Я использовал набор RF Connect kit для беспроводной связи на 433 МГц. Комплект содержит пару специально запрограммированных PIC контроллеров. Комплект беспроводных модулей в ходе испытаний зарекомендовал себя как достаточно надежный.

На ПП установлен 08М Picaxe и 18м2. Каждый из них имеет свой собственный разъем программирования. Отдельные разъемы, каждый со своим +5 В, предназначены для каждого датчика - за исключением температуры и влажности.

Обратите внимание, что я нарисовал чертёж в Paintshop Pro поэтому я не могу гарантировать точность расстояния между выводами.

Внутренний блок

Во внутреннем блоке используетя 18м2 Picaxe, датчик давления и ЖК-дисплей. Также есть стабилизатор напряжения 5В.

Датчик давления

После нескольких неудачных попыток, я остановился на MPX4115A. Хотя другие датчики имеют диапазон измерения немного больше, они труднодоступны. Кроме того, другие датчики, как правило, работают от 3,3В и требуют дополнительный стабилизатор. MPX4115A выдает аналоговое напряжение от 3,79 и до 4,25В пропорционально давлению. Хотя это почти достаточное разрешение для обнаружения 1 мбар изменения давления, после некоторого обсуждения на форуме, я добавил АЦП MCP3422. Он может работать в 16-битном режиме (или выше) по сравнению с 10-битном режиме Picaxe. MCP3422 может быть связан (как в нашей схеме) в дифференциальный режим с аналоговым входом от датчика. Основным преимуществом является то, что это позволяет корректировать выход датчика, тем самым легко компенсировать ошибки MPX4115A и обеспечить простой способ калибровки датчика.

MPC3422 на самом деле имеет два дифференциальных входа, но так-как один не используется они замкнуты. Выход из MCP3422 имеет интерфейс I2C и соединяется с SDA и SCL контактам на 18м2 Picaxe – выводы B.1 и B.4 соответственно. С моей точки зрения, единственный недостаток в использовании MCP3422 том, что это небольшое устройство для поверхностного монтажа, но я его припаял к адаптеру. В дополнение к I2C интерфейсу MCP3422 18м2 просто обрабатывает поступающие данные из 433МГц беспроводной приемник, выводит данные на дисплей и передает данные на ПК. Для того чтобы избежать ошибок внутреннего блока когда компьютер не работает, нет никаких ответов от ПК. Внутренний блок передает данные и идет дальше. Он передает данные приблизительно в 2-секундным интервалом, чтобы потери данных быстро компенсировались следующий раз. Я использовал незадействованные порты на 18м2 для подключения кнопки на передней панели. Переключатель S1 (вход С.5) используется для включения подсветки ЖК-дисплея. Переключатель S2 (вход C.0) сбрасывает значение давления (мбар) на ЖК-дисплее. Переключатель S3 (вход C.1) переключает осадки отображаемые на ЖК-дисплее между общим в предыдущий час и текущими. Кнопки необходимо удерживать более 1 секунды для их реакции.

Сборка внутреннего блока

Как и в печатной плате для наружного блока, я нарисовал макет вручную с помощью Paintshop Pro, так что в расстояниях могут быть ошибки

Плата немного больше, чем это необходимо, чтобы вписаться в пазы в алюминиевом корпусе.
Я сознательно сделал разъем для программирования немного "внутрь" от края платы, чтобы предотвратить его прикосновение к корпусу. Вырез для ЖК-дисплея производится высверливание и подгонкой до точных размеров.

На фото показано всё уже установленное в корпус.

Штырьки на плате делают сложным её установку в корпус, поэтому мне пришлось отпаять их и припаять дисплей к плате проводами.

Внешний блок - код Picaxe

; ================================================================== ; Main 18M2 code for the Picaxe Weather Station Outdoor (Transmitter) Unit ; Decimal precision Humidity & Temperature routines, ; copyright, Peter H Anderson, Baltimore, MD, Jan, "04 ; ; ================================================================== #Picaxe 18M2 Symbol HValue = w0 Symbol HighWord = w1 Symbol LowWord = w2 Symbol RH10 = w3 Symbol HQuotient = b0 Symbol HFract = b1 Symbol X = b0 Symbol aDig = b1 Symbol TFactor = b2 Symbol Tc = b3 Symbol SignBit = b4 Symbol TValue = w4 Symbol TQuotient = b10 Symbol TFract = b11 Symbol TempC_100 = w6 Symbol MagDir = w7 Symbol MagDirLo = b14 Symbol MagDirHi = b15 Symbol WindSpeed = w8 Symbol WindSpeedLo = b16 Symbol WindSpeedHi = b17 Symbol ThisHour = b18 Symbol LastHour = b19 Symbol RainRequest = b20 ; Hardware Symbol HumidRaw = B.7 Symbol TempRaw = B.6 Symbol DirRaw = B.3 Symbol Speed = B.0 do ; Read Humidity ReadADC10 HumidRaw, HValue ;Get Humidity (HValue) HighWord = 1613 ** HValue ; calculate RH LowWord = 1613 * HValue RH10 = LowWord / 1024 LowWord = Highword * 64 RH10 = RH10 + LowWord RH10 = RH10 - 258 pause 100 ; Read temperature Readtemp12 TempRaw, TValue ; Get temperature SignBit = TValue / 256 / 128 if SignBit = 0 then positive ; It"s negative so TValue = TValue ^ $ffff + 1 ; take twos comp positive: TempC_100 = TValue * 6 ; TC = value * 0.0625 TValue = TValue * 25 / 100 TempC_100 = TempC_100 + TValue TQuotient = TempC_100 / 100 TFract = TempC_100 % 100 / 10 X = TQuotient / 10 ; Calculate temperature correction factor for Humidity if SignBit = 0 then SignBit = " " else SignBit = "-" endif if SignBit = "-" then X = 4 - X else X = X + 4 endif GoSub TempCorrection ; compensate RH HQuotient = RH10 / 10 ; Calculate RH Quotient and... HFract = RH10 % 10 ; ...decimal place. if HQuotient > 99 then ; Over range HQuotient = 99 HFract = 9 endif if HQuotient > 127 then ; Under range HQuotient = 0 HFract = 0 endif ; Read AS540 magnetic encoder for wind direction readadc10 DirRaw, MagDir ; Read from AS5040 magnetic bearing pause 100 ; Read rpm from windspeed counter count Speed, 1000, WindSpeed ; Every 30th cycle (approx 1 minute), request rain gauge data from 08M inc RainRequest if RainRequest >= 30 then high C.1 serin , C.0, N2400, ("r"), LastHour, ThisHour ; Rain counters low C.1 RainRequest = 0 endif ; Send data to Indoor Unit in 8 byte blocks ; First group needs no calibration so calculations are done here first. ; Second group will need "tweaking" - more easily done at indoor end. serout C.2, N2400, ("t", SignBit, TQuotient, TFract, HQuotient, HFract, "A", "B") pause 100 serout C.2, N2400, ("m", MagDirHi, MagDirLo, WindSpeedHi, WindSpeedLo, LastHour, ThisHour, "C") loop TempCorrection: Lookup X, (87, 89, 91, 93, 95, 97, 99, 101, 103, 106, 108, 110, 113, 116, 119, 122, 126), TFactor " -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 if TFactor < 100 then aDig = TFactor / 10 RH10 = RH10 * aDig / 10 TFactor = TFactor % 10 aDig = TFactor RH10 = RH10 * aDig / 100 + RH10 else TFactor = TFactor % 100 aDig = TFactor / 10 RH10 = RH10 * aDig / 10 + RH10 TFactor = TFactor % 10 aDig = TFactor RH10 = RH10 * aDig / 100 + RH10 endif return

Использовано памяти = 295 байт из 2048

Счетчик количества осадков - 08M код

#picaxe 08M Symbol ThisHour = b2 ; Store the current sensor count in b2 Symbol LastHour = b3 ; Save the previous hour"s count in b3 ;Hardware definitions Symbol DataRequest = pin3 Symbol BucketSensor = pin4 setint %00010000, %00010000 ; pin4 is interrupt pin main: for w0 = 1 to 60000 ; Loop for 1 hour pause 60 next LastHour = ThisHour ; Update Last hour"s count with ThisHour = 0 ; current hour & reset current hour goto main ; Do the next hour interrupt: setint %00010000, %00010000 ; Re-instate interrupt if DataRequest = 1 then ; Was the interrupt from the 18M2 ? serout 2, N2400, ("r", LastHour, ThisHour) ; Yes, so send previous hour"s count & curent count. do: loop while DataRequest = 1 ; Wait until 18M2 stops requesting before continuing endif if BucketSensor = 1 then ; Was the interrupt from the rain sensor? inc ThisHour ; Yes, so increment bucket-tip count do: loop while BucketSensor = 1 ; Make sure flag has cleared sensor before continuing endif return

Внутренний блок - код Picaxe

;============================================================================ ; Main Indoor (Receiver) Program. ; ; Receives data from outdoor unit, displays on LCD and passes data on to PC ; Also measures the barometric pressure (thanks to "matherp") ;============================================================================ #PICAXE 18M2 ; Variable Definitions (b2 to b5 are re-used for mBar code when they become available) symbol Quotient = b2 symbol Fract = b3 symbol SignBit = b4 symbol Humidity = b5 symbol HFract = b14 symbol Dir = w5 symbol DirLo = b10 symbol DirHi = b11 symbol Speed = w3 symbol SpeedLo = b6 symbol SpeedHi = b7 symbol RainCountThisHour = b12 symbol RainCountLastHour = b13 symbol LCDRainWhole = b21 symbol LCDRainFract = b22 symbol LastOrThis = b23 ; MCP3422 ADC variables symbol mb900 = 17429 ; ADC reading for 900Mbar, then add 72.288 counts per mbar symbol adj0 = 72 symbol mBarADCValue = w0 symbol adj1 = b4 ; used to add 1 count every 4 mbar symbol adj2 = b5 ; used to add 1 count every 24 mbar symbol mBar = w4 ; Housekeeping variables symbol lastmbar = w8 ; Remember previous mBar reading symbol RiseFall = b18 ; Indicator for pressure rising or falling (up arrow or down arrow) symbol active = b19 ; Telltale shows activity on LCD screen symbol LCD_Status = b20 ; Is LCD Backlight on or off (0 or 1)? ; Hardware Definitions symbol Wireless = C.7 ; Incoming connection from Wireless receiver/decoder symbol Computer = C.2 ; Outgoing serial connection to computer symbol LCD = pinC.5 ; Front-panel button to blank / unblank LCD backlight symbol ClearRiseFall = pinC.0 ; Front-panel button to clear pressure "rising / falling" indicator symbol LastOrThisSwitch = pinC.1 ; Front-panel button to display current or previous hour"s rainfall Init: hsersetup B9600_4, %10000 ; Use LCD Pin 1, no hserin ; ByVac 20x4 IASI-2 Serial LCD hi2csetup i2cmaster, %11010000, i2cfast, i2cbyte ; Initialize I2C for MCP3422 ADC chip. hi2cout (%00011000) ; set MCP3422 for 16 bit continuous conversion pause 500 hserout 0, (13) : pause 100 ; Initialize LCD hserout 0, (13) : pause 100 hserout 0, (13) : pause 100 pause 500 hserout 0, ("ac50", 13) hserout 0, ("ad", 32, 32, 32, 32, 49, 42, 36, 32, 13) ; Define down arrow character (char 10) hserout 0, ("ac1", 13) ; Clear display pause 50 hserout 0, ("acc", 13) ; Hide cursor hserout 0, ("ac81", 13, "ad ", $df, "C", 13) ; Print the headings hserout 0, ("ac88", 13, "admBar", 13) hserout 0, ("ac8e", 13, "adRH %", 13) hserout 0, ("acd5", 13, "ad", "dir", 13) ; Print footings hserout 0, ("acdc", 13, "ad", "mph", 13) ; hserout 0, ("ace3", 13, "ad", "mm", 13) lastmbar = 0 ; Initialize variables LastOrThis = "c" ;========================================================================== ; Main Loop ;========================================================================== main: ; Check if a front-panel switch is pressed. The Picaxe interrupt mechanism is ; almost permanently disabled due to the large number of serin and serout commands ; so sprinkling the program with "gosub switches" to check the switch status is more ; effective that interrupts. gosub switches ; Get first group of values from outdoor unit via 433MHz radio link. serin Wireless, N2400, ("t"), SignBit, Quotient, Fract, Humidity, HFract, b15, b15 ; Flash "telltale" on LCD to indicate activity and successful "serin" from wireless. gosub telltale ; Display first group on LCD hserout 0, ("acc0", 13) hserout 0, ("ad", SignBit, #Quotient, ".", #Fract, " ", 13) hserout 0, ("acce", 13) hserout 0, ("ad", #Humidity,".", #HFract, " ", 13) gosub switches ; Send first group to computer COM port ; Each group has a start identifier, data and an end identifier: ; Start = "xS", End is "xE" eg Wind Start is WS, Wind End is WE ; Multiple data are separated by a single space character. serout Computer, N2400, ("TS", SignBit, #Quotient," ", #Fract, "TE") ; Temperature serout Computer, N2400, ("HS", #Humidity, " ", #HFract, "HE") ; Humidity ; Check switches again and at regular intervals throughout program. gosub switches ; Get second group of values from outdoor unit radio link. serin Wireless, N2400, ("m"), DirHi, DirLo, SpeedHi, SpeedLo, RainCountLastHour, RainCountThisHour, b15 gosub telltale Speed = Speed * 300 / 448 ; Estimated conversion from pulses/sec to mph Dir = Dir * 64 / 182 ; Convert 0 - 1023 to 0 - 359 degrees ; To preserve precision, rain gauge has to be calibrated by adjusting the ; mechanical stops on the tipping bucket so that 1 tip is 0.5 mm of rain. if LastOrThis = "c" then ; Decide whether to display previous hour"s LCDRainWhole = RainCountThisHour / 2 ; rainfall or the current hour"s. LCDRainFract = RainCountThisHour * 5 // 10 else LCDRainWhole = RainCountLastHour / 2 ; LCDRainFract = RainCountLastHour * 5 // 10 endif ; Send second group to LCD hserout 0, ("ac95", 13) hserout 0, ("ad", #Dir, " ", 13) hserout 0, ("ac9c", 13) hserout 0, ("ad", #Speed, " ", 13) hserout 0, ("aca1", 13) hserout 0, ("ad", LastOrThis, " ", #LCDRainWhole, ".", #LCDRainFract, " ", 13) ; Send second group to computer COM port serout Computer, N2400, ("WS", #Dir," ", #Speed, "WE") ; Wind serout Computer, N2400, ("RS", #RainCountLastHour," ", #RainCountThisHour, "RE") ; Rain gosub switches ; Thanks to "matherp" on the Picaxe forum for the mbar code loop: ; Measuring atmosperic pressure with a MPX4115A ; Analogue to digital conversion using a MCP3422 ; MPX output to V+, 2.5V to V- ; ADC in 16 bit mode hi2cin (b1,b0,b2) ; Read in the ADC reading and the status byte from MCP3422 adj1 = 0 adj2 = 0 w1 = mb900 mbar = 900 do while mBarADCValue > w1 ; mBarADCValue = w0 = b1:b0 inc mbar w1 = w1 + adj0 inc adj1 if adj1 = 4 then inc adj2 w1 = w1 + 1 adj1 = 0 endif if adj2 = 6 then w1 = w1 + 1 adj2 = 0 endif loop gosub switches gosub telltale ; Send pressure to computer COM port serout Computer, N2400, ("PS:", #mbar, "PE") ; Initialize previous pressure reading (lastmbar) if not already set if lastmbar = 0 then lastmbar = mbar RiseFall = " " endif ; Display up arrow or down arrow if pressure has changed if mbar > lastmbar then RiseFall = "^" ; ^ lastmbar = mbar endif if mbar < lastmbar then RiseFall = 10 ; Custom LCD character. Down arrow lastmbar = mbar endif hserout 0, ("acc7", 13) hserout 0, ("ad", RiseFall, #mbar, " ",13) gosub telltale goto main ; Check if one of the front panel buttons is pressed. switches: if LCD = 1 then ; LCD Backlight on/off Button is pressed if LCD_Status = 0 then ; Backlight is on so... hserout 0, ("ab0", 13) ; Turn it off LCD_Status = 1 else hserout 0, ("ab1", 13) ; Else turn it on. LCD_Status = 0 endif do: loop while LCD = 1 ; Don"t return while button is pressed endif if ClearRiseFall = 1 then ; Pressure rise/fall button is pressed RiseFall = " " ; Clear indicator and... hserout 0, ("acc7", 13) ; ... update display. hserout 0, ("ad", RiseFall, #mbar, " ",13) do: loop while ClearRiseFall = 1 endif if LastOrThisSwitch = 1 then ; Rain Previous Hour / Last Hour button. if LastOrThis = "c" then LastOrThis = "p" LCDRainWhole = RainCountLastHour / 2 ; Recalculate values and re-display to LCDRainFract = RainCountLastHour * 5 // 10 ; give visual confirmation of button-press else LastorThis = "c" LCDRainWhole = RainCountThisHour / 2 ; LCDRainFract = RainCountThisHour * 5 // 10 endif hserout 0, ("aca1", 13) hserout 0, ("ad", LastOrThis, " ", #LCDRainWhole, ".", #LCDRainFract, " ", 13) do: loop while LastOrThisSwitch = 1 endif return ; Flash "tell-tale" on LCD display to show activity telltale: if active = "*" then active = " " else active = "*" endif hserout 0, ("ac80", 13, "ad", active, 13) return

Использовано памяти = 764 байт из 2048

Программное обеспечение для ПК

Программное обеспечение, работающее на ПК было написано с использованием Borland Delphi 7. Оно довольно примитивно в его нынешнем виде, но это, по крайней мере, показывает связь Picaxe с компьютером.

Графики могут быть выбраны для показа в период 1 час или 12 часов. Графики можно прокручивать вперёд-назад с помощью мышки. Они могут быть сохранены. Для этого необходимо кликнуть по ним правой кнопкой мыши и указать имя и файл значения. Можно настроить ограниченный набор APRS данных, записываемых раз в минуту на одну строку файла APRS.TXT и которые сохраняются в той же папке, где находится Weather.exe. Отмечу, что температура в градусах по Фаренгейту и осадки в 1/100ths на дюйм.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Датчик температуры и относительной влажности воздуха
Датчик температуры

DS18B20

1 В блокнот
Датчик влажности HIH-3610 1 В блокнот
Резистор

4.7 кОм

1 В блокнот
Измеритель скорости и направления ветра
Фототранзистор ИК 1 В блокнот
Светодиод ИК 1 В блокнот
Резистор

220 Ом

1 В блокнот
Резистор

4.7 кОм

1 В блокнот
Магнитный энкодер 1 В блокнот
Электролитический конденсатор 10 мкФ 4 В блокнот
Конденсатор 100 нФ 1 В блокнот
Резистор

4.7 кОм

1 В блокнот
Резистор

10 кОм

1 В блокнот
Измеритель уровня осадков
МК PICAXE

PICAXE-08M

1 В блокнот
Выпрямительный диод

1N4148

2 В блокнот
Конденсатор 100 нФ 1 В блокнот
Резистор

4.7 кОм

1 В блокнот
Резистор

10 кОм

4 В блокнот
Резистор

22 кОм

1 В блокнот
Резистор

220 Ом

2 В блокнот
Светодиод ИК 1

Однажды столкнулся с вопросом, как можно определить, есть ли ветер в том месте, где он живет. Такой вопрос возник из-за того, что он хотел поставить ветряк для генерации электричества. С помощью этого хитроумного приспособления можно сделать замеры, как часто бывает ветер, с какой средней скоростью он дует и так далее. В качество основы для сбора и обработки информации лежит плата Arduino .

Материалы и инструменты для изготовления анемометра:
- кусок квадратной трубы;
- болгарка;
- сварка;
- подшипник;
- развертка;
- гвозди;
- краска;
- светодиодиодно-фототранзисторный датчик (можно вытащить из принтера);
- схема Arduino;
- минимальный набор инструмента.

Процесс изготовления:

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


Далее заготовка зажимается в тиски и диаметром сверла на 0.5 мм меньше, чем диаметр подшипника в нижней крышке и середине сверлится отверстие. Оба они нужны для подшипников. Чтобы подшипники встали на места с натяжкой, размер отверстий подгоняется разверткой. После того как подшипники были установлены, в них был вставлен гвоздь 100-ка. В середине окошка на него надевается пластмассовая шайба с четырьмя прорезями. Снизу гвоздя была нарезана резьба и затем на эту ось была накручена крыльчатка.

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

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




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

Что касается лопастей крыльчатки, то они сперва были изготовлены из теннисных мячиков. При таком размере лопастей крыльчатка заводится при ветре от 5 м/с. Чтобы сделать крыльчатку чувствительнее, были приобретены мячики диметром 55 мм, в таком случае крыльчатка начинает крутится уже при м/с. При этом измерение ведется до 22 м/с.

Шаг третий. Электронная часть
В качестве электронной схемы автор сперва использовал самодельную ЛУТ схему с добавлением зеленой макси из Китая. Но система не могла показывать скорость ветра в метрах/секунду. Она лишь отображала количество оборотов.







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

Было решено передать импульсы с фототранзистора на Arduino, при этом схема стала воспринимать такие сигналы как нажатия на кнопку. Чтобы получить скорость ветра, нужно просто посчитать, сколько идет нажатий на кнопку в течение определенного времени, скажем, в секунду. Однако не все так просто, чтобы перевести частоту вращения крыльчатки в скорость движения ветра м/с, требуется специальная формула. Ей автор с удовольствием делится.

Анемометр – измеритель скорости ветра

Наконец дело дошло и до анемометра. Имея опыт изготовления уже трех ветрогенераторов я так и не знаю точно на каком ветре и сколько дают мои ветряки. Сейчас всего один ветрогенератор в строю, мой самый удачный, хотя и собранный весь ” на коленке”. Я примерно и представляю силу ветра и могу отличить ветер в 5 м/с от 10 м/с, но все-же хочется более точно знать скорость ветра чтобы определять мощность ветрогенератора.

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

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

Потом отыскал кусок ПВХ трубы диаметром 5см, и длинной50 см. Из нее сделал 4 лопасти, просто порезал трубу вдоль на две половинки, и половинки, каждую на две части, получилось 4 лопасти. В основании, которое осталось от родного винта просверлил 4 отверстия для крепления лопастей, так-же и в лопастях сделал 4 отверстия. Все это дело скрутил на болтики и получился четырех лопастной винт – савониус (первая “серьезная” вертикалка).

Ну а далее нашел провода нужной длинны, сростил метром 5 антенного кабеля и метров 8 обычного. провода сразу подсоединил чтобы замерять параметры с учетом длинны провода, так-как данные могут различаться если делать замеры на метровом проводе, или на 13 м.

Потом нашел кусок металлической трубки длинной около 80-90 см, ее изогнул буквой Z и примотал моторчик. Этой трубкой анемометр будет крепиться к мачте. Тут ничего сложного, можно использовать любой подручный материал.

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

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

Катался туда сюда и в разных направлениях и записывал в телефон показания мультиметра при разных скоростях движения. Стартовал анемометр со скорости 7 км/ч, и я постепенно откатал туда сюда на разных скоростях начиная с 10 км/ч и максимальная 40км/ч, можно было и больше, но грунтовые дороги очень не ровные и сильно не разгонишься.

После покатушек нарисовались вот такие данные. Мультиметр показал при 10км/с =0.06V , при 20км/ч=0.12V, при 30=0.20V, при 40км/ч=0.30V.

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

Вольты-скорость ветра м/с.

Данные выше 11 м/с вычислил нарисовав на листке бумаги график роста напряжения в зависимости от скорости ветра, который плавно продолжил до 15 м/с. Этим-же днем, а точнее уже вечером установил анемометр на мачту к ветрогенератору. Опустил ветряк и примотал ниже анемометр. Трубу временно притянул на проволоку и обмотал дополнительно изолентой, получилось вроде крепко. Ну а далее поднял все это дело на место и теперь рядом с ветрогенератором на мачте теперь стоит анемометр, который стартует при 3м/с и исправно показывает скорость ветра.

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

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

Дополнение

Не нагруженый ничем винт анемометра резко реагирует на каждый порыв и изменение скорости ветра. А нагруженый винт этого ветрогенератора все-таки запаздывает в реакциях, и из-за этого не синхронные данные в показаниях. Сегодня ветер 3-7 м/с, анемометр правда ловил пару порывов до 10м/с, но они длились менее секунды и ветрогенератор просто не упевал на них реагировать.

Спустя некоторое время наблюдений нарисовались некоторые средние значения силы тока от ветрогенератора при определенном ветре. Стартует винт с 3,5-4 м/с, зарядка 0.5А на 4м/с, 1А на 5м/с, 2,5А на 6м/с, 4А на 7м/с, 5А на 8м/с . Эти данные усредненные, так-как амперметр аналоговый стот, и я могу ошибаться до 0.5А в показаниях силы тока от ветрогенератора.

Анемометр своими руками
Наконец я сделал анемометр и откалибровал катаясь на мотоцикле. За основу взял автомобильный ветилятор и из подручных материалов собрал анемометр


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

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

1. Компоненты

Итак, для изготовления изделия понадобились следующие компоненты:
Шариковая мышь Mitsumi - 1 шт.
Мячик для пинг-понга - 2 шт.
Кусок оргстекла подходящего размера
Медная проволока сечением 2,5 мм2 - 3 см
Стержень от шариковой ручки - 1 шт.
Палочка от конфеты чупа-чупс - 1 шт.
Клипса для кабеля - 1 шт.
Полый латунный бочонок 1 шт.

2. Изготовление крыльчатки

К латунному бочонку были припаяны 3 куска медной проволоки длиной 1 см каждый под углом 120 градусов. В отверстие бочонка я припаял стойку из китайского плеера с резьбой на конце.

Трубочку от конфеты разрезал на 3 части длиной около 2 см.

Разрезал пополам 2 шарика и с помощью мелких шурупов из того же плеера и полистирольного клея (клеевым пистолетом) прикрепил половинки шарика к трубочкам от чупа-чупса.

Трубочки с половинками шарика надел на припаянные куски проволоки, сверху все закрепил клеем.

3. Изготовление основной части

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

Причина, по которой была выбрана схема с энкодером, следующая: все статьи о самодельных анемометрах в Интернете описывали их изготовление на базе двигателя постоянного тока от плеера, CD-ROMa или еще какого изделия. Проблема с такими устройствами во первых в их калибровке и малой точности при малой скорости ветра, а во вторых - в нелинейной характеристике скорости ветра по отношению к выходному напряжению, т.е. для передачи информации на компьютер есть определенные проблемы, нужно просчитывать закон изменения напряжения или тока от скорости ветра. При использовании энкодера такой проблемы нет, так как зависимость получается линейной. Точность высочайшая, так как энкодер дает около 50 импульсов на один оборот оси анемометра, но несколько усложняется схема преобразователя, в котором стоит микроконтроллер, считающий количество импульсов в секунду на одном из портов и выдающий это значение в порт USB.

4. Испытания и калибровка

Для калибровки был использован лабораторный анемометр

Измеритель скорости ветра
Анемометр мастер-класс с фото сделай сам мастер-класс


Измерение скорости ветра самодельными приборами для самодельных ветрогенераторов.

Originally published at Профессионально об энергетике. Please leave any comments there.

Итак ты решил сделать ветрогенератор своими руками. EnergyFuture.RU уже не однократно писала об различных конструкциях самодельных ветрогенераторов и генераторов на постоянных магнитах на них, включая знаменитые конструкции Хью Пигота (полный архив тут). Очень важно перед началом понять и на практике определить доступную силу ветра в твоей местности. Об этом собственно и статья. Наблюдайте, мерьте и записывайте в журнал для статистики. как в школе!

Скорость ветра – одна из основных характеристик воздушного потока, потому-как определяет его энергию. Она измеряется в метрах в секунду (м/сек ) и обозначается латинской буквой V . Чем больше скорость ветра, тем больше и энергия заключенная в потоке.

Для измерения скорости ветра применяются раздичные приборы: Флюгеры, анемометры и другие. Простейший прибор для измерения скорости ветра – флюгер Вильда (вобще-то устаревшая вещь, преимущество одно -легко соорудить своими руками).

К штоку-1 жестко прикреплен киль-2 , который при изменении направления ветра устанавливаетпластину-3 перпендикулярно направлению потока. Пластина имеет возможность качаться относительно оси-4 . Соответственно чем сильнее ветер тем больше отклонение пластины. Определяют силу ветра при помощи указателя-5 .

Для точности измерения плластина должна иметь размер-150 X 300 мм и вес 200 грамм, для районов с небольшими ветрами, и 800 грамм для местности с ветрами более 6 м/сек.

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

Тем кого не интересует относительная точность, есть ещё один способ определения скорости ветра – по внешним признакам .

Измерение скорости ветра самодельными приборами для самодельных ветрогенераторов
Originally published at Профессионально об энергетике. Please leave any comments there. Итак ты решил сделать ветрогенератор своими руками. EnergyFuture.RU уже не однократно писала об различных конструкциях самодельных ветрогенераторов и генераторов на постоянных магнитах на них, включая…



Как сделать анемометр своими руками

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

1. Доработаем головку вращения . Просверлим сверлом по металлу в боковой поверхности

вращающейся части 3 отверстия диаметром 4мм для крепления чашек. При сверлении ориентируемся на три отверстия в головке для крепления внутренних узлов.

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

Винт с резиновой шайбой

3. В качестве чашек применены пластмассовые кружки, специально купленые в магазине за 7 рублей. Каждая кружка доработана:

На боковой поверхности в районе бывшей ручки просверлено отверстие диаметром 4мм.

Кружки для анемометра

Кружка для анемометра

Отверстие в чашке

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

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

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

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

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

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

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

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

Узел крепления

Подключаем кабель

Настраиваем самодельный анемометр

Для настройки показаний анемометра в идеале применить настоящий анемометр. Я за свою жизнь держал в руках это чудо всего раз пять. Поэтому применил стандартный способ, прикрепил анемометр к ручке из дерева. И при езде на автомобиле в безветренную погоду настроил велокомпьютер по совпадению показаний со спидометром. В моем велокомпьютере настройка заключалась в подборе значения радиуса колеса в миллиметрах. Запоминаем величину найденного радиуса (лучше записываем), а то при смене батарейки компьютер забудет настройки.Цель получить суперточные показания не ставилась. Всё - настроено.

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

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

Самодельный анемометр своими руками
Показана инструкция по изготовлению самодельного анемометра


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

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

Тебе понадобятся:

Толстый деревянный штырь
тонкие деревянные стержни
веревка и отвес
стаканчик из-под йогурта
клейкая лента (водонепроницаемая)
чертежные кнопки
цветной картон
медная трубка
клей
ножницы

1. Возьми толстый деревянный штырь и плотно вставь его в медную трубку. Это будет стойка анемометра.

2. Попроси взрослых помочь просверлить дырку сквозь стойку. Диаметр отверстия должен соответствовать толщине одного из тонких стержней. Сделай прорезь на одном из концов этого тонкого стержня. Вставь его в стойку и закрепи, как показано на рисунке.

3. Вырежи из картона наконечник и оперение стрелы и закрепи на концах тонкого стержня.

4. Вырежи четверть круга из цветного картона и прикрепи его к стреле при помощи клейкой ленты.

5. Возьми большой стаканчик из-под йогурта. Приклей его к одному концу второго тонкого деревянного стержня.

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

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

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

Шкала Бофорта

Это шкала для измерения скорости ветра, в основе которой лежат наблюдения за природой. Шкала была изобретена английским адмиралом сэром Френсисом Бофортом почти 200 лет назад.

Скорость ветра на картах погоды указываются числом штрихов на значке силы ветра.

Скорость ветра Словесная характеристика Признаки оценки скорости ветра
м/сек км/час балл
Бофорта
0,0-1,5 0,0-1,8 0 Штиль Дым поднимается отвесно или почти отвесно, листья неподвижны
0,6-1,7 1,9-5,1 1 Тихий ветер Направление ветра определяется по дыму
1,8-3,3 5,2-11,7 2 Легкий ветер Движение ветра чувствуется лицом, шелестят листья
3,4-5,2 11,8-18,7 3 Слабый ветер Листья и тонкие ветви деревьев постоянно колышутся, ветер развевает легкие флаги, море покрыто сплошной легкой волной
5,3-7,4 18,8-26,6 4 Умеренный ветер Ветер поднимает пыль, приводит в движение тонкие ветви деревьев, на отдельных волнах изредка появляются белые, быстро пропадающие "барашки"
7,5-9,8 26,7-35,3 5 Свежий ветер Качаются толстые сучья деревьев; "барашки" видны на каждой волне
9,9-12,4 35,4-44,0 6 Сильный ветер Качаются толстые сучья деревьев, гудят телеграфные провода, "барашки" на волнах более продолжительны (5-10 сек.)
12,5-15,2 44,1-54,7 7 Крепкий ветер Качаются верхушки деревьев, гнутся большие ветви, неудобно идти против ветра. Пенящиеся волны на море
15,3-18,2 54,8-66,0 8 Очень крепкий ветер Ветер ломает тонкие ветви и сухие сучья деревьев, затрудняет движение
18,3-21,5 66,1-77,5 9 Шторм Ветер сбрасывает дымовые трубы, черепицу. Идти против ветра очень трудно.
21,6-25,1 77,6-90,2 10 Сильный шторм Значительные разрушения, деревья вырываются с корнем
25,2-29,0 90,3-104,4 11 Жестокий шторм Большие разрушения: валит телеграфные столбы, вагоны
Более 29,0 Свыше 104,4 12 Ураган Разрушает дома, производит большие разрушения

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

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

Корпус сделал так: взял кусок квадратной трубы в ней вырезал окошко, чтобы через него потом смонтировать начинку (кстати окошко вырезал с температурой, но так мне очень хотелось это сделать, что встал и пошел пилить). Затем внутрь приварил пластину (держатель внутреннего подшипника), тогда приварил низ (держатель нижнего подшипника). Когда решил делать верх задумал сделать скатную крышу-для этого вырезал четыре треугольника и аккуратно поприхватывал, а затем проварил полностью и так сделал заостренный козырек. Тогда зажал в тиски и сверлом на 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.