Николай Ситнов

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

Несмотря на широкое распространение ультразвуковых анемометров [1], тема альтернативных конструкций приборов для измерения скорости и направления ветра по-прежнему актуальна. Обусловлено это различными факторами, в числе которых следует назвать достаточно высокую стоимость ультразвуковых приборов. Кроме того, необходимо иметь в виду, что анемометры, как правило, располагаются на высоких сооружениях – в зоне риска воздействия на них грозовых разрядов. В таких условиях идеальным было бы применение неэлектронного прибора, имеющего связь с наземной частью измерительного комплекса по волоконно-оптическому кабелю. Технические решения, основанные на использовании различных крыльчаток, вращающихся под действием воздушного потока, вполне подходят для оптического считывания информации. Точечные оптические датчики с подключением по волоконному световоду упоминаются в [2], пример готового решения приведен в [3].

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

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

Рис.1 – Схема измерительного узла
Рис.1 – Схема измерительного узла

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

Если площадь лопасти S пропорциональна произведению ее длины L и высоты H (рис.2a),

Рис.2 – Определение габаритов лопасти (a) и воздействие на нее воздушного потока (b)
Рис.2 – Определение габаритов лопасти (a) и воздействие на нее воздушного потока (b)

то ее эквивалентную площадь Se можно определить по следующей формуле:

Se=kHL\bullet \mathrm{c}\mathrm{o}\mathrm{s}\left(\alpha \right) ,

где a – угол между направлением воздушного потока и направлением, перпендикулярным лопасти, а k – коэффициент, учитывающий непрямоугольную форму лопасти.

Поскольку длина проекции вектора скорости ветра на плоскость, перпендикулярную лопасти, также прямо пропорциональна косинусу угла a, то для определения скорости вращения крыльчатки справедлива следующая общая формула:

R=mSe\bullet \overline{V_{w}}\bullet \mathrm{c}\mathrm{o}\mathrm{s}\left(\alpha \right)=mkHL\overline{V_{w}}\bullet \mathrm{c}\mathrm{o}\mathrm{s}^{2}\left(\alpha \right) ,

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

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

Таким образом, для каждого измерительного узла, вблизи двух угловых позиций образуются зоны нечувствительности с шириной, равной удвоенной ширине вышеупомянутого диапазона. В этих зонах и имеет место повышенная погрешность определения направления воздушного потока. А поскольку ширина их находится в зависимости от скорости ветра, то от нее же зависит и распределение погрешности во всем рабочем диапазоне углов a, равном 360°. Очевидно, что всего имеется четыре таких зоны – по две для каждого измерительного узла.

Конструкция прибора

Внешний вид прибора показан на рис.3a и b. Все нетиповые детали изготовлены методом 3D-печати FDM. Конструкция представляет собой совокупность двух измерительных узлов и нижней плиты, собранных воедино посредством четырех стальных стержней с резьбой. Стержни пропущены через отверстия в основаниях измерительных узлов и нижней плите. Для задания необходимых расстояний между измерительными узлами и плитой на стержни надеты втулки.

Рис.3 – Внешний вид прибора
Рис.3 – Внешний вид прибора

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

На рисунках, под прибором, виден герметичный контейнер с контроллером, в качестве которого применен Arduino Uno. Необходимо отметить (с учетом сведений, приведенных в [4]), что в случае попадания молнии в заземленную трубу-стойку, на ней может иметь место значительный скачок напряжения относительно корпусов электронного оборудования, которое входит в состав измерительного комплекса и соединено кабелем с контроллером. Поэтому приняты меры для повышения электрической прочности изолирующего участка между цепями прибора и трубой. При этом следует особо подчеркнуть, что данные меры защиты от грозы можно рассматривать лишь как дополнительные.

Конструкцию прибора поясняют приведенные ниже рисунки 4-6. Заметим, что рис. 4 и 5 представляют собой фотографии, полученные на ранних этапах сборки и экспериментов.

Рис.4 – К пояснению конструкции прибора
Рис.4 – К пояснению конструкции прибора
Рис.5 – К пояснению конструкции прибора
Рис.5 – К пояснению конструкции прибора
Рис.6 – К пояснению конструкции прибора
Рис.6 – К пояснению конструкции прибора

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

Рис.7 – Расположение датчиков Холла в измерительном узле прибора
Рис.7 – Расположение датчиков Холла в измерительном узле прибора

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

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

