Мечта об умном термоанемометре
Был у нас на работе один адок из рубрики “админам жарко, а бухгалтерам дует”…
Ростелеком, только переехали в новый офис в ComCity, огромные опенспейсы и сплошные окна без форточек. Плюс стандартная болезнь открытого пространства - на большое помещение всего один вентканал с кучей выходов.
Летом, в жару включается централизованная система кондиционирования и увлажнения, и начинается… Самые первые в цепочке отправляются на Северный полюс (или на Южный, к пингвинам в общем и снеговику Олафу). Последние продолжают изнывать в сухой и жаркой Африке. Катаклизма неизбежно приводит к войне за крутилку кондиционера, которую мудрые инженеры предусмотрительно отключили.
Регламент климатической демилитаризации предписывает на такой случай вызывать билдинг-менеджеров. Инженеры-климатологи проводят замеры температуры и скорости воздуха на каждом участке воздуховода, регулируют поток и наступает благоденствие. Впрочем, длится оно не долго. Как только аналогичная процедура настройки проводится в соседнем опенспейсе - в нашем помещении все тут же идет в разнос. Составляется новая заявка. И так по кругу.
Кончается тем, что озверевшие от постоянной беготни и волн негатива билдинг-менеджеры просто игнорируют проведение измерений. По заявке приходит инженер с анемометром, делает замер, и говорит, мол, ребята, у Вас все нормально, вы не шахтеры, а белые воротнички, расслабьтесь, работайте. Доказать ему что-то сложно - перед тобой сертифицированный оператор измерительного оборудования и вообще эксперт.
Приблизительно в таких нечеловеческих муках родилась мечта о сборке собственного arduino-анемометра. Можно, конечно, купить готовое устройство, но для айтишника это “беспонтово”. Кроме того, на умную железку можно (в теории) повесить логирование, сбор данных по расписанию, управление умным домом и запуск кота в космос. “Ардуино, и ни в чем себе не отказывай”.
С тех пор прошло 6 лет. Работодатель остался в прошлом. Бизнес-центр скорее всего также перестал высушивать и отмораживать арендаторов. Но мечта жила.
Мы продолжаем рубрику “сенсорика для самых маленьких инженеров”. И в настоящей статье представим подробную инструкцию по сборке собственного термоанемометра. Грейте паяльники, открывайте Arduino IDE, поехали!
Экскурс в матчасть
Как гласит Вики, впервые описание анемометра появилось в виде чертежа в 1540-м в трудах Леона Батиста Альберти “Математические забавы”. Позднее подобную конструкцию описал Леонардо Да Винчи. Через три века, в 1846-м году ирландский исследователь Джон Томас Ромни Робинсон изобрёл чашечный анемометр, ставший в то время революционным. В 1994-м году геологом Андреасом Пфличем был изобретён ультразвуковой анемометр.
Если не вдаваться в оттенки, все анемометры делятся на 3 основных типа:
-
Механические (чашечные или крыльчатые). Самый старый тип анемометров. устройства подобной конструкции используются в качестве портативных устройств для локальных замеров. На метеостанциях применяют анеморумбометры. Это те же чашечные анемометры, но с “хвостом” для определения направления потока.
-
Термоанемометры - скорость потока воздуха на них рассчитывается исходя из зависимости теплоотдачи нагреваемого элемента, помещенного в поток, от скорости течения потока. Эти типы измерителей нашел широкое применение в автомобильной индустрии в качестве датчика массового расхода воздуха. Также они используются в портативных устройствах для оценки потока в вентканалах. На низких скоростях термоанемометры демонстрируют большую точность,чем механические собратья.
-
Ультразвуковой анемометр. Принцип работы основан на измерении скорости прохождения звука, которая изменяется в зависимости от направления ветра. Ультразвуковые датчики достаточно дороги, но при этом просты в эксплуатации и способны определять направление потока. Поэтому часто применяются в бытовых и профессиональных метеостанциях.
Существуют и другие разновидности анемометров, но большинство из них являются модификациями уже существующих типов, либо не имеют широкого распространения. Например Трубка Пито, которая используется в качестве измерителя скорости и высоты в авиации, а также может служить эталонным прибором.
Собираем DIY термоанемометр
Скучная лекция закончилась, возвращаемся к нашему DIY.
Нам необходимо собрать железку, выполняющую три задачи:
проводить замеры скорости потока в ручном режиме;
рассчитывать расход воздуха в вентиляционных системах;
обладать компактным размером для проведения замеров в вентканалах.
Закупка компонентов для анемометра (BOM)
-
Плата WEMOS D1 mini (от 130 руб. на Али)
Дешёвая и компактная плата на базе ESP8266, основа проекта. -
Термоанемометр CG_Anem от ClimateGuard (1720 руб. на Али)
Компактный и высокоточный модуль, работающий от 3.3 В по I2C. -
OLED-дисплей 0.96” с I2C (от 100 руб. на Али)
Сравнительно дешёвый, но комфортный для работы дисплей с неплохой яркостью. -
Регулятор напряжения ADP3338 на 3.3 В (от 14 руб. на Али)
Необходим для стабилизации напряжения, подаваемого на анемометр. Подойдет любой регулятор с малым падением напряжения (ldo) с точностью регулирования напряжения под нагрузкой не более 1%. -
Аккумулятор 18650 (от 200 руб. на Али)
Любой аккумулятор типа 18650 для автономной работы анемометра. -
Контроллер заряда на базе TP4056 (от 10 руб. на Али)
Обращаем внимание, что при использовании аккумуляторов без защиты необходимо использовать контроллер с защитой от переразряда (как в примере). -
Макетная плата 7х3 см (от 50 руб. на Али)
Плата для распайки и соединения всех компонентов. -
Разъём XH 2.54 4pin “мама” с выводом на 90 градусов и два разъёма XH 2.54 4pin “папа” с проводами (от 90 руб. на Али). На просторах Али нашёл готовый комплепкт из обжатых проводов с ответной частью. За 90 рублей получаем 10 таких комплектов.
-
Выключатель KCD-1 ( от 80 руб. на Али)
Компактный и дешёвый клавишный выключатель, под него рассчитана 3D-модель. Обычно продаётся мелкими партиями, так выходит дешевле. -
Селфи-палка (от 330 руб. на Али)
Самая простая селфи-палка для изготовления телескопической ручки анемометра.
Итого общая стоимость - от 2 730 рублей.
Для сравнения, бюджетные версии термоанемометров Testo начинаются от 14 500 руб., а популярное устройство (с сомнительной репутацией) от CEM - от 25 000 руб.
Алгоритм сборки датчика скорости потока
Ознакомление со схемами платы и компонентов, а также с общей схемой железки;
Соединение всех компонентов на макетной плате;
Печать корпуса на 3D-принтере, либо создание его из подручных материалов;
Программирование и прошивка платы;
Тестирование устройства.
Схема анемометра
WEMOS D1 мало чем отличается от своих собратьев, построенных на базе ESP8266. Для подключения всех компонентов нам будут необходимы пины D2, D1 (SDA, SCL) и A0 (пин АЦП для считывания остатка заряда батареи) - см. схему ниже.
Анемометру требуется чистое и стабильное напряжение в 3.3 В. Для его обеспечения мы будем использовать стабилизатор напряжения ADP3338.
Популярные преобразователи LM3940 или AMS117 не подходят, так как обладают низкой точностью регулирования (около 3%). При этом отклонение напряжения напрямую влияет на качество показаний анемометра. Поэтому выбор делается в пользу ADP3338 с точностью преобразования 0,8%. Выше приведена схема подключения LDO. Также производитель рекомендует ставить на вход и выход и выход конденсаторы номиналом 1 мкФ.
Мы собираем автономное устройство, поэтому необходим аккумулятор. Для текущего кейса была выбрана банка 18650 (под него создана 3D-модель корпуса), но в принципе можно использовать и li-ion / li-pol аккумуляторы другого форм-фактора.
Плата WEMOS имеет на борту встроенный АЦП (ADC0) для измерения выходного напряжения аккумулятора. Но так как АЦП способен измерять только до 3.3 В, а полностью заряженный аккумулятор выдаёт 4.2 В, необходим делитель напряжения. Делитель напряжения представляет собой последовательно соединенные резисторы. При подключении к средней точке мы обнаружим, что напряжение там равно напряжению, рассчитанному по формуле 2 на картинке.
WEMOS имеет делитель напряжения с номиналом резисторов 220 кОм и 100 кОм соответственно.
После ознакомления с распиновкой WEMOS и LDO подключаем все компоненты согласно схеме.
В результате у нас должна получиться примерно такая плата с кучей проводов и компонентов. Мастерство пайки постигается годами, мы нисколько не хотели задеть ваши чувства.
Печатаем корпус
В процессе подготовки материала создано два типа корпусов для разных задач:
-
“Голый” корпус. Самый простой корпус, который можно доработать под свои задачи или использовать как есть. Сверху есть отверстия для винтов М2 для крепления корпуса анемометра.
-
Корпус с возможностью крепления селфи-палки. В тыльной части имеет крепление под трубку диаметром 15 мм и пазами для стяжек.
3D-модели корпусов доступны на GitHub.
Финальная конструкция представлена на картинке. Провода были зажгутированы для удобства работы с устройством. Чтобы убрать “колхоз” можно использовать спиральную обмотку (под рукой не оказалось).
Подключаем плату и библиотеки
Для дальнейшей работы нам необходимо подключить библиотеки.
Сначала заходим в настройки Arduino IDE и добавляем дополнительные ссылки Менеджера плат следующее: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Затем мы должны выбрать необходимую нам плату. Для этого переходим во вкладку “Инструменты”, выбираем раздел “Плата”, далее выбираем “Менеджер плат” и вводим в поисковую строку “esp8266”.
После установки расширения снова заходим в “Платы” и выбираем “Generic ESP8266 Module” в подразделе с ESP8266.
Далее необходимо подключить библиотеки для анемометра и экрана. Для этого выполняем действия: Arduino -> Скетч -> Подключить библиотеку -> Управлять библиотеками -> Написать “anem” в поисковой строке.
После установки библиотеки для анемометра проделаем такую же операцию для библиотеки дисплея от популярного Алекса Гайвера. В поисковой строке необходимо написать “GyverOled”.
Код
Программа реализует базовый функционал. Следуя путями DIY можете переработать её под свои хотелки. Скетч также можно найти на GitHub или в примерах библиотеки датчика CG_Anem. Для OLED используется нетленная классика - библиотека Алекса Гайвера. Она одна из самых простых, интуитивно понятна и полностью закрывает поставленные задачи.
// Инициализируем библиотеки
#include <cgAnem.h>
#include <Wire.h>
#include <GyverOLED.h>
#define ADC_pin A0 // задаём значение пина АЦП
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled; // Инициализируем OLED-экран
ClimateGuard_Anem cgAnem(ANEM_I2C_ADDR); // Инициализируем CG_Anem
uint16_t ADC; // Переменная для значений АЦП
uint32_t timer_cnt; // Таймер для измерений анемометра
uint32_t timer_bat; // Таймер для измерения заряда батареи
void setup() {
pinMode(ADC_pin, OUTPUT); // Инициализируем АЦП как получатель данных
oled.init(); // Инициализируем OLED в коде
oled.flipV(1); // Я перевернул экран для удобства
oled.flipH(1); // Для нормального отображения после переворота нужно инвертировать текст по горизонтали
oled.clear();
oled.setScale(2); // Устанавливаем размер шрифта
oled.setCursor(20, 3);
oled.print("CG_Anem");
delay(1500);
cgAnem.init();
oled.clear();
cgAnem.set_duct_area(100); // Задаём площадь поперечного сечения для расчёта расхода. Меняется программно, измеряется в см^2
for(int i = 10; i >= 0; i--){ // Функция таймера служит для предварительного нагрева анемометра перед использованием
oled.setCursor(55, 3);
oled.print(i);
delay(1000);
oled.clear();
}
delay(1000);
oled.clear();
oled.setScale(1);
}
void loop() {
if (millis() - timer_cnt > 1000) { // Снимаем показания с анемометра и выводим их на экран
timer_cnt = millis();
// Проверяем, обновляются ли данные с анемометра. Если да - выводим их, если нет - предупреждаем об ошибке
if (cgAnem.data_update()){
char buf1[50];
char buf2[50];
char buf3[50];
sprintf(buf1, "V: %.1f m/s ", cgAnem.getAirflowRate()); // Собираем строку с показаниями скорости потока
sprintf(buf2, "T: %.1f C ", cgAnem.getTemperature()); // Собираем строку с показаниями температуры
sprintf(buf3, "Cons: %.1f m^3/h ", cgAnem.calculateAirConsumption()); // Собираем строку с показаниями расхода воздуха, исходя из заданного сечения. Расход воздуха измеряется в м^3/час
oled.setCursor(0, 1);
oled.print(buf1);
oled.setCursor(0, 3);
oled.print(buf2);
oled.setCursor(0, 5);
oled.print(buf3);
}
else {
oled.setCursor(45, 3);
oled.print("ERROR");
}
}
if (millis() - timer_bat > 10000) { //
timer_bat = millis();
ADC = analogRead(ADC_pin); // Считываем показание с АЦП
oled.rect(104, 3, 124, 10, OLED_STROKE); // Рисуем иконку батарейки
oled.rect(125, 5, 127, 8, OLED_FILL);
if (ADC >= 970){
oled.rect(104, 3, 124, 10, OLED_FILL);
oled.setCursor(6, 1);
oled.setCursor(104, 2);
oled.print("100%");
}
if (ADC < 970 && ADC >= 870){
oled.rect(106, 3, 119, 10, OLED_FILL);
oled.setCursor(104, 2);
oled.print("75%");
}
if (ADC < 870 && ADC >= 770){
oled.rect(106, 3, 114, 10, OLED_FILL);
oled.setCursor(104, 2);
oled.print("50%");
}
if (ADC < 770){
oled.setCursor(104, 2);
oled.print("LOW");
}
}
}
Проверка самодельного термоанемометра
Выбор испытательного полигона для получившегося анемометра стал сложной задачей. Как отмечалось в начале статьи, доступа в офис с центральной вентиляцией у нас не было. Пришлось импровизировать.
Навскидку нашлись следующие жертвы:
окно в доме;
вытяжка над плитой;
кондиционеры в офисах на заводе;
сушилка для овощей;
кулер 3д-принтера;
пылесос;
ноутбук;
торнадо.
Домашнее окно
Кейс показывает, что устройство может ловить даже потоки от небольших сквозняков.
Вытяжка над плитой
Замер получился интересным. Вытяжка снабжена двумя секциями для установки фильтров. Слева из секции фильтр убрали, справа оставили.
Результаты наглядно демонстрируют, что от долгого использования фильтр забился жиром и перестал нормально пропускать воздух. Разница между секцией с фильтром и без составляет 1,3 м/с.
Кондиционеры в офисах на заводе
Прошли по родному Электрозаводу (он же МЭЛЗ), где базируется офис компании.
Наш офисный 10-летний кондиционер пытается справляться с жарой.
На остальных объектах по работе кондея очень хорошо видно - в каких помещениях сидят фотографы и ИТ-шники (кондей забирает воздух комнатной температуры), а в каких трудятся работяги за станками (кондей выдувает горячий воздух в коридор).
Сушилка для овощей и фруктов
В лабе наш Суховей используется для просушки гранул и нити полиамида. Обычные сушилки для филамента не дают температуру 60-80 градусов. Но Суховею до полноценного сушильного шкафа тоже далеко.
Кулер 3д-принтера
До испытаний ожидали, что улитка работает помощнее и гонит более холодный воздух. Видимо, китайский кулер отработал свое и нуждается в замене.
Пылесос
Измерить скорость всасывания пылесоса - идея сколь гениальная, столь и бесполезная. Вернуться к кейсу можно будет разве что при выборе пылесоса в торговом зале. Представляете, какое будет шоу?
Внимания достоин только тот факт, что выдуваемый воздух имеет меньшее рассеивание.
Ноутбук
В обычном режиме ноутбук практически не дает воздушного потока. При принудительном запуске охлаждения на максимум скорость потока возрастает. По температурной индикации на анемометре видно, как ноут постепенно охлаждается.
Торнадо
К сожалению, за неделю поиска так и не удалось найти торнадо в Москве. Но мы уже раскрыли карты и ищем ближайшую дорогу до штата Канзас. Обещаем дополнить статью по возвращении.
Послесловие, или о пользе анемометрии в быту
В завершении материала отметим, что приведенные примеры использования не раскрывают потенциала собранного DIY анемометра. В голову приходит множество кейсов. От создания системы мониторинга вытяжки с передачей данных в облако до автоматизации охлаждения майнинг-фермы или лазерного резака. От создания “анемометра для охотников” до использования решения для измерения скорости полета дрона.
Хотели бы попросить уважаемое сообщество поделиться своими идеями и проектами, так или иначе связанными с измерением воздушного потока. Самые интересные и амбициозные задачи мы готовы взять в работу и описать в формате аналогичной статьи.
Команда инженеров благодарит стажера Илью Радченко за подготовку материала, упорство и доскональное изучение возможностей анемометра,@AlexGyver за библиотеку "GyverOLED", а также магазин Duino.ru и лично @CyberBot за любезно предоставленные компоненты.
Ну и конечно крепко обнимаем сообщество Хабра за уделенное время и интерес к электронике и DIY.
Комментарии (15)
3epka
12.07.2022 12:05+2У вас картинка под номером 6 (Плата питания TP4056) повторяет номер 1 (WEMOS D1 mini)
Paxin
13.07.2022 10:07+1на самом деле оч востребованная штука в среде парапланеристов) запилите пост на параплан.ру и отбоя от заказов не будет
yellowknife Автор
13.07.2022 19:07Спасибо. Взяли в работу. Только параплана у нас нет. Коллеги, боюсь насмех поднимут теоретиков без параплана.
Paxin
14.07.2022 00:43ну он вам по большому счету не особо то и нужен) тут суть в чем, прежде чем разбежаться и улететь с какого ни будь полуторотысячника, нужно принять решение надо ли оно вообще? обычно смотря погоду перед тем как выдвинуться на точку, думаешь ооо отлично и ветер норм и направление подходит, но приехав на место смотришь чет дует, а как дует не понятно, да и товарищам что сказать если приехал первым на точку? а так встал на горе, достал ваш чудо девайс на Nкосарей дешевле забугорных аналогов и провел измерения. на глаз очень легко ошибиться, особенно не очень опытным пилотам
Paxin
14.07.2022 00:45а если надо предоставим и параплан, и с мотором, и самого смелого вместе с девайсом запустим! территориально Дубна моск обл
Mc_Key
14.07.2022 09:23+1В нём нет значения влажности. Значение теплопроводности воздуха сильно таки зависит от влажности.
Поэтому о точности говорить не стоит. Об этом писали создатели "оригинала" таких датчиков(Modern device), как и от геометрии расположения самого "прибора".
vbifkol
14.07.2022 14:50В каком диапазоне температур показывает похоже на правду? Есть потребность мерить ветер с температурой около 100 в течении длительного времени.
Isiirk
Интересно узнать точность. проводили какие то сравнения с другими приборами?
juramehanik
можно этот вопрос задать создателям модуля
https://habr.com/ru/post/570696/
yellowknife Автор
Добрый день. По ходу сборки проводили сравнение с несколькими эталонниками и устройствами на сенсоре CG_Anem. Для того чтобы понять, насколько корректно подобрали компоненты.
Сам CG_Anem - достаточно точный сенсор. Плюс идет калиброванным с завода. Вот выдержка из DataSheet:
adeshere
Интересный график! А чем может быть вызван рост ошибки на начальном участке (примерно 100-300мс)? Какие-то установочные процессы после включения? Или это типовой дефект при малых скоростях потока? Меня недавно спрашивали, чем лучше измерять скорость ветра в пещерах, а там обычно ветер слабый довольно. Т.е. нужна возможность измерять 0.1м/с и менее.
yellowknife Автор
0,1 м/с CG_Anem, конечно, ловит. Но это очень близко к ошибке. И требуется эталонное питание. Нам в сообществе как раз написал товарищ - мы мол лохи, что не стабилизируем питание прямо на сенсоре. Мы с ним полностью согласны. Неподумавши...
Как разработчики CG_Anem мы знаем, как ее модернизировать, чтобы ловить прямо совсем сквознячки. Это реально. Но приходится выбирать - стандартная боль разработчиков сернсорики - между широтой диапазона и точностью, в т.ч. - точностью на границах диапазона измерения. Плюс для разработки потребуется какой-то специализированный эталонник, даже не знаю навскидку какого типа.
Если смогут пещерные жители и их посетители заказать хотя бы сотню - сможем изобрести для них правильный сенсор с высокой точностью на низких скоростях.
adeshere
Спасибо за информацию, идеи и предложения!
Будем думать... но я все-таки поясню ситуацию: мои коллеги, с которыми я недавно работал в недрах Эльбруса, с помощью лидаров наблюдают за динамикой выделения газов во внутренностях (почти) действующего вулкана. Эти измерения ведутся в самых дальних тупиковых штреках 4-километровой штольни БНО, специально вырубленной в горе Андырчи для решения разнообразных научных задач. Контроль воздушных потоков для них - это вспомогательные измерения, чтобы вводить в свои данные поправку "за ветер". Сотни датчиков им точно не нужны :-(
Я еще попробую пообщаться с метеорологами, которые детально изучают процессы в приземном слое для уточнения глобальных атмосферных моделей. У них, в частности, есть задача измерения воздушных потоков под пологом густого леса (в том числе в тропиках). Есть подозрение, что там ветры тоже не очень сильные... Возможно, что им тоже были бы интересны точные анемометры для малых скоростей ветра. Тогда уже можно будет ставить вопрос о не-символической партии таких датчиков.
connected201
На али есть видео, где разработчик сравнивает датчик с эталонным датчиком в трубе, погрешность минимальная.