Например TDA7294

Форум РадиоКот • Просмотр темы - DHT22 работает через раз
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср июл 09, 2025 00:56:34

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: DHT22 работает через раз
СообщениеДобавлено: Пн апр 04, 2016 03:00:55 
Открыл глаза

Зарегистрирован: Вт мар 23, 2010 01:17:44
Сообщений: 46
Рейтинг сообщения: 0
Здравствуйте!

Я столкнулся с проблемой в работе датчика температуры и влажности DHT-22 — «то работает, то не работает». Может быть, кто-нибудь сможет посоветовать, в чём проблема? Третий день мучаюсь.

1). Датчиков две штуки, подключены к ATmega328p (На плате Arduino Nano 3).
2). Подключены через трёхжильные аудиокабели длиной ~30 и ~60 см.
3). Опрашиваются раз в 5 секунд.
4). Подтяжка 4,7 кОм(убирать пробовал), напряжение работы ~5,3В.
5). Соединения пропаивал, кабель менял.
6). Все остальные функции системы работают нормально.
7). Если замкнуть хотя бы 2 контакта DHT языком, она работает. Пробовал заземлять линию данных через резистор в 33 кОм (примерное сопротивление языка) — не помогает. Пробовал ставить конденсаторы разных ёмкостей между шиной и землёй, или между землёй и питанием — тоже не помогает.
Проблема остаётся одна и та же: иногда несколько минут работают оба датчика, иногда — только один, иногда перестают работать оба. Когда не работают — или вообще не отвечают (ошибка уже на этапе if (DHT_PIN&(1<<bit)) {*h=0x8000; *t=0; return 0;} ), или непонятным образом возвращают "влажность 0, температура 0" (последнее время добился того, что другой ошибки нет).



Функция опроса датчиков:
Спойлер
Код:
/* Name: dht.c
Пример чтения датчиков DHT11 и DHT22 - автоматическое разпознавание.
Взято с http://homes-smart.ru/index.php/oborudovanie/datchiki/datchiki-vlazhnosti-dht11-i-dht22
Проверено на м/к AVR

 */
#include <avr/io.h>
#ifndef DHT_H
#define DHT_H


#define DHT_PORT        PORTD // порт
#define DHT_DDR         DDRD
#define DHT_PIN         PIND

int dhtread (char bit, int *h, int *t)
//bit — номер бита порта,
// в *h будет влажность (в десятых долях %), в *t — температура, в десятых долях *.
// соответственно, надо результат на 10 разделить.
// если в программе имеются прерывания,то не забывайте их отлючать перед чтением датчика
{

uint8_t  j = 0, i = 0;
char datadht[5];
   
datadht[0] = datadht[1] = datadht[2] = datadht[3] = datadht[4] = 0; 
   
DHT_DDR|=(1<<bit); //pin as output
DHT_PORT&=~(1<<bit);
_delay_ms(18);


DHT_PORT|=(1<<bit);
DHT_DDR&=~(1<<bit);

_delay_us(50); // +1 для attiny(коррекция без кварца)
if (DHT_PIN&(1<<bit)) {*h=0x8000; *t=0; return 0;}
_delay_us(80); // +1 для attiny(коррекция без кварца)
if (!(DHT_PIN&(1<<bit))){*h=0x8000; *t=0x8000; return 0;};

while (DHT_PIN&(1<<bit));
for (j=0; j<5; j++)
    {
    datadht[j]=0;
    for(i=0; i<8; i++)
        {
        while (!(DHT_PIN&(1<<bit)));
        _delay_us (30);
        if (DHT_PIN&(1<<bit))
            datadht[j]|=1<<(7-i);
        while (DHT_PIN&(1<<bit));
        }
    }
   

   if (datadht[0]==0 && datadht[1]==0 && datadht[2]==0 && datadht[3]==0)
   {
   *h=0xfffe;
   *t=0xfffe;
   return 0;//обработка ошибки:не подключен датчик !!
   }
   else if (datadht[0] + datadht[1] + datadht[2] + datadht[3] == datadht[4])
      {
      if (datadht[1]==0 && datadht[3]==0)
         { //если эти переменные массива обе равны нулю,то это dht11
         *t=datadht[2]*10;
         *h=datadht[0]*10;
         }
      else 
         { // dht22
         *h = datadht[0] * 256 + datadht[1];
         *t = (datadht[2] & 0x7F)* 256 + datadht[3];
         if (datadht[2] & 0x80)  *t *= -1;
         }
   } else
      {
      *h=0xffff;
      *t=0xffff;
      return 0; //обработки ошибки: CHECKSUM !!
      }

 
// тут переменные int f - температура*10 и h - влажность*10
// можно переделать в float переменные ,скорректировав формулы выше..


   return 1;
}