Крыльчатка (рис.6, 8а) состоит из двух половин, соединенных винтами М4. Ось в данном экземпляре прибора была выполнена из нихромовой проволоки, выровненной путем прокатывания между наковальнями. Концы оси имеют коническую заточку. Балансировка крыльчатки осуществлялась нанесением капель термоклея (этиленвинилацетат). Полости ступиц закрыты двумя крышками, установленными неподвижно с нижней стороны оснований, с небольшими зазорами относительно крыльчаток. На рис.8b показано размещение платы с датчиками Холла на кронштейне подшипника. С целью защиты от влаги плата покрыта лаком.

Рис.8 – Крыльчатка (а) и размещение платы с датчиками Холла (b)
Рис.8 – Крыльчатка (а) и размещение платы с датчиками Холла (b)

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

Рис.9 – Кронштейн подшипника крыльчатки с установленным подшипником
Рис.9 – Кронштейн подшипника крыльчатки с установленным подшипником

На рис. 8a также видны оранжевые корпуса магнитов, которые установлены в диаметрально противоположные отверстия. Два плоских цилиндрических магнита вклеены в корпуса, представляющие собой пластмассовые колпачки, изготовленные по технологии 3D-печати. Колпачки (рис.10a) имеют кольцевой упор со стороны дна, благодаря которому они удерживаются в отверстиях крыльчатки. С другой стороны они фиксируются путем развальцовки края в разогретом состоянии (рис.10b). Следует отметить, что магниты должны быть установлены таким образом, чтобы направления векторов их магнитных полей были противоположными.

Рис.10 – Корпуса магнитов с вклеенными в них магнитами (a) и их установка на крыльчатке (b)
Рис.10 – Корпуса магнитов с вклеенными в них магнитами (a) и их установка на крыльчатке (b)

Принципиальная электрическая схема измерительного узла показана на рис.11, а прибора в целом – на рис.12.

Рис.11 – Принципиальная электрическая схема измерительного узла
Рис.11 – Принципиальная электрическая схема измерительного узла
Рис.12 – Принципиальная электрическая схема прибора
Рис.12 – Принципиальная электрическая схема прибора

Сигналы A и B с выходов каждого измерительного узла (A1, A2, B1, B2) подаются на входы контроллера. Как было сказано выше, автор использовал Arduino Uno. Контроллер вычисляет для каждого узла три параметра – состояние нарастающего счетчика импульсов, количество импульсов за минуту, а также их период. При этом два последних параметра имеют знак, характеризующий направление вращения соответствующей крыльчатки. Указанные данные передаются в соответствии с протоколом Modbus RTU [7] на сервер SCADA, где и осуществляется дальнейшая их обработка – производятся необходимые расчеты с целью получения значений скорости и направления ветра. Информация о состоянии сигналов A1, A2, B1 и B2 также передается на сервер и может быть использована для диагностических целей – с ее помощью удобно контролировать работу прибора.

Текст программы для контроллера приведен на рис.13. Для ее работы необходима библиотека ModbusRtu.h.

//RTU
#include "ModbusRtu.h"
#include "MsTimer2.h"

#define ID   1      // адрес ведомого
#define stlPin  13  // номер выхода индикатора работы
                    // расположен на плате Arduino

#define B1  4   // номер входа B1 (ТС3)
#define B2  5   // номер входа B2 (ТС4)

#define TS1_Pin  2   // номер входа, ТС1
#define TS2_Pin  3   // номер входа, ТС2
#define TS3_Pin  4   // номер входа, ТС3
#define TS4_Pin  5   // номер входа, ТС4
#define TS5_Pin  6   // номер входа, ТС5
#define TS6_Pin  7   // номер входа, ТС6
#define TS7_Pin  8   // номер входа, ТС7
#define TS8_Pin  9   // номер входа, ТС8
#define TS9_Pin  10   // номер входа, ТС9
#define TS10_Pin  11   // номер входа, ТС10
#define TS11_Pin  12   // номер входа, ТС11

#define TI1_Pin  0   // номер входа, ТИ1
#define TI2_Pin  1   // номер входа, ТИ2
#define TI3_Pin  2   // номер входа, ТИ3
#define TI4_Pin  3   // номер входа, ТИ4
#define TI5_Pin  4   // номер входа, ТИ5
#define TI6_Pin  5   // номер входа, ТИ6

//Задаём ведомому адрес, последовательный порт, выход управления TX
Modbus slave(ID, 0, 0); 
boolean led;
int8_t state = 0;
unsigned long tempus;

// массив данных modbus
uint16_t au16data[11];

