Ультразвуковой анемометр

Прибор этого типа использует тот факт, что ультразвук распространяется быстрее в направлении, в котором действует ветер. Конечно ультразвуковой анемометр измеряет три компоненты ветрового вектора в трехмерном пространстве (рис.4.5). Вдоль каждой оси расположены две пары "передатчик-приемник" на расстоянии 0,1-0.5 м. Передатчик посылает непрерывные или импульсные ультразвуковые волны.

В зависимости от направлений распространения ветра с ультразвуковой волной при прохождении волной расстояния d между передатчиком и приемником определяется так:

где υ уз - скорость распространения ультразвуковой волны, м / с; υ 1 - скорость распространения проекции вектора ветра на ось i , м / с.

Разница во времени прохождения расстояния d между передатчиком и приемником двумя ультразвуковыми волнами составляет:

Ориентацию преобразователей относительно направления распространения ветра приведены на рис. 4.6.

Рис. 4.5. Ультразвуковой анемометр

Рис. 4.6. (U - скорость распространения ультразвуковой волны; V - скорость распространения ветра N - север S - юг, W - запад; Е - восток)

Методы дистанционного измерения параметров ветра

Радиозонд

Радиозонд - устройство, используемое для измерения определенных параметров ветра и передачи информации приемником. Кроме того, он содержит сенсоры температуры, влажности и атмосферного давления. Оценивания горизонтального положения радиозонда относительно той точки, с которой он был запущен, осуществляется с помощью радиолокатора или радара (от англ. RAdio Detection And Ranging - радиообнаружения и определения дальности) - установки для обнаружения и определения местоположения объектов методом радиолокации. Этот тип техники дистанционного зондирования предусматривает использование электромагнитных волн в области от 0,1 см до 2 м (что соответствует частотам от 100 МГц до 50000 МГц). Объект исследования (радиозонд) облучается, а отраженное излучение оказывает оперативную информацию относительно координат радиозонда и параметров ветра. Высота, которую достигает радиозонд, составляет 20 км, а продолжительность полета - 90-120 мин.

Содар

Ультразвуковой анемометр, предназначенный для дистанционного измерения параметров ветра, называют (от англ. SO und Detection And Ranging). В основе работы этого прибора лежит так называемый эффект Допплера : при облучении объекта, движущегося со скоростью υ, ультразвуковой волной определенной длины волны Λ происходит рассеивание волны, причем частота (длина волны) рассеянной ультразвуковой волны зависит от скорости движения объекта. Доплеровский сдвиг частоты ультразвуковой волны, рассеянной под углом Θ движущимся со скоростью υ , описывается выражением:

(4.13)

где φ - угол между направлением скорости υ и направлением распространения ультразвуковой волны.

Содар, расположенного на земной поверхности, посылает ультразвуковые импульсы вверх (рис. 4.7).

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

Скорость ветра, измеряемая ультразвуковые анемометры, достигает 30 м / с.

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

Кроме того, электронное оборудование повышает стоимость приборов этого типа.

Лидар

Лидар (от англ. Light Detection And Ranging) в отличие от содар генерирует и регистрирует лазерные импульсы. Принцип действия лидара при дистанционном определения параметров ветра заключается в рассеивании лазерного излучения на аэрозолях воздуха (пыли, каплях воды, частицах пыли или загрязнений, пыли или кристаллах солей), движущихся со скоростью ветра, и последующей регистрацией допплеровского смещения (см. 26.7 .3). Такие лазерные системы позволяют измерять и оценивать скорость и направление движения ветра и турбулентность воздуха на больших высотах.

Разработанные в последние годы оптоволоконные лазерные системы характеризуются чрезвычайно высокой (10-12) чувствительностью.

Спутники и ракеты

Современные радиозонды определяют скорость и направление ветра с помощью системы глобального позиционирования GPS (англ. Global Positioning System) - совокупности радиоэлектронных средств,

Рис. 4.7. Содар

определяют положение и скорость движения объекта на поверхности Земли или в атмосфере.

Параметры воздушных потоков на больших высотах оценивают с помощью ракет. Так, в 2012 году Американское космическое агентство (NASA) запустила пять ракет с интервалом 80 с для изучения высокоскоростных потоков воздуха в верхних слоях атмосферы. Проект получил название ATREX (Anomalous Transport Rocket Experiment). Старт состоялся на территории испытательного центра на острове Уоллопс в штате Вирджиния.

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

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

