ARDUINO Проблемы с датчиком DHT22

Патрушев Артём

✩✩✩✩✩✩✩
4 Сен 2018
26
2
В общем подсоеденил датчик к цифровому пину. Использую библиотеку DHT.h
Датчик объявил. Саму адруино и датчик запитал от аккумулятора 18650. Заряд 4.2-3.7 при тестах. Когда делаю чтение DTH.readTemperature() то он выводит старые показания, которые были когда я обращался к нему в последний раз. Если ещё раз чтение сделать, то показания обновляются. В чем может быть причина?
 

Патрушев Артём

✩✩✩✩✩✩✩
4 Сен 2018
26
2
@Патрушев Артём, вроде как, их нельзя опрашивать слишком часто
Не важно. Я допустим делал так, опрос идёт при нажатии на кнопку. Измерял температуру дома, вносил датчик на улицу и через минуту нажимал кнопку, показания были !!!старые!!! Ещё раз нажимал и видел температуру на улице. Как это можно пофиксить?
 

Патрушев Артём

✩✩✩✩✩✩✩
4 Сен 2018
26
2
@Патрушев Артём, Тогда не знаю :) Скетч смотри
Вот код, самое простое. Берем нажимаем на кнопку в порт выводятся показания, дышим на датчик секунд 10, нажимаем на кнопку и выводятся те-же показания что и первый раз, тут же нажимаем еще раз и о чудо! Показания поменялись на актуальные. Кто знает как пофиксить?
#include <DHT.h>
#define DHTINPIN 5
#define DHTTYPE DHT22
DHT DHTIN(DHTINPIN, DHT22);

boolean flag;

void setup() {
pinMode(3, INPUT_PULLUP); //пин для прерывания
attachInterrupt(1,myInterrupt, RISING); // устанавливаем прерывание
DHTIN.begin();
Serial.begin(9600);
}

void loop() {
if (flag) {// если было прерывание то отображаем данные
DisplayAll();
flag = 0;
}
}

void DisplayAll() {
Serial.println(DHTIN.readTemperature());
}

void myInterrupt() {
if (!flag) flag = 1; // флаг первого нажатия кнопки
}
 

Патрушев Артём

✩✩✩✩✩✩✩
4 Сен 2018
26
2
Смотрите, наглядный эксперимент, просто скопировал данные из COM порта + у меня модуль времени еще там подцеплен, время оттуда и не зависит от ардуино:
14:29:25 34.00
14:34:10 3.50
14:34:21 3.80
14:34:49 4.90
14:34:50 4.90
14:34:52 37.70
14:29:25 - я нагревал датчик феном. Потом отсоединил его и отнес в морозилку на 5 минут. После включения в 14:34:10 показал вроде правильную температуру, опрасил его несколько раз, убедился что растет. Но вот тут в 14:34:21 я начал нагревать датчик феном, после отключения фена я нажал на кнопку в 14:34:49 и что я вижу? Вижу бред, датчик должен быть горячим!, Жму еще раз 14:34:50 опять бред, но это ладно, типа датчик нельзя опрашивать более раза в 2 секунды и только после третьего нажатия в 14:34:52 я вижу адекватные показания. Как такое можно пофиксить? Как получать актуальные показания реального времени с этого датчика?
Потому как я делаю метеостанцию и у меня получается следующая история: допустим вечером я посмотрел температуру, считал показания, посмотрел. За ночь бахнул мороз с -20 до -40. Но утром я нажимая на кнопку вижу те же -20 ГРЕБАНЫХ ГРАДУСОВ! Хотя на улице -40. И чтобы увидеть -40 мне нужно нажать еще раз или типа того, я не понимаю?!?!?

Ниже скетч с библиотеками
 

Вложения

Патрушев Артём

✩✩✩✩✩✩✩
4 Сен 2018
26
2
Походу идей нет, буду заказывать другие датчики температуры, эти вообще никуда не годятся, разве что для знакомства с электроникой. Очень не рекомендую к покупке.
 

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
Всем доброго времени суток!
Пилю свой первый проект на arduino.
Подключено 3 датчика dht22, два в виде модуля, один сам по себе с резистором 10Ком между сигналом и +.
Все датчики на одинаковой проводке лежат на столе.
Температура выдается приемлемо с разницей в десятые доли градусов, а вот с влажностью беда...
H0: 58.80 % T0: 25.10 *C
H1: 54.10 % T1: 25.20 *C
H2: 49.00 % T2: 25.30 *C