volatile int CTime = 0;
volatile int MaxTime = 6000;
volatile int COUNT1 = 0;
volatile int COUNT2 = 0;
volatile int CNTT1 = 0;
volatile int CNTT2 = 0;
volatile int ImPerTime1 = 0;
volatile int ImPerTime2 = 0;
volatile int Tick1 = 0;
volatile int Tick2 = 0;
volatile int TickPerT1 = 0;
volatile int TickPerT2 = 0;
volatile int CoeffSign1;
volatile int CoeffSign2;
volatile boolean B1c = 0;
volatile boolean B2c = 0;
volatile boolean B1p = 0;
volatile boolean B2p = 0;

void setup() {
  // настраиваем входы и выходы
  io_setup();
  // настраиваем последовательный порт ведомого
  slave.begin( 9600 ); 
  // зажигаем светодиод на 100 мс
  tempus = millis() + 100; 
  digitalWrite(stlPin, HIGH );

  attachInterrupt(0, PulseCount1, RISING); //Прерывание по A1
  attachInterrupt(1, PulseCount2, RISING); //Прерывание по A2

  MsTimer2::set(10, timerInterrupt);
  MsTimer2::start();
}

void io_setup() {
  digitalWrite(stlPin, HIGH ); 
  pinMode(stlPin, OUTPUT); 

  pinMode(TS1_Pin, INPUT_PULLUP); 
  pinMode(TS2_Pin, INPUT_PULLUP); 
  pinMode(TS3_Pin, INPUT_PULLUP); 
  pinMode(TS4_Pin, INPUT_PULLUP); 
  pinMode(TS5_Pin, INPUT_PULLUP); 
  pinMode(TS6_Pin, INPUT_PULLUP); 
  pinMode(TS7_Pin, INPUT_PULLUP); 
  pinMode(TS8_Pin, INPUT_PULLUP); 
  pinMode(TS9_Pin, INPUT_PULLUP); 
  pinMode(TS10_Pin, INPUT_PULLUP); 
//  pinMode(TS11_Pin, INPUT_PULLUP); 
  pinMode(TS11_Pin, OUTPUT);

}

void loop() {
  // обработка сообщений
  state = slave.poll( au16data, 11);  
  // если получили пакет без ошибок - зажигаем светодиод на 50 мс 
  if (state > 4) {
    tempus = millis() + 50;
    digitalWrite(stlPin, HIGH);
  }
  if (millis() > tempus) digitalWrite(stlPin, LOW );
  //обновляем данные в регистрах Modbus и в пользовательской программе
  io_poll();
} 

void io_poll() {
  //Ввод значений ТС
  bitWrite( au16data[0], 0, digitalRead( TS1_Pin ));
  bitWrite( au16data[0], 1, digitalRead( TS2_Pin ));
  bitWrite( au16data[0], 2, digitalRead( TS3_Pin ));
  bitWrite( au16data[0], 3, digitalRead( TS4_Pin ));
  bitWrite( au16data[0], 4, digitalRead( TS5_Pin ));
  bitWrite( au16data[0], 5, digitalRead( TS6_Pin ));
  bitWrite( au16data[0], 6, digitalRead( TS7_Pin ));
  bitWrite( au16data[0], 7, digitalRead( TS8_Pin ));
  bitWrite( au16data[0], 8, digitalRead( TS9_Pin ));
  bitWrite( au16data[0], 9, digitalRead( TS10_Pin ));
  bitWrite( au16data[0], 10, digitalRead( TS11_Pin ));
  //Ввод значений ТИ
  delay(1);
  au16data[1] = analogRead( TI1_Pin );
  delay(1);
  au16data[2] = analogRead( TI2_Pin );
  delay(1);
  au16data[3] = analogRead( TI3_Pin );
//  delay(1);
//  au16data[4] = analogRead( TI4_Pin );
//  delay(1);
//  au16data[5] = analogRead( TI5_Pin );
//  delay(1);
//  au16data[6] = analogRead( TI6_Pin );
  //Счетчик импульсов
  au16data[4] = COUNT1;
  au16data[5] = ImPerTime1;
  au16data[6] = TickPerT1;
  au16data[7] = COUNT2;
  au16data[8] = ImPerTime2;
  au16data[9] = TickPerT2;
  //Сохранение в регистрах отладочной информации
  au16data[10] = slave.getErrCnt();
}

void PulseCount1() {
  detachInterrupt(0); //Деактивация прерывания по A1

  if(digitalRead(B1) == 0) 
   {
    CoeffSign1 = 1;
   }
  else 
   {
    CoeffSign1 = -1;
   } 

  COUNT1++; 
  if (COUNT1 > 32760) COUNT1 = 0;
  CNTT1++;
  TickPerT1 = Tick1 * CoeffSign1;
  Tick1 = 0;
//  attachInterrupt(0, PulseCount1, RISING); //Прерывание по A1
}