Определение направления ветра

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

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

Точность определения направления ветра Потенциометрические системой составляет ± 3

Рис. 4.8.

Увеличить точность можно, используя сельсинов систему (рис. 4.9). Вращения ротора сельсин-датчика вызывает появление ЭДС, пропорциональной синусу угла вращения, что приводит к появлению электрического тока в статоре сельсин- приемника, соответствующего магнитного поля, которое заставляет вращаться ротор приемника, соединенного с индикатором.

Рис. 4.9.

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

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

Рис. 4.10.

Рис. 4.11.

Она выглядит как многоугольник, у которого длины лучей, расходящихся от центра диаграммы в разных направлениях (румбах), пропорциональные

повторяемости ветров этих направлений (рис. 4.11).

Международная метеорологическая организация требует от приборов, предназначенных для измерения направления ветра, чтобы они определяли направление ветра в интервале скоростей ветра от 0,5 до 50 м / с с разрешением от ± 20 до ± 5 °.

Ранее был сделан . Он умел рассчитывать проекцию скорости ветра на линию между приемником и передатчиком. Для получения вектора скорости ветра на плоскости (2D) требуется вторая координата, которую мы получим, если добавим второй датчик перпендикулярно первому. В этом случае можно закрепить анемометр стационарно — отпадает необходимость использовать флюгер и как-то организовывать подвижные контакты.

Первая версия

Сказано — сделано, причем основательно.

Из обрезков полипропиленовых труб сварил крестовину. Все датчики отпаял и удлинил проводами, которые проложил внутри труб. Расстояние между датчиками получилось 70 см.

Код программы такой.

Код программы первой версии двухосевого анемометра

#include #include #include #define Trig 4 #define Echo 2 #define Trig2 8 #define Echo2 12 #define ONE_WIRE_BUS 7 #define Steps dht DHT; #define DHT21_PIN 0 static const float defDist = .6985; // m static const float defDist2 = .713; // m // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); void setup() { pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); pinMode(Trig2, OUTPUT); pinMode(Echo2, INPUT); Serial.begin(57600); // Start up the library sensors.begin(); Serial.println("X Distance Tds18820 Tcalc Tdht Hum V"); } unsigned long impulseTime=0; void loop() { // READ DATA //Serial.print("DHT21, \t"); int chk = DHT.read21(DHT21_PIN); float DHTtemp = 10; float DHThum = 50; switch (chk) { case DHTLIB_OK: // Serial.print("OK,\t"); DHTtemp =DHT.temperature; DHThum = DHT.humidity; break; default: Serial.print("DHT Error,\t"); break; } // DISPLAY DATA // Serial.print(DHThum, 1); // Serial.print(",\t"); //Serial.println(DHTtemp, 1); sensors.requestTemperatures(); // Send the command to get temperatures DS18820 float dist = 0; float dist2 = 0; float temp = sensors.getTempCByIndex(0); //DHTtemp; unsigned long impulseTime=0; unsigned long impulseTime2=0; int N=250; for (int i = 0; i 0) {wd+=90;} else {wd+=270;} //Serial.println("X Distance Tds18820 Tcalc Tdht Hum V"); //Serial.println(String(impulseTime) + char(9) + String(impulseTime2)); Serial.println(String(impulseTime) + char(9) + String(impulseTime2) + char(9) + String(dist, 5) + char(9) + String(dist2, 5) + char(9) + String(temp) + char(9) + String(Tcalc) + char(9) + String(DHTtemp)+ char(9) + String(DHThum) + char(9) + String(v) + char(9) + String(v2) + char(9) + String(v3) + char(9) + String(wd)); }

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

Увы, результаты меня разочаровали.


При усреднении в 25 измерений, показания в спокойном воздухе прыгают в среднем до 1.5 м/с, при этом измерения выдаются примерно раз в сек. Если усреднить в 10 раз больше показаний ситуация улучшается, но кардинально проблему не решает. К тому же судя по графику скоростей в двух осях, одна пара датчиков фонит существенно больше другой.
Скорее всего дело в проводах, которыми я удлинил датчики. Придется переделывать.

