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

Вопросы по встроенным блокам
Ответить
smirnoff
Рядовой
Сообщения: 10
Зарегистрирован: 08.12.2019{, 19:38}
Репутация: 0
Имя: Олег

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

#1

Сообщение smirnoff » 17.04.2020{, 22:08}

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

Программа 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 не обращайте внимания в настройках строки разные.
Вложения
IMG_20200417_220349.jpg

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#2

Сообщение ecoins » 17.04.2020{, 22:18}

Nano подключаете через спец.плату под Nano?
Проверьте питание на DHT когда он не работает.

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

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

#3

Сообщение Alias » 17.04.2020{, 23:51}

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

smirnoff
Рядовой
Сообщения: 10
Зарегистрирован: 08.12.2019{, 19:38}
Репутация: 0
Имя: Олег

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

#4

Сообщение smirnoff » 18.04.2020{, 01:46}

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

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

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

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

#5

Сообщение nalnik » 18.04.2020{, 06:12}

smirnoff писал(а):
17.04.2020{, 22:14}
Датчик влажности и температуры DHT22
Скажите а как вы подключили DHT22 ?
Попробуйте Третью ногу датчика посадить на минус.
Я хочу быть добрее, но люди сами нарываются.

smirnoff
Рядовой
Сообщения: 10
Зарегистрирован: 08.12.2019{, 19:38}
Репутация: 0
Имя: Олег

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

#6

Сообщение smirnoff » 30.04.2020{, 17:37}

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

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

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

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

#7

Сообщение nalnik » 30.04.2020{, 18:06}

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

Dragony
Сержант
Сообщения: 133
Зарегистрирован: 02.01.2020{, 11:55}
Репутация: 2
Имя: Александр

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

#8

Сообщение Dragony » 30.04.2020{, 18:29}

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

smirnoff
Рядовой
Сообщения: 10
Зарегистрирован: 08.12.2019{, 19:38}
Репутация: 0
Имя: Олег

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

#9

Сообщение smirnoff » 30.04.2020{, 20:47}

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

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

Dragony
Сержант
Сообщения: 133
Зарегистрирован: 02.01.2020{, 11:55}
Репутация: 2
Имя: Александр

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

#10

Сообщение Dragony » 30.04.2020{, 21:23}

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

Ответить

Вернуться в «Штатные блоки»