Arduino с анемометром: измерение скорости ветра

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

Arduino с анемометром: измерение скорости ветра

В этом руководстве мы рассмотрим следующие темы:

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

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

Использование этого датчика довольно простое. Он выдает аналоговый сигнал, напряжение которого пропорционально скорости ветра. Мы используем анемометр с тремя чашами, как показано на фото ниже.

Ветровой датчик — анемометр

Технические характеристики анемометра

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

  • Входное напряжение: 12–24 В постоянного тока

  • Выходное напряжение: 0–5 В

  • Диапазон измерений: 0–32,4 м/с

  • Разрешение: +/- 0,3 м/с

Это означает, что когда аналоговый сигнал равен 0, скорость ветра составляет 0. Однако в моем случае я заметил, что когда анемометр не двигался, выходное напряжение составляло 0,054 В, а не 0 В.

Arduino — измерение напряжения с ветрового датчика при отсутствии ветра

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

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

Распиновка анемометра

Анемометр имеет три провода:

Синий провод

Сигнал

Черный провод

GND

Коричневый провод

Питание

Анемометр, ветровой датчик — распиновка

Подключение анемометра к Arduino

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

Блок питания 12 В постоянного тока

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

Адаптер разъема питания постоянного тока

Схема подключения: Arduino с анемометром

Схема подключения Arduino с анемометром

Вот список компонентов, которые вам понадобятся для этого руководства:

Подключение датчика к Arduino довольно простое. Вам нужно лишь подключить сигнальный провод к аналоговому пину Arduino и соединить GND вместе.

Схема подключения Arduino с ветровым датчиком — анемометром

В моем случае мне нужно запитать датчик от внешнего источника питания 12 В.

Черный провод

GND Arduino и GND источника питания

Синий провод

Подключить к аналоговому пину. Мы используем A0

Коричневый провод

Источник питания 12 В (+)

Arduino с анемометром — код для измерения скорости ветра

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

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

/*********
  Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/arduino-anemometer-measure-wind-speed/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/

// Constants (Change the following variables if needed)
const int anemometerPin = 0;  // analog pin 0 (A0)
const float minVoltage = 0.054;  // Voltage corresponding to 0 m/s
const float maxVoltage = 5;  // Voltage corresponding to 32.4 m/s (max speed)
const float maxWindSpeed = 32.4; // Maximum wind speed in m/s

// Conversion factors
const float mps_to_kmh = 3.6;   // 1 m/s = 3.6 km/h
const float mps_to_mph = 2.23694; // 1 m/s = 2.23694 mph

void setup() {
  Serial.begin(9600);
}

void loop() {
  // Read analog value from anemometer (ADC value between 0-1023 on Arduino for 0-5V)
  int adcValue = analogRead(anemometerPin);

  // Convert ADC value to voltage (Arduino ADC range is 0-5.0V)
  float voltage = (adcValue / 1023.00) * 5.0;

  // Ensure the voltage is within the anemometer operating range
  if (voltage < minVoltage) {
    voltage = minVoltage;
  } else if (voltage > maxVoltage) {
    voltage = maxVoltage;
  }

  // Map the voltage to wind speed
  float windSpeed_mps = ((voltage - minVoltage) / (maxVoltage - minVoltage)) * maxWindSpeed;

  // Convert wind speed to km/h and mph
  float windSpeed_kmh = windSpeed_mps * mps_to_kmh;
  float windSpeed_mph = windSpeed_mps * mps_to_mph;

  // Print wind speed
  Serial.print("Wind Speed: ");
  Serial.print(windSpeed_mps);
  Serial.print(" m/s, ");
  Serial.print(windSpeed_kmh);
  Serial.print(" km/h, ");
  Serial.print(windSpeed_mph);
  Serial.println(" mph");

  delay(1000);
}

Посмотреть исходный код

Как работает код?

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

// Constants (Change the following variables if needed)
const int anemometerPin = 0;  // analog pin 0 (A0)
const float minVoltage = 0.054;  // Voltage corresponding to 0 m/s
const float maxVoltage = 5;  // Voltage corresponding to 32.4 m/s (max speed)
const float maxWindSpeed = 32.4; // Maximum wind speed in m/s

Это параметры для нашего датчика. Ваши параметры могут отличаться. Когда датчик не движется, он выдает напряжение 0,054 В, поэтому мы считаем это минимальным значением.

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

// Conversion factors
const float mps_to_kmh = 3.6;   // 1 m/s = 3.6 km/h
const float mps_to_mph = 2.23694; // 1 m/s = 2.23694 mph

В функции setup() мы инициализируем Serial Monitor.

void setup() {
  Serial.begin(9600);
}

В функции loop() мы получаем новые показания с датчика каждую секунду.

Сначала мы считываем значение с пина АЦП и преобразуем его в значение напряжения. Максимальное значение, считываемое с пина АЦП Arduino, составляет 1023, что соответствует 5 В. Таким образом, мы можем преобразовать значение в напряжение с помощью следующей строки:

// Read analog value from anemometer (ADC value between 0-1023 on Arduino for 0-5V)
int adcValue = analogRead(anemometerPin);

// Convert ADC value to voltage (Arduino ADC range is 0-5.0V)
float voltage = (adcValue / 1023.00) * 5.0;

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

if (voltage < minVoltage) {
  voltage = minVoltage;
} else if (voltage > maxVoltage) {
  voltage = maxVoltage;
}

Далее мы можем легко преобразовать полученное напряжение в значение скорости ветра (в качестве альтернативы вы можете использовать функцию Arduino map()).

float windSpeed_mps = ((voltage - minVoltage) / (maxVoltage - minVoltage)) * maxWindSpeed;

Затем мы преобразуем полученные значения в км/ч и мили/ч.

// Convert wind speed to km/h and mph
float windSpeed_kmh = windSpeed_mps * mps_to_kmh;
float windSpeed_mph = windSpeed_mps * mps_to_mph;

Наконец, мы выводим полученные результаты.

// Print wind speed
Serial.print("Wind Speed: ");
Serial.print(windSpeed_mps);
Serial.print(" m/s, ");
Serial.print(windSpeed_kmh);
Serial.print(" km/h, ");
Serial.print(windSpeed_mph);
Serial.println(" mph");

delay(1000);

Тестирование кода

Загрузите код на вашу плату Arduino. Убедитесь, что датчик правильно подключен и запитан.

Откройте Serial Monitor на скорости 9600 бод.

Раскрутите датчик, чтобы имитировать ветер, и наблюдайте значения, выводимые в Serial Monitor каждую секунду.

Тестирование ветрового датчика с Arduino — демонстрация Serial Monitor

Вот и всё. Теперь вы можете считывать скорость ветра с помощью вашей платы Arduino. Теперь вы можете добавить анемометр в вашу метеостанцию.

Заключение

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

У нас есть руководства для более чем 30 датчиков для Arduino. Вы можете ознакомиться с ними ниже:

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