Отличие между датчиками доходит до 10%, что для проекта неприемлемо, ибо на разнице влажности построена логика управления климатом.
Пробовал менять датчики местами - показания датчиков не изменились.
Тот который стоял изначально на пине h0 показывал 49% при перемещении на пин h2 так и показывает 49%
Ну и соответственно тот что стоял на h2 как показывал 58.80 так и показывает на пине h0.
По документации датчики должны быть достаточно точными.
Первая мысль ввести в скетч выравнивающие коэффициенты для каждого датчика, экспериментальным путём но, опасаюсь что в разных условиях среды коэффициенты могут быть разными.
А по задумке все эти датчики должны находиться каждый в своей среде, за редким исключением.
Так же в боевых условиях датчики будут висеть на кабелях различной длины: 0, 1, 5 метров.

UPDATE: По поводу выравнивающих коэффициентов опасения подтвердились.
Выровнял показания, подышал на оба датчика (они лежат вплотную друг к другу) зафиксировал рост влажности до 80+ процентов и получил разброс даже более 10%...

Как быть?
 
Изменено:

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
@rkit, модули датчиков брал в магазине по 500р, отдельный датчик брал в другом за 350р.
Времени на ожидание доставки Алиэкспресс нет.
Какие конкретно датчики являются точными и продаются в Москве?
Я погуглил, они все якобы точные, и стоят не дороже моих.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
Я вот тестировал 2 датчика ds18b20 (это буквально вчера и позавчера) . Так вот значения на столе различаются довольно сильно (до 1 градуса) . При этом чем ближе датчики друг к другу тем больше схожи показания. А если я один датчик свешу со стола, то там и 2 градуса может быть.
Один датчик голый, второй в гильзе.
Ранее тестировал 3 датчика на макетке (расстояние в районе 1 см между ними). Из нескольких удалось найти 3 с разницей меньше 0.2 градуса. Но если брать до целых единиц, или хотя бы на пол градуса, то вполне подойдет.

С влажностью сложнее - даже если подуть на датчик - показания меняются. И от прикосновения потной ладошки тоже.
 
  • Лойс +1
Реакции: noindex

Геннадий П

★★★★★★✩
14 Апр 2021
1,799
579
44
Отличие между датчиками доходит до 10%
У них по даташиту максимальный разброс до +-5%, так что в пределах погрешности. И это на оригинальных датчиках, а не китайских копиях, на которых разброс еще больше может быть.
 
  • Лойс +1
Реакции: noindex

rkit

★★★✩✩✩✩
5 Фев 2021
471
114
поверить по всем стандартам метрологии
Вот это ключевые слова. Без работы в лаборатории покупай-не покупай, - всё лотерея.
Датчики влажности с хорошей повторяемостью есть, а вот взаимозаменяемость у всех +-5%.
 
  • Лойс +1
Реакции: noindex

viktor1703

★★★✩✩✩✩
9 Дек 2021
531
131
Пробовал менять датчики местами - показания датчиков не изменились
Это как в том анекдоте: "раньше, когда в публичном доме дела шли плохо, то меняли бл@дей, а не кровати двигали". Так и здесь, какая разница к какому пину подключен датчик?
 

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
@viktor1703, @Эдуард Анисимов,
Прошу прощения если ошибусь в терминах, всё таки первый раз имею дело с контроллерами / датчиками и т.д.
К датчику идёт 3 провода, питание, земля, сигнал + для каждого датчика своя разводка по плате.

Правильно ли я вас понял, что плохой контакт (излом) провода / дефект пайки коннектора на плате / дефект дорожки и прочая фигня присущая только группе пинов определенного датчика, по любому из этих 3-х пинов не может привести к искажению результатов датчика?

Или просто возникло желание попетросянить?
 

poty

★★★★★★✩
19 Фев 2020
2,956
886
@noindex, если Вам удаётся считать информацию в цифровом виде со всех датчиков, результат будет одинаковый. Все внутренние дефекты сохранятся при переключении датчиков.
По поводу измерения влажности: для обеспечения точности измерений помимо поверки датчиков необходимо соблюдать условия измерений. Так, например, измерение влажности должно осуществляться только при движении воздуха не менее определённой скорости и даже тогда измерение будет интегральным, т.е., мгновенной динамики не добиться! Измерение может занимать и 5, и 10 секунд, и более до стабилизации показаний и вхождения в интервал точности. Нужно учитывать нелинейность, гистерезис, отсутствие поверхностной влаги на сенсоре...
Измерения вообще - штука статистическая, требует подготовки результата, соблюдения методики измерения и обработки результатов.
 
  • Лойс +1