Вторая версия

Есть еще одна причина все переделать. Как отмечалось в первой , скорость звука изменится на 1 м/с при изменении температуры примерно на 1.5 °С. Погрешности измерений по обоим осям складываются. Нужно понимать, что порывы теплого или холодного воздуха могут существенно исказить показания такого анемометра. Нет смысла в показаниях 4 м/с при легком дуновении теплого ветерка.
Из диаграммы натурного эксперимента видно, что даже медленное изменение температуры вызывает дрейф измеренной скорости, а быстрое изменение температуры на 1 градус скачком поменяло измеренную скорость ветра на 1.5 м/с, в то время как датчик температуры медленно отрабатывает это изменение. Важно заметить, что эксперимент этот проходил прямо у меня на столе и изменение температуры было естественным — я ничего не трогал и искусственно ничего не нагревал.

И тут на помощь приходит тот же принцип, что и при измерении расстояния. Если помним, датчики у оригинального HC-SR04 расположены вместе, поэтому результаты не зависят от наличия ветра. Если измерить скорость звука на известном расстоянии сначала в одном направлении, а затем в другом, то разница этих двух показаний, деленная пополам и будет искомой скоростью ветра в проекции на эту ось. При этом, изменение температуры в диапазоне ±25°С дает погрешность ±4%, что абсолютно не критично и мы можем обойтись вообще без термометра. Да и зачем нам термометр? Если мы знаем время прохождения сигнала в обоих направлениях, то по формулам из мы легко вычислим температуру, а значит сможем уточнить скорость ветра.
Есть лишь одна маленькая загвоздка — придется использовать два HC-SR04 на одной оси. В промышленных образцах датчики попеременно выполняют роль приемника и передатчика. В нашем случае для этого придется подключить пищалки напрямую к arduino и программно генерировать 8 импульсов 40 кГц на одной, после чего вычленять их из другой. Зная про определенные сложности на этом пути, мне представляется проще купить еще 2 датчика по 55 рублей и попытаться обойтись малой кровью. Этим я займусь в следующий раз. А пока на двух датчиках сделаю измерение скорости ветра по одной оси и измерение температуры в такой конфигурации. Главная проблема здесь убрать помехи, которые дают такой большой разброс показаний в спокойном воздухе.

Конструкция

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


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


Вначале я пробовал просто дуть по направлению от синей пары к черной. Моих легких явно недостаточно. Но любопытный факт — воздух в легких успел нагреться на 1°, что раньше вызвало бы скачок скорости на 1.5 м/с, т.к. DS18B20 просто ничего не заметил. Отметим, что мои легкие способны дать всего лишь 0.5 м/с. Дальше я включил большой напольный вентилятор и направил все также от синего к черному. Видно как пошел более прохладный воздух из глубины комнаты и даже DS18B20 начал отрабатывать это снижение, но теперь его значения не используются для расчета скорости. Сделал открытие, что мой вентилятор дует со скоростью около 2 м/с. Дальше в течение паузы видим постепенное увеличение температуры и отличную корреляцию между рассчитанной и измеренной температурой. В конце поставил вентилятор с другой стороны и получил 2 м/с в обратном направлении с падением температуры. Ура, товарищи, это работает!

Программа расчета скорости ветра

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

#include #include #include #define Trig 4 // HC-SR04 №1 #define Echo 2 #define Trig2 8 // HC-SR04 №2 #define Echo2 12 #define ONE_WIRE_BUS 7 // DS18B20 #define Steps dht DHT; #define DHT21_PIN 0 // DHT21 static const float defDist = .2121; // m static const float defDist2 = .2121; // m float Tcalc = 0; // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); void setup() { pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); pinMode(Trig2, OUTPUT); pinMode(Echo2, INPUT); Serial.begin(57600); // Start up the library sensors.begin(); Serial.println("X Distance Tds18820 Tcalc Tdht Hum V"); } unsigned long impulseTime=0; void loop() { float temp = 0; float DHTtemp = 0; float DHThum = 50; // READ DHT DATA int chk = DHT.read21(DHT21_PIN); if (chk == DHTLIB_OK) { DHTtemp =DHT.temperature; DHThum = DHT.humidity; } if (sensors.getDeviceCount() > 0) { sensors.requestTemperatures(); // Send the command to get temperatures DS18820 temp = sensors.getTempCByIndex(0); //DHTtemp; } float dist = 0; float dist2 = 0; unsigned long impulseTime=0; unsigned long impulseTime2=0; int N=50; for (int i = 0; i 0) {wd+=90;} else {wd+=270;} Serial.println(String(impulseTime) + char(9) + String(impulseTime2) + char(9) + String(dist, 5) + char(9) + String(dist2, 5) + char(9) + String(temp) + char(9) + String(Tcalc) + char(9) + String(DHTtemp)+ char(9) + String(DHThum)+ char(9) + String(M,5) + char(9) + String(v)); }