void PulseCount2() {
  detachInterrupt(1); //Деактивация прерывания по A2

  if(digitalRead(B2) == 0) 
   {
    CoeffSign2 = 1;
   }
  else 
   {
    CoeffSign2 = -1;
   } 

  COUNT2++; 
  if (COUNT2 > 32760) COUNT2 = 0;
  CNTT2++;
  TickPerT2 = Tick2 * CoeffSign2;
  Tick2 = 0;

//  attachInterrupt(1, PulseCount2, RISING); //Прерывание по A2
}

void timerInterrupt() {
  digitalWrite(TS11_Pin, HIGH);

  CTime++;
  if (CTime == MaxTime) {
    CTime = 0;
    ImPerTime1 = CNTT1 * CoeffSign1;
    CNTT1 = 0;   
    ImPerTime2 = CNTT2 * CoeffSign2;
    CNTT2 = 0;   
  }

  if (Tick1 < 32767)
    {
     Tick1++;
    }
  else
    {
     if (TickPerT1 >= 0) TickPerT1 = 32767;
     if (TickPerT1 < 0) TickPerT1 = -32768;
    }  

  if (Tick2 < 32767)
    {
     Tick2++;
    }
  else
    {
     if (TickPerT2 >= 0) TickPerT2 = 32767;
     if (TickPerT2 < 0) TickPerT2 = -32768;
    }  

  B1c = digitalRead(B1);
  B2c = digitalRead(B2);
  if (B1c == !B1p)
    {
     attachInterrupt(0, PulseCount1, RISING); //Прерывание по A1
    }
  if (B2c == !B2p)
    {
     attachInterrupt(1, PulseCount2, RISING); //Прерывание по A2
    }
  B1p = B1c;
  B2p = B2c;

  digitalWrite(TS11_Pin, LOW);
}
    

Рис.13 – Текст программы для контроллера

Алгоритм обработки данных сервером SCADA показан на рис.14.

Рис.14 – Алгоритм обработки данных сервером SCADA
Рис.14 – Алгоритм обработки данных сервером SCADA

Экспериментальная часть

Здесь и далее в качестве эталонного прибора использовался ультразвуковой анемометр (рис.15).

Рис.15 – Ультразвуковой анемометр, используемый в качестве эталона
Рис.15 – Ультразвуковой анемометр, используемый в качестве эталона

На рис.16 и 17 приведены соответственно диаграммы скорости и направления ветра для рассматриваемого и эталонного измерителей.

Рис.16 – Диаграммы скорости ветра
Рис.16 – Диаграммы скорости ветра
Рис.17 – Диаграммы направления ветра
Рис.17 – Диаграммы направления ветра

Эти диаграммы соответствуют одному и тому же интервалу времени, равному двадцати четырем часам. На них показано скользящее среднее от исходных данных по интервалу усреднения, равному 15 мин. Здесь можно заметить влияние нелинейности функциональной характеристики ортокрыльчатого анемометра в области малых скоростей ветра – упомянутого ранее диапазона нечувствительности, выражающееся в заметном расхождении формы кривых на начальных участках – от 0:00 до 7:20.

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

Рассмотрим процесс получения зависимостей абсолютной погрешности измерения направления ветра от угла (рис.18). Исходные данные (блоки 1 и 11) подвергаются разделению на группы по принадлежности к заданным диапазонам скоростей и углов. Для углов указанную операцию выполняют блоки 2 и 12. Необходимо отметить, что в эксперименте использованы лишь данные южного сектора – от 90 до 270° (второй и третий квадрант). Дело в том, что в качестве исходных данных выбраны средние по пятнадцатиминутным интервалам значения. Указанное ограничение угла позволяет избежать ситуации, при которой в интервал усреднения попадают значения, расположенные по разные стороны от направления на север – например, 358° и 2° – что вызвало бы ошибку.

Рис.18 – Схема процесса получения зависимостей абсолютной погрешности измерения направления ветра от угла
Рис.18 – Схема процесса получения зависимостей абсолютной погрешности измерения направления ветра от угла

Каждый квадрант подразделяется на десять диапазонов, шириной 10°. При этом, диапазон 175-185° для них является общим. В случае попадания анализируемого значения в какой-либо диапазон, соответствующая ячейка выходной таблицы принимает значение, равное единице, если нет – нулю (поскольку все расчеты реализованы в среде электронных таблиц, то в последнем случае для большей наглядности используется аналогично интерпретируемое значение «пустая строка»).

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