#endif


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Пн апр 04, 2016 07:54:49 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
А без длинных проводов, непосредственно на плате как работает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Пн апр 04, 2016 13:28:12 
Открыл глаза

Зарегистрирован: Вт мар 23, 2010 01:17:44
Сообщений: 46
Рейтинг сообщения: 0
Ага, проблема решена.
Внимательное наблюдение за DHT22 показало, что они перестают работать при температуре ниже определённой (примерно 22-26 С). Я погуглил и выяснил, что это — стандартная проблема, связанная с неправильным таймингом сигналов. Разбираться, что именно не так, не стал, просто подключил другую библиотеку (вот эту, отредактированную для совместимости с WinAVR).

Теперь всё работает — по крайней мере, при температуре 9 градусов тепла и выше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Вт апр 12, 2016 17:59:10 
Открыл глаза

Зарегистрирован: Вт мар 23, 2010 01:17:44
Сообщений: 46
Рейтинг сообщения: 0
Да что ж такое-то?!
Неделю проработали, потом опять перестали отвечать — разом оба и с обоими вариантами библиотеки!


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Вт июн 24, 2025 20:22:15 
Родился

Зарегистрирован: Вт июн 24, 2025 19:57:01
Сообщений: 2
Рейтинг сообщения: 0
Подниму тему с этим DHT22, тоже долго воевал с этим датчиком, причем разные датчики отваливаются с разной периодичность. У меня причина - наводки на проводах, расстояние до датчика примерно 60 см, снимает данные ESP32. Датчик находится в РЩ с кучей автоматов и контакторов. Простенький фильтр по питанию улучшил ситуацию, но датчик продолжил отваливаться, может неделю проработать, а может 2 раза за 1 час отвалиться. Так вот, сделал выключатель на двух транзисторах полевых, отключают и землю и питание датчика. Одного питания почему-не достаточно. Транзисторы управляются с контроллера, в коде проверка NaN и при условии присутствия NaN передергиваются пины на которых висят затворы транзисторов, NaN не попадает в показания, вместо него подставляются старые показания, пока датчик перезагружается. Другого решения не нашел, качество датчиков этих очень испортилось. Может за 9 лет есть другое решение? Я перелопатив интернет не нашел. Причем у меня 12 датчиков по дому развешено и где расстояние 10 - 15 см все отлично. С увеличением расстояния начинаются отвалы датчика в виде NaN.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Вт июн 24, 2025 23:42:37 
Говорящий с текстолитом

Карма: -10
Рейтинг сообщений: 171
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1500
Рейтинг сообщения: 0
Другого решения не нашел, качество датчиков этих очень испортилось.
Есть проект с DHT22. С али. Работает с 2015г. Без каких-либо проблем. Но естественно - датчик находится рядом с МК. В паре см.

Может за 9 лет есть другое решение? Я перелопатив интернет не нашел. Причем у меня 12 датчиков по дому развешено и где расстояние 10 - 15 см все отлично. С увеличением расстояния начинаются отвалы датчика в виде NaN.
Естественно - интерфейс DHT22 не рассчитан на такие расстояния.
Решение всегда было: Возьмите любой простой дешёвый МК. Поставьте его на плату с датчиком. Простая программа опроса. А дальше - передавайте данные на свой ESP32 как угодно: хоть через UART, хоть через RS-485 на километр.

