Страница 1 из 1

Вопрос по блоку DHT

Добавлено: 17 апр 2020, 22:14
smirnoff
Доброго дня всем форумчанам.
Подскажите пожалуйста может кто сталкивался с такой проблемой:

Программа FLProg-6.3.1
Arduino IDE 1.8.10
Датчик влажности и температуры DHT22
Плата arduino NANO (китайская)

Нарисовал схему вывода температуры и влажности с данного датчика на LCD экран. (все блоки стандартные из программы)
Скомпилировал, залил скетч в NANO все отлично работает показывает температуру и влажность при подключенном кабеле USB к компьютеру.
Как только подключаешь кабель USB к любому другому источнику (кроме компьютера) и при подаче питания на вход Vin (12 V) и при подаче питания на ногу 5V (соответственно 5 вольт) на экран перестают выводиться показания с датчика,
пишет влажность 1 % и температура 1 °С.
Датчик подключал к разным ногам, поведение одинаковое.

Схему подключения не прилагаю, на другом скетче все работает с любым питанием.




Вот скетч:

#include "DHT_NEW.h"
#include <LiquidCrystal.h>
LiquidCrystal _lcd1(9, 8, 4, 5, 6, 7);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;

DHT _dht1;

unsigned long _dht1LRT = 0UL;
unsigned long _dht1Tti = 0UL;
int _disp2oldLength = 0;
int _disp1oldLength = 0;

void setup()
{

_lcd1.begin(20, 4);
_dht1.setup(10);
_dht1LRT = millis();
_dht1Tti = millis();

}
void loop()
{

if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}

//Плата:1
if(_isTimer(_dht1Tti, 1000)) {
if(_isTimer(_dht1LRT,( _dht1.getMinimumSamplingPeriod()))) {
_dht1.readSensor();
_dht1LRT = millis();
_dht1Tti = millis();
}
}
if (!(0)) {
_dispTempLength1 = ((((String("humidity ")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String(" %"))))).length();
if (_disp2oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((((String("humidity ")) + (( _floatToStringWitRaz(_dht1.humidity,2))) + (String(" %")))));
} else {
if (_disp2oldLength > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
if (!(0)) {
_dispTempLength1 = ((((String("temperatura ")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String(" C"))))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((((String("temperatura ")) + (( _floatToStringWitRaz(_dht1.temperature,2))) + (String(" C")))));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}

}

String _floatToStringWitRaz(float value, int raz)
{

return String(value,raz);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}

Отправлено спустя 6 минут 2 секунды:
На надпись над блоком LCD не обращайте внимания в настройках строки разные.

Вопрос по блоку DHT

Добавлено: 17 апр 2020, 22:18
ecoins
Nano подключаете через спец.плату под Nano?
Проверьте питание на DHT когда он не работает.

Вопрос по блоку DHT

Добавлено: 17 апр 2020, 23:51
Alias
У меня была подобная проблема, правда на Меге, но не думаю, что это особенности процессоров. Я обратил внимание, что датчик или очень неустойчиво, или вовсе не работает на линиях, поддерживающих ШИМ. Я не знаю, в чем проблема - ide или flprog, поэтому просто имею это в виду. А датчики пробовал разные, из разных партий, и с обвязкой на плате, и без нее. Помнится, ретроградный Меркурий тогда был, кто знает, кто знает...

Вопрос по блоку DHT

Добавлено: 18 апр 2020, 01:49
smirnoff
ecoins писал(а): 17 апр 2020, 22:18 Nano подключаете через спец.плату под Nano?
Проверьте питание на DHT когда он не работает.
Питание есть , я же написал, все работает с другим скетчем.
В рабочем варианте библиотека #include "DHT.h"

Отправлено спустя 2 минуты 46 секунд:
Alias писал(а): 17 апр 2020, 23:51 У меня была подобная проблема, правда на Меге, но не думаю, что это особенности процессоров. Я обратил внимание, что датчик или очень неустойчиво, или вовсе не работает на линиях, поддерживающих ШИМ. Я не знаю, в чем проблема - ide или flprog, поэтому просто имею это в виду. А датчики пробовал разные, из разных партий, и с обвязкой на плате, и без нее. Помнится, ретроградный Меркурий тогда был, кто знает, кто знает...
Датчик пробовал на разные выхода цеплять - результат один, ардуино платы тоже пробовал разные - результат один.
Проблема скорее всего в библиотеке "DHT_NEW.h"

Вопрос по блоку DHT

Добавлено: 18 апр 2020, 06:12
nalnik
smirnoff писал(а): 17 апр 2020, 22:14 Датчик влажности и температуры DHT22
Скажите а как вы подключили DHT22 ?
Попробуйте Третью ногу датчика посадить на минус.

Вопрос по блоку DHT

Добавлено: 30 апр 2020, 17:52
smirnoff
nalnik писал(а): 18 апр 2020, 06:12
smirnoff писал(а): 17 апр 2020, 22:14 Датчик влажности и температуры DHT22
Скажите а как вы подключили DHT22 ?
Попробуйте Третью ногу датчика посадить на минус.
Дело в том что с другим скетчем то все работает. Со штатным блоком тоже работает только если питаешь
arduino от USB компьютера, если питать также через USB но не от компьютера или любым другим способом не работает.

Отправлено спустя 15 минут 13 секунд:
Заработало, когда подключил экран через I2C

Вопрос по блоку DHT

Добавлено: 30 апр 2020, 18:06
nalnik
smirnoff писал(а): 30 апр 2020, 17:52 Заработало, когда подключил экран через I2C
Какое I2C ?
Датчики у меня работают с тремя проводами. Третий из четырех на минус - если нет то творит чудеса.

Вопрос по блоку DHT

Добавлено: 30 апр 2020, 18:29
Dragony
Ну, не знаю...
Резистор подтягивающий на 4,7...10кОм цепляли к сигнальной ноге датчика?

Вопрос по блоку DHT

Добавлено: 30 апр 2020, 20:50
smirnoff
Dragony писал(а): 30 апр 2020, 18:29 Ну, не знаю...
Резистор подтягивающий на 4,7...10кОм цепляли к сигнальной ноге датчика?
Ага

Отправлено спустя 3 минуты 3 секунды:
nalnik писал(а): 30 апр 2020, 18:06
smirnoff писал(а): 30 апр 2020, 17:52 Заработало, когда подключил экран через I2C
Какое I2C ?
Датчики у меня работают с тремя проводами. Третий из четырех на минус - если нет то творит чудеса.
До этого экран был подключен по 4 проводной схеме, потом взял другой экран и подключил через i2c
Датчик и в том и в другом случае работал на 3 ногах

Вопрос по блоку DHT

Добавлено: 30 апр 2020, 21:23
Dragony
nalnik писал(а): 30 апр 2020, 18:06 Датчики у меня работают с тремя проводами. Третий из четырех на минус - если нет то творит чудеса.
"В радиотехнике нет чудес - есть только плохие контакты!"(с) :)