Программа будет работать и без датчиков DHT-21 и DS18B20 . DS18B20 для вычислений в этом коде нигде не задействован — только выводится в терминал как эталон. Без датчика влажности температура будет рассчитываться как для воздуха с 50% влажностью. На практике это вносит очень маленькую погрешность. На измерения скорости ветра эти датчики вообще не оказывают никакого влияния.

Собственно это все что можно выжать из двух HC-SR04 . Для получения вектора скорости ветра на плоскости нужно добавить еще 2 датчика перпендикулярно первым и по формулам первой версии получить полную скорость и направление. Этим займусь как только приедут заказанные дополнительные датчики.

P.S.

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

P.P.S. 2018

По многочисленным просьбам выкладываю итоговый скетч, который не требует никаких библиотек (кроме стандартной EEPROM) и работает с 4 датчиками. Код со всякими вкусностями типа встроенной калибровки и сохранением калибровочных значений в энергонезависимую память. И самое главное. Описанная выше проблема с погрешностями по одной из осей была связана не с проводами, а с работающими в одной комнате с датчиками импульсными блоками питания компьютера, монитора и т.п. (их схема преобразования работает на близкой частоте 40 кГц). Я остановился на проблеме выноса датчика на улицу подальше от помех (с передачей данных по блютус). В остальном это работает. Это версия для распаянных датчиков, но есть способ не распаивать. Если вернусь к проекту — реализую.
Для этого кода неважно какое расстояние между датчиками. Нужно поместить устройство в безветренное пространство (и без импульсных помех) и через терминал несколько раз отдать 2 команды:

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

Итоговый код анемометра для 4х датчиков HC-SR04