Реакции: noindex

ТехнарьКто

★★★★★✩✩
13 Янв 2020
273
435
Подключено 3 датчика dht22,
--кусь-
Температура выдается приемлемо с разницей в десятые доли градусов, а вот с влажностью беда...
-кусь-
Слова "каждый датчик откалиброван на заводе" надо понимать правильно. Каждый датчик действительно откалиброван но, при одной единственной температуре и при одном значении влажности. Вот для этой точки указаны значения в технической спецификации. Даже очень дорогие датчики влажности калибруют все по нескольким точкам влажности но это уже гарантирует более менее сходные результаты. Для дорогих датчиков есть графики с погрешностями от температуры и диапазона влажности. По факту дорогой датчик с большей погрешностью будет показывать более точные значения. Например SHT71 с погрешностью 3% значительно точнее dht22 с погрешностью 2%. Но для SHT71 есть график погрешности
sht71.jpg
Для dth22 таких кривых с погрешностью нет по причине, если Вы увидите какой там разброс и реальная погрешность, Вы такое просто не захотите покупать. Датчик dht22 только для обучения в проектах где используется один датчик, чтобы показать, как это в принципе работает. А для проекта в котором требуется более одного датчика с условием показания должны совпадать, dht22 плохой выбор.

Для обучения брать проекты попроще, либо покупать подходящие под задачу датчики. В Вашем случае нужны датчики с характеристиками не хуже SHT85 (SHT35).
SHT85.jpg
Из вышеприведенных данных для SHT85 в диапазоне температур от 0 до 80 градусов Цельсия погрешность между показаниями датчиков будет доходить до 4%. А для dht22 данный показатель не нормируется, а в реальности составляет двухзначное число процентов, что плохо для продаж dht22 и поэтому скромно умалчивается.
 
  • Лойс +1
Реакции: noindex

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
Господа, спасибо всем ответившим!
Наверное нужно уточнение, для проекта важна скорее синхронность показаний датчиков.
Т.е. не то что бы они показывали реальный точный процент влажности, а чтобы они показывали его одинаковым.
Грубо говоря сейчас они у меня на плате, в комнате должны показывать 52% все 3, а при выносе на улицу этой платы к примеру 75%.
И фиг с ним что на улице реально 92%.
Это нужно чтобы запустить вытяжку при меньшей влажности в одном помещении относительно другого.

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

Исходя из всего вышенаписанного, сдается мне что для меня лучшим решением будет поехать с ардуиной в магазин и на месте втыкать в макетную плату разные датчики dht22.
По наличию показывает 50+ штук, надеюсь найдется 3 близнеца...
 

rkit

★★★✩✩✩✩
5 Фев 2021
471
114
А ты уверен, что участники форума не имеют совершенно такие же показания в лаптях, никогда не проверяли их как положено, и просто довольны, что что-то иногда начинает жужжать?
И даже не к тому, что участники дураки, а к тому, что может и не нужна в твоем проекте великая точность измерений?
 
  • Лойс +1
Реакции: noindex

noindex

✩✩✩✩✩✩✩
24 Сен 2022
18
0
@rkit, согласен, уверенным в этом быть нельзя.

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

С разбегом датчиков в 5% возникает 1й вопрос - какой куда вешать?
Вариант 1.
Тот что показывает меньше на улицу, тот что больше в гараж.
В этом случае вытяжка будет молотить даже если реальная влажность на улице будет на несколько % выше чем в гараже.
Не айс.

Вариант 2.
Тот что показывает больше на улицу, тот что меньше в гараж.
В этом случае вытяжка наоборот будет филонить и включаться только если влажность на улице ниже чем в гараже более чем на 5-6%
Вариант поинтереснее конечно, но хотелось бы по возможности его избежать.
 

poty

★★★★★★✩
19 Фев 2020
2,956
886
@noindex, с моей точки зрения данный алгоритм несостоятелен. Допустим, на улице температура низкая, абсолютная влажность будет тоже низкой. Будете вымораживать помещение?
Аналогично - обратная ситуация.
С другой стороны - гистерезис никто не отменял, как и задание границ включения/выключения. Если есть погрешность в 5%, то ловить миллиметраж по точности поддержания влажности в любом случае - ерунда полная.
 
  • Лойс +1
Реакции: ТехнарьКто