Вот например: https://www.aliexpress.com/item/1005009038479145.html 10 шт. в мелких корпусах всего за 1.43 евро - хватит на все ваши датчики.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Ср июн 25, 2025 01:55:56 
Родился

Зарегистрирован: Вт июн 24, 2025 19:57:01
Сообщений: 2
Рейтинг сообщения: 0
Не открывается страничка.

Да и не хочется городить огород с UART и т.д. На ESP32 свободных пинов нет уже. Да и если кабель до DHT22 лежит не рядом с электропроводкой, то на 1-1,5 метра нормально работает. На али есть DHT22 с ESP01, но там с измерениями беда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Ср июн 25, 2025 10:01:16 
Говорящий с текстолитом

Карма: -10
Рейтинг сообщений: 171
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1500
Рейтинг сообщения: 0
Не открывается страничка.
Вас на али забанили? :shock:
Страничка - ссылка на PY32F002 в 8-ногом корпусе. У меня нормально открывается.
Не важно какой МК - любой удобный.

Да и не хочется городить огород с UART и т.д. На ESP32 свободных пинов нет уже.
А зачем они? Выкидываете теперешний колхоз, заменяете на UART на тех же ногах. Новых ног ни одной не нужно.

Да и если кабель до DHT22 лежит не рядом с электропроводкой, то на 1-1,5 метра нормально работает.
Тогда остаётся покупать бубен. Иначе нормальной работы не добиться. :dont_know:
Даже даташит рекомендует кабель не более 1м. А лучше (при таком интерфейсе и таком окружении) - максимум несколько см.

в коде проверка NaN
"Проверка на NaN?"
Это вы видимо какую-то "библиотеку" используете?
Так как в посылке DHT22 нет никакой плавучки.
А если посылка исказилась помехой так, что NaN не возникло, а только данные изменились? Примете эти данные как нормальные?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Ср июн 25, 2025 19:53:26 
Родился

Зарегистрирован: Ср дек 21, 2022 19:39:55
Сообщений: 6
Рейтинг сообщения: 0
Во влагометре с PIC16F628 (без чиполин и пр. дурИн...) DHT22 работает без "пропаданий" и зависаний... уже не один месяц. Конечно, точность этого датчика, вернее его НЕточность, оставляет желать лучшего. Причем, если в первой полусотне процентов недобор против эталона составляет 5-8%, то после 50% это самое отставание значения - 8-10%. Врёт (гадюка) нелинейно/безбожно! Для снижения собственного нагрева DHT22, питание на него подано минимальное - 3,3В через резистор со стабилитроном. Есть задумка вынести датчик от платы проводками сантиметров на пять, да всё не до него... В термометре с DS18B20 небольшое отдаление оного от "вроде бы не греющейся" платы довело точность до 0,1 градуса. Измерительная техника - она такая.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DHT22 работает через раз
СообщениеДобавлено: Ср июн 25, 2025 23:30:05 
Говорящий с текстолитом

Карма: -10
Рейтинг сообщений: 171
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1500
Рейтинг сообщения: 0
Для снижения собственного нагрева DHT22, питание на него подано минимальное - 3,3В через резистор со стабилитроном.
Интересно - зачем???
Потребление моего DHT22 во сне = ~12мкА. Не думаю, что этот ток его как-то заметно греет. А вот запитка через резистор может приводить к проблемам. Может и неточность ваша из-за этого.
Есть задумка вынести датчик от платы проводками сантиметров на пять, да всё не до него... В термометре с DS18B20 небольшое отдаление оного от "вроде бы не греющейся" платы довело точность до 0,1 градуса.
Мой девайс с DHT22 - на батарейном питании. На MSP430FR5739. Почти всё время спит. Просыпается каждые 5 минут, на буквально пару секунд, чтобы сделать замер и опять в сон. Суммарное потребление всего девайса во сне = ~30мкА. Не греется.

Насчёт погрешности: В одном помещении работает этот мой девайс с DHT22 и другой девайс - с BME280. Разница в показаниях влажности между ними сейчас = ~0.5% (50% vs 50.5%). Может конечно врут в одну сторону, кто его знает....


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y