// WindSpeed v.4 - Анемометр // Copyright Evgeny Istomin gena@regimov.. Приемник и передатчик разнесены на противоположные концы крестовины // На схеме изображено положение приемников для правильного расчета направления и силы ветра // HC-SR04 №1 // Север (0 гр) // o // | // | // HC-SR04 №2 o-------|---------o HC-SR04 №4 // Запад (270гр) | Восток (90 гр) // | // o // HC-SR04 №3 // Юг (180 гр) // при выборе материала крестовины руководстоваться http://temperatures.ru/pages/temperaturnyi_koefficient_lineinogo_rasshireniya // лучший выбор материала - труба инвар 36H, но и обычное железо вполне годится:-) #define DEFINE_DISTANCE 0.22 // примерное расстояние между датчиками, измеренное линейкой, в метрах. #define MES_PAUSE 90 // Пауза между измерениями для затухания отражений. В реальности нужно не менее 1, мс. #define MES_AVERAGE 8 // сколько измерений усреднять для температуры. #define PRINT_PERIOD 500 // период вывода измерений в терминал, ms #include #define FALSE 0 #define TRUE 1 #define Echo1 2 #define Echo2 3 #define Echo3 8 #define Echo4 5 #define Trig1 6 // HC-SR04 №1 #define Trig2 7 // HC-SR04 №2 #define Trig3 4 // HC-SR04 №3 #define Trig4 9 // HC-SR04 №4 #define Pow1 10 #define Pow2 11 #define Pow3 12 #define Pow4 13 #define T_ABS 273.15 // температура абсолютного нуля https://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D1%8B%D0%B9_%D0%BD%D1%83%D0%BB%D1%8C_%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D1%8B #define PRINT_LOOP PRINT_PERIOD/(4*(MES_PAUSE)) // сколько полных циклов пропустить перед выводом измерений в терминал float defDist1 = DEFINE_DISTANCE; float defDist3 = DEFINE_DISTANCE; float defDist2 = DEFINE_DISTANCE; float defDist4 = DEFINE_DISTANCE; float Tcalc = 0; // температура воздуха (расчетная) const float DHThum = 50; // % влажности float M = 0.02895; // молярная масса кг/моль https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%81%D1%81%D0%B0 const float R = 8.31447; // Универса́льная га́зовая постоя́нная Дж/(моль*К) https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B3%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%B0%D1%8F const float P = 761 * 133.3;// давление в Па. 101325 на уровне моря float X = 1.4 * R / M ; float c = sqrt(X * (Tcalc + T_ABS)); // скорость звука м/с https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B2%D1%83%D0%BA%D0%B0 float impulseTime1 = defDist1 / c; float impulseTime2 = defDist2 / c; float impulseTime3 = defDist3 / c; float impulseTime4 = defDist4 / c; unsigned char count = 0; // счетчик циклов /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // простой фильтр-усреднитель float filterA(float y1, float y) { return ((MES_AVERAGE - 1) * y1 + y) / MES_AVERAGE; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // измеряем задержку прохождения звука между датчиками, сек float measument(unsigned char Trig, unsigned char Echo, unsigned char Pow) { float y; digitalWrite(Pow, HIGH); delay(MES_PAUSE); digitalWrite(Trig, HIGH); delayMicroseconds(10); digitalWrite(Trig, LOW); y = pulseIn(Echo, HIGH); if (count > PRINT_LOOP) Serial.print(String(y, 0) + char(9)); digitalWrite(Pow, LOW); return y * 1e-6; }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // запоминаем в flash-памяти расстояния между датчиками void StoreDefDist() { EEPROM.put(0, defDist1); EEPROM.put(1 * sizeof(float), defDist2); EEPROM.put(2 * sizeof(float), defDist3); EEPROM.put(3 * sizeof(float), defDist4); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // читаем из flash-памяти расстояния между датчиками float GetDefDist(int adress) { float dd; EEPROM.get(adress, dd); if (dd <= 0) dd = DEFINE_DISTANCE; return dd; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // расчет скорости звука в зависимости от температуры, давления и влажности void GetC(float t) { M = (28.95 - 10.934 * DHThum * 0.01 * (133.3 * 4.579 * exp(17.14 * t / (235.3 + t))) / P) / 1000; X = 1.4 * R / M ; c = sqrt(X * (t + T_ABS)); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// void setup() { pinMode(Pow1, OUTPUT); pinMode(Pow2, OUTPUT); pinMode(Pow3, OUTPUT); pinMode(Pow4, OUTPUT); pinMode(Trig1, OUTPUT); pinMode(Trig2, OUTPUT); pinMode(Trig3, OUTPUT); pinMode(Trig4, OUTPUT); pinMode(Echo1, INPUT); pinMode(Echo2, INPUT); pinMode(Echo3, INPUT); pinMode(Echo4, INPUT); digitalWrite(Pow1, HIGH); digitalWrite(Pow4, HIGH); digitalWrite(Pow3, HIGH); digitalWrite(Pow2, HIGH); defDist1 = GetDefDist(0); // читаем из flash-памяти расстояния между датчиками defDist2 = GetDefDist(1 * sizeof(float)); defDist3 = GetDefDist(2 * sizeof(float)); defDist4 = GetDefDist(3 * sizeof(float)); Serial.begin(57600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } Serial.println("impT1\timpT3\timpT2\timpT4\tdist1\tdist3\tdist2\tdist4\tTcalc\tv1\tv2\tWD\tv3 " + String(PRINT_LOOP)); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// void loop() { // период измерений = 1 / (4e-3 * (MES_PAUSE + 1)) impulseTime1 = measument(Trig1, Echo1, Pow1); impulseTime3 = measument(Trig3, Echo3, Pow3); impulseTime2 = measument(Trig2, Echo2, Pow2); impulseTime4 = measument(Trig4, Echo4, Pow4); //if (count > MES_AVERAGE) Serial.print(String(impulseTime1*1e6) + char(9)); Tcalc = filterA(Tcalc, sq((defDist2 + defDist4 + defDist1 + defDist3) / (impulseTime1 + impulseTime3 + impulseTime2 + impulseTime4)) / X - T_ABS); if ((Tcalc > 70) | (Tcalc < -50)) Tcalc = 0; GetC(Tcalc); float Speed_of_sound1 = defDist1 / impulseTime1 ; float Speed_of_sound2 = defDist2 / impulseTime2 ; float Speed_of_sound3 = defDist3 / impulseTime3 ; float Speed_of_sound4 = defDist4 / impulseTime4 ; float v1 = ((Speed_of_sound3 - Speed_of_sound1) / 2); float v2 = ((Speed_of_sound2 - Speed_of_sound4) / 2); float v3 = sqrt(sq(v1) + sq(v2)); int wd = int(atan(v2 / v1) * 180 / 3.1416); if (v1 < 0) { wd += 180; } else if (v2 < 0) { wd += 360; } if (count > PRINT_LOOP) { Serial.println(String(c, 5) + char(9) + String(Tcalc) + char(9) + String(v1) + char(9) + String(v2) + char(9) + String(wd) + char(9) + String(v3)); count = 0; } while (Serial.available() > 0) { char inCh = Serial.read(); // установка температуры. формат команды: t21.5 if (inCh == "t") { String a = Serial.readString(); Tcalc = a.toFloat(); GetC(Tcalc); } // u - юстировка (установка на 0). формат команды: u if ((inCh == "t") | (inCh == "u")) { defDist1 = impulseTime1 * c ; defDist2 = impulseTime2 * c ; defDist3 = impulseTime3 * c ; defDist4 = impulseTime4 * c ; StoreDefDist(); } } count++; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