Аналогичная операция для скоростей реализуется в блоках 3 и 13. Имеется девять диапазонов скорости, шириной 0,5 м/с, позволяющих охватить интервал значений от 0,5 до 5 м/с.

Следующий блок в каждом канале (4 и 14 соответственно), осуществляет операцию умножения данных первых двух таблиц на соответствующее значение угла. На его выходе – девятнадцать таблиц (по числу угловых диапазонов), каждая из которых имеет по девять столбцов – по одному для каждого диапазона скоростей. Любая ячейка этих таблиц принимает значение, равное произведению признаков принадлежности к соответствующим диапазонам (1 или 0) на соответствующее значение угла.

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

Следующей операцией является получение среднего значения для каждого столбца. Это действие выполняют блоки 5 и 6, а также 15, и 16. Заметим, что имеются две группы столбцов – для второго и для третьего квадрантов, причем, как уже упоминалось ранее, они пересекаются (столбец, соответствующий значениям 175-185°, для них является общим). В идеальном случае набор данных каждого квадранта является достаточным для построения искомых зависимостей. Однако, в условиях реальных ограничений возможна ситуация, при которой указанные наборы данных оказываются неполными. В такой ситуации целесообразно прибегнуть к восполнению недостающих данных одного квадранта соответствующими данными другого.

Известно, что второй и третий квадрант симметричны относительно оси абсцисс. Поэтому, для облегчения дальнейшей обработки, один из квадрантов подвергается зеркальному перевороту – эту операцию выполняют блоки 7 и 17. Блоки 8 и 18 осуществляют заполнение пустых ячеек в таблице второго квадранта соответствующими значениями из таблицы третьего, а пустых ячеек в таблице третьего – данными второго. Образуются две фактически равнозначные в информационном плане таблицы. Далее следует операция поэлементного усреднения данных (блоки 9 и 19) с формированием одной таблицы для каждого канала.

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

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

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

Рис.19 – Схема процесса получения зависимостей результатов измерения скорости от угла
Рис.19 – Схема процесса получения зависимостей результатов измерения скорости от угла

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

Рис.20 – Зависимости измеренной скорости ветра (a) и абсолютной погрешности определения направления ветра (b) от угла  для различных скоростей воздушного потока
Рис.20 – Зависимости измеренной скорости ветра (a) и абсолютной погрешности определения направления ветра (b) от угла для различных скоростей воздушного потока

Анализируя полученные зависимости, можно отметить следующее. Погрешность измерения ортокрыльчатым анемометром скорости ветра (рис.19a) возрастает с уменьшением скорости. На первом диапазоне (0,5÷1 м/с) относительная погрешность превышает 50%. Однако, в основном, она является систематической и может быть в значительной мере устранена при помощи корректирующего коэффициента. Погрешность измерения угла (рис.19b) для указанного – первого диапазона также слишком велика. Таким образом, диапазон скоростей ветра, в котором рассматриваемым прибором могут проводиться измерения, должен начинаться с 1 м/с.

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

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

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

Список источников

  1. Анемометр / https://en.wikipedia.org/wiki/Anemometer#Hot-wire_anemometers

  2. Обзор разновидностей волоконно-оптических датчиков / https://osensorax.ru/davleniye/volokonno-opticheskie-datchiki

  3. WLL190T-2P434 6032553 оптоволоконный датчик-усилитель / https://sensor365.ru/datchiki-opticheskie-dlya-specialnyh-zadach/optovolokonnye-datchiki/wll190t-2p434-6032553-optovolokonnyj-datchik-usilitel/

  4. Виды молний и параметры тока / https://studfile.net/preview/3545734/page:12/

  5. Solid State Sensors SS40. Digital Bipolar Position Sensors (datasheet) / https://static.chipdip.ru/lib/037/DOC012037952.pdf

  6. Инкрементный энкодер / https://en.wikipedia.org/wiki/Incremental_encoder

  7. Просто о Modbus RTU с подробным описанием и примерами / https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/

Комментарии (5)


  1. SUNsung
    06.10.2023 18:26
    +1

    Мне кажется вся точность потеряется на пиздячной печати.

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

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


    1. NSitnov Автор
      06.10.2023 18:26
      +2

      Добрый день.

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

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


  1. CyberexTech
    06.10.2023 18:26

    Отличная статья! Ультразвуковой анемометр, используемый в качестве эталона, тоже самодельный или заводского исполнения?


    1. NSitnov Автор
      06.10.2023 18:26
      +1

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


  1. NSitnov Автор
    06.10.2023 18:26

    Файлы .stl для печати всех компонентов доступны на https://3dtoday.ru/3d-models/khobbi/raznye-modeli/ortokrylcatyi-anemometr .