Реклама ⓘ
Главная » Начинающим
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Измерение относительной влажности воздуха психрометрическим методом при помощи МК

Если погуглить по фразе "измерение влажности при помощи микроконтроллера", то поисковая система предложит вам использовать специальные датчики для измерения влажности - SHT21, DHT11 (DHT12, DHT21), BME280. HR202L (HR31), HTU21D и так далее. Зачастую эти датчики работают по шине I2C, и подключить их можно не более 1-2 штук к одному микроконтроллеру (например, BME280 и SHT21). Датчики семейства DHT требуют отдельный вывод микроконтроллера каждому датчику, да и точность их не велика. Точность датчиков BME280 выше чем у DHT11, но подключить их можно всего 2 . Но что делать если необходимо измерять влажность сразу в нескольких точках одновременно. да ещё и с достаточно высокой точностью? Что делать если точки измерения разнесены на значительные расстояния? Выход - использовать датчики температуры DS1820, для которых есть и герметичное исполнение для измерения температуры жидкости. Часть датчиков будет измерять температуру воздуха, другая часть температуру воды. расчеты будет проводить микроконтроллер, благо они не сложные. А теперь собственно к алгоритму измерения влажности.

Что бы измерить относительную влажность в процентах необходимо использовать формулу 

где е - парциальное давление водяного пара,

Ec(t) - давление насыщенного водяного пара. при температуре t (температура сухого термометра).

Что бы измерить парциальное давление пара, необходимо использовать формулу