К метеорологическим устройствам относится прибор для измерения скорости ветра, который называется анемометр. В переводе с древнегреческого определение буквально означает «ветромер». Несмотря на название, прибор был изобретен лишь в 19 веке. Его изобрел астроном из Ирландии Джон Робинсон для определения скорости ветра.

Для чего используется прибор

На сегодняшний день прибор анемометр можно встретить в различных отраслях деятельности:

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

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

Устройство и принцип работы

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

Основными узлами конструкции являются всего три блока:

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

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

Разнообразие моделей

В зависимости от принципа действия, прибор для измерения скорости ветра изготавливается в трех вариантах:

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

Классификация

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

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

  • Оптические, которые в свою очередь делятся на лазерные и допплеровские.
  • Динамические, чей принцип работы основан на базе трубки Пито-Прандтля.
  • Поплавковые.
  • Вихревые.

Это список приборов, которые можно встретить в настоящее время.

Анемометр крыльчатый

Данный прибор способен определить скорость движения воздуха, которая находится в интервале от 0,5 до 45 м/с. Кроме того, данное устройство позволяет измерять температуру, которая находится в пределах от минус 50 до плюс 100 градусов.

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

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

Анемометр крыльчатый цифровой устроен таким образом, что датчик встроен внутрь прибора или является выносным. Благодаря такой конструкции никакой преграды для ветра нет. Поэтому прибор измеряет поток, скорость которого может достигать 45 м/с.

Приборы чашечного типа

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

Появились первые варианты данного устройства еще в 1846 году. Их создателем является Джон Робинсон. Название он получил благодаря внешнему сходству лопастей с чашкой. Доктор предполагал, что на вращение чашек не оказывают влияние их размер. По его мнению, скорость вращения чашек в три раза меньше, нежели скорость движения ветра. Позднее эту теорию опровергли. Было доказано, что прибор обладает коэффициентом, который находится в пределах от 2 до 3,5.

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

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

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

Тепловые приборы

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

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

У приборов данного типа имеется один существенный недостаток - низкая прочность при механических воздействиях.

Ультразвуковые анемометры

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

Датчик может выполнять несколько функций. В зависимости от их количества, можно выделить несколько видов датчиков:

  • Двухмерные, которые способны определить скорость и направление ветра.
  • Трехмерные, которые определяют все три компонента вектора скорости ветра.
  • Четырехмерные, которые в дополнение к показателям предыдущего вида могут измерять температуру воздуха.

Ультразвуковые приборы измеряют скорость ветра до 60 м/с.