где Ec(t') - давление насыщенного водяного пара. при температуре t (температура влажного термометра),

А - психрометрический коэффиицент: 0,795е-6 при естественном движении воздуха или 0,662е-6 при принудительном обдуве 2 м/с,

р - общее давление парогазовой смеси в гПа,

t - температура сухого термометра,

t' - температура влажного термометра,

а - еще один коэффициент равный 0,00115 (в подробности вдаваться не буду).

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

или по упрощенной, но менее точной формуле

где Е0=6,1121 гПа,

а = 17,5043

в = 241,2

t - температура (воды или воздуха, смотря в какую формулу вы собрались подставлять вычисленное значение)

Эту формулу я и буду использовать.

Сразу возникает вопрос насколько точна упрощенная формула. Ответ выражен в виде графика.

В пределах от 0 до 54 градусов по Цельсию погрешность примерно равна 0,1%, затем она начинает возрастать и при температуре 80 градусов составляет 1%, что все же выше точности датчика DHT11.

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

Теперь собственно перейдем к программе для МК. Я специально не добавил в программу функции измерения температуры, так же закоментировал все выводы в serial port и задержки, для того что бы проверить, какой размер занимает скомпилированная программа. Несмотря на то, что программа была написана в ArduinoIDE, который не отличается бережным использованием памяти МК, размер скомпилированной программы составил всего 444 байт и 9 байт под переменные. 

Полный код программы для ArduinoIDE привожу ниже.

int Tc = 30; //температура сухого термометра
int Tv = 25; //температура влажного термометра

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

void loop() {
//  Serial.print("Tc=");
//  Serial.println(Tc);
//  Serial.print("Tcv=");
//  Serial.println(Tv);
///  Serial.print("HR=");
  float Hum=HR(Tc, Tv);
//  Serial.println(Hum);
//delay(1000);
}

float HR(float Tc, float Tv)
{
  float Ec = E(Tc);
  float Ev = E(Tv);
  float e1 = Ev - 0.7945 * (Tc - Tv);
  float HR = 100.0 * (e1 / Ec);
  return HR;
}

float E(float T)
{
  float E = 6.1121 * exp((17.5043 * T) / (241.2 + T));
  return E;
}

Для того, чтобы увидеть результат работы программы в терминале уберите комментарии.

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

P.S. Что можно измерить ещё двумя термометрами? Поскольку мы уже научились вычислять влажность воздуха, то можно так же вычислить точку росы по формулам 

и индекс жары по формуле (которая тоже является упрощенной формулой, подробнее смотрите на https://en.wikipedia.org/wiki/Heat_index )

где T и Air temperature - температура воздуха (формулу рисовал не я, не знаю почему так отделили),

Н - относительная влажность в процентах.

Эти формулы я так же проверил в программе SMathStudio, и они так же выдали достоверные результаты.

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

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

Теги:

Опубликована: 0 1
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (22) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
+1
Лекс 59 #
Метод имеет право на существование. Имеет и большие "НО". Автор указал не все недостатки психрометров.
Даже если использовать дистиллированую воду, то все-равно придется периодически менять ткань или вату, подводящую воду к влажному датчику температуры. Гниение. А если заливать не дистиллят, то проблемы утраиваются.

Защищать все это от движения воздуха, не говоря уж о прямых лучах солнца. Т.е. требуется периодическое (вряд ли сильно реже, чем раз в неделю) техническое обслуживание. А так ли уж важна такая точность? С ДНТ все будет куда проще и стабильнее. Решайте сами, стоит ли идти таким путем на нескольких точках, разнесенных на значительные расстояния.
Ответить
-1

[Автор]
mefi73 #
Главное все таки не точность, а измерение влажности во многих точках так, что бы не занимать много выводов МК.
Ответить
0
dkg10 #
Но ведь этот метод требует уже как миним 2 датчика температуры на канал измерения влажности. Тем более таких как 18В20. Непонятно как их настраивать , если все зависит от их собственной внутренней настройки, да ещё - от помех и обстановки ЭМ влияния. Лучше уж придумать сорбирующий влагу кристалл + преобразователь "ёмкость-частота" и тогда не париться насчет ограничения на число каналов измерения влажности.
Главное все таки не точность, а измерение влажности во многих точках
Но в статье то вы обратное утверждаете
Но что делать если необходимо измерять влажность сразу в нескольких точках одновременно. да ещё и с достаточно высокой точностью?
Отредактирован 27.01.2018 05:57
Ответить
0

[Автор]
mefi73 #
Точность этого метода выше чем у большинства датчиков влажности. Главное верно замерить температуры.
Ответить
0
vavaav #
Что означает "другая часть температуру воды". Зачем измерять температуру воды, если обычно измеряют увлажненный термометр? При этом термометр не погружают в воду, а увлажняют капиллярным способом.
Ответить
0

[Автор]
mefi73 #
Конечно же термометр в фитиле, а не непосредственно воду. А какую температуру будет иметь смоченный термометр и вода? Если нет движения воздуха, а коэффициент используется именно для воздуха без движения.
Отредактирован 21.01.2018 22:50
Ответить
+1
Goodefine #
А какую температуру будет иметь смоченный термометр и вода? Если нет движения воздуха, а коэффициент используется именно для воздуха без движения.
Разную. Вся фишка в том, что вода испаряясь с поверхности фитиля охлаждает его и термометр. Скорость испарения (а значит и степень охлаждения) будет зависеть от влажности. Если запихнуть термометр в воду, то градиент температур, обусловленный испарением там будет только на поверхности, в тонком слое воды, который за счет высокой теплопроводности воды практически не будет заметен.
Ответить
0

[Автор]
mefi73 #
Именно. Конечно, вместо фразы "температура воды" стоит использовать фразу "температура поверхности воды".
Ответить
0
dkg10 #
А ещё представьте себе: КТО будет обходить эти увлажняемые термометры и проверять насколько они "правильно" увлажняются?
Ответить
+1
andro #
Интересно какое время идёт на расчёт, сколько времени уйдёт на расчёт показаний скажем с десяти датчиков?
Ответить
0

[Автор]
mefi73 #
Формуля простая и расчитывается довольно быстро (в тактах МК сказать не могу, но задержек не замечал).
Ответить
+1
Jatagan #
Если требуется измерять влажность в условиях перманентно повышенной влажности, то это пожалуй единственный способ! Все интегральные датчики: DHT22, Si7021, BME280, HIH-40xx и другие, спустя пол года начинают завышать. Проверено! И со временем показывают постоянно 100% и более.
Ответить
0
unclef1 #
При какой скорости обдува работает формула? Какой взят психрометрический коэффициент А и как его использовать в упрощенной формуле? Как сильно он влияет на результат?
Ответить
0

[Автор]
mefi73 #
А - психрометрический коэффиицент: 0,795е-6 при естественном движении воздуха или 0,662е-6 при принудительном обдуве 2 м/с - это упомянуто в статье. В формулах указан коэффициент для естественного движения воздуха. В самой упрощенной формуле давления насыщенного водяного пара он не используется, он используется позже в формуле парциального давления пара.
Ответить
0
unclef1 #
Используется А=0.7945 для естественного движения воздуха. Дает 72% влажности при действительной влажности 50%. При обдуве со скоростью 1м/с (вентилятор от компьютерного БП) показания приближаются к действительным (52%). Вода для охлаждения использовалась не дистиллированная (из под крана).
Ответить
0

[Автор]
mefi73 #
Как вы измерили действительную влажность (в вашем случае в 50%)? Вы уверены, что от вентилятора компьютерного БП была скорость 1 м/с?
Мне интересно откуда возникли эти расхождения. По многочисленным психрометрическим таблицам (которые один в один переписаны по сути) значения совпадают с вычисленными.
Ответить
0
unclef1 #
e1 = Ev - 0.7945 * (Tc - Tv)*(1 + 0.00115*Tv);
отсутствие коэффициента для воды увеличивает показание на пол процента. Отсутствие обдува значительно увеличивает показание. Ветер измерял специальным тестером с платиновой нитью. Показания сравнивал с BME280 и другим ранее поверенным датчиком. Проверю с дистиллированной водой и вентилятором от процессора.
Ответить
0
unclef1 #
float Tc = 19.0;
float Tv = 14.3;
float e1 = Ev - 1.11 * (Tc - Tv);
Hum=50.4
https://www.uu.ru/medicina/81679156.html
с таким коэффициентом хотя бы теоретически начинает работать.
Расчет взят видимо из регистратора Ф1771-АД
http://www.vbrspb.ru/files/20131211-143614_529808899.PDF
Ответить
0
unclef1 #
float e1 = Ev - 0.88 * (Tc - Tv); // 0,5 - 1,0 м/с
http://avianua.com/programs/Precise_psychrometer.pdf

http://docs.cntd.ru/document/1200014512
ПРИЛОЖЕНИЕ 7 коэффициент 0.795 для 0.8 м/с

https://helpiks.org/1-113576.html
вот коэффициенты, которые осталось проверить на практике
Ответить
0
unclef1 #
Программа расчета https://deckofficer.ru/seasoft/item/psyho1
Коэффициент 0.795 соответствует скорости воздуха 0.8 м/c (обдув вентилятором от компьютерного блока питания). Многие таблицы даны для скорости 2 м/c.
Ответить
0
unclef1 #
На практике получилось
float e1 = Ev - 2.2 * (Tc - Tv); //0,2 м/с без обдува
float e1 = Ev - 1.42 * (Tc - Tv); // 0,5 - 1,0 м/с
метод очень не точный и зависящий сильно от скорости охлаждения
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Набор начинающего радиолюбителя
Набор начинающего радиолюбителя
FM-модуль RDA5807M Ручной фен 450 Вт с регулировкой температуры
вверх