ESP и датчик HTU21 = тормоза

Вопросы от новичков
Ответить
Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

ESP и датчик HTU21 = тормоза

#1

Сообщение diman27 » 11.07.2020{, 05:10}

Привет всем. Есть часы на ленте ws2812, все работает отлично, но при добавлении датчика HTU21 бегущая строка начинает безбожно тупить, с DS все хорошо, но нужна и влажность. Может дело в блоке или библиотеке? Ни кто не сталкивался?

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

ESP и датчик HTU21 = тормоза

#2

Сообщение Ingwar » 11.07.2020{, 09:42}

diman27 писал(а):
11.07.2020{, 05:10}
Может дело в блоке или библиотеке?
Немного любопытства и желания, и сможете найти информацию о необходимом времени для осуществления замеров температуры и влажности самим датчиком. Потом увидите как это реализовано в библиотеке (через delay) и выберите для себя решение - другая библиотека или период опроса датчика в Вашей программе.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

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

ESP и датчик HTU21 = тормоза

#3

Сообщение ecoins » 11.07.2020{, 12:58}

Попробуйте блок с библиотекой от ecoins
Test DHT_ecoins.flp
(46.33 КБ) 44 скачивания
RT_21_HW_DHTx_v3.1.zip
(8.61 КБ) 33 скачивания
Описание:
Датчик температуры и влажности типа DHT21.
------------------------------------------------------------------
Не поддерживает датчик DHT11 (к нему много претензий по точности и качеству)
Измеряет температуру и влажность воздуха:
1. Возвращает температуру воздуха в градусах С х10 (Выход T - формат int).
Для перевода в формат float результат нужно поделить на 10.
2. Возвращает влажность воздуха в % х10 (Выход H - формат int).
Для перевода в формат float результат нужно поделить на 10.
3. По конструктивным особенностям сенсора вызовы не должны бвть чаще чем 1 раз в 2 сек.
4. Запущенный процесс измерения занимает примерно 5,7мс - в это время процессор занят и реагирует
только на аппаратные прерывания, время обработки которого не должен превышать 30-50мкс -
это может привести к потери сигнала с сенсора и соответственно приведет к ошибке измерения.
5. После нескольких подряд ошибочных измерений (по умолчанию=3),
устанавливается ошибка, которая будет держаться до первого успешного измерения.
При ошибке выходным значениям T и H присваивается значение =1.
6. Если вход pin<0 или pin>=100, то сенсор считается неподключенным: T=1, H=1.
-----------------------------------------------------------------
Рекомендации - устанавливать на плате, которая вызывается с периодом >250мс - 1сек.
-----------------------------------------------------------------
ecoins@mail.ru 28.05.20 - полностью обновленная версия (3.1) библиотеки RT_HW_DHTx.h
Библиотека адаптирована для использования с FLProg.

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

ESP и датчик HTU21 = тормоза

#4

Сообщение diman27 » 11.07.2020{, 14:21}

А разве DHT и HTU одинаковые библиотеки используют?

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

ESP и датчик HTU21 = тормоза

#5

Сообщение ecoins » 11.07.2020{, 20:54}

HTU21 - он у Вас через подключается через пин или через i2c?

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

ESP и датчик HTU21 = тормоза

#6

Сообщение diman27 » 12.07.2020{, 05:02}

Через i2c.

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

ESP и датчик HTU21 = тормоза

#7

Сообщение ecoins » 12.07.2020{, 10:30}

Посмотрел и код блока -
СпойлерПоказать
void setup()
{
_HTU21_Instance.begin();
}
void loop()
{
//Плата:1
if( (_HTU21_StartTime ==0) || ( _isTimer(_HTU21_StartTime, 1000 ))) {
_HTU21_StartTime = millis();
_HTU21_HOut = _HTU21_Instance.readHumidity();
_HTU21_TOut = _HTU21_Instance.readTemperature();
}
он простой, и библиотеку. Вроде никаких подводных камней не увидел.
Датчика под руками нет проверить.
Ничего подсказать не могу - если только подтягивающие резисторы 4.7-10к на шину i2c поставить(если их нет).

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

ESP и датчик HTU21 = тормоза

#8

Сообщение Ingwar » 12.07.2020{, 12:26}

ecoins писал(а):
12.07.2020{, 10:30}
Вроде никаких подводных камней не увидел.
Фрагменты из библиотеки
float HTU21D::readHumidity(void)
{
//Request a humidity reading
Wire.beginTransmission(HTDU21D_ADDRESS);
Wire.write(TRIGGER_HUMD_MEASURE_NOHOLD); //Measure humidity with no bus holding
Wire.endTransmission();

//Hang out while measurement is taken. 50mS max, page 4 of datasheet.
delay(55);
float HTU21D::readTemperature(void)
{
//Request the temperature
Wire.beginTransmission(HTDU21D_ADDRESS);
Wire.write(TRIGGER_TEMP_MEASURE_NOHOLD);
Wire.endTransmission();

//Hang out while measurement is taken. 50mS max, page 4 of datasheet.
delay(55);
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

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

ESP и датчик HTU21 = тормоза

#9

Сообщение ecoins » 13.07.2020{, 00:06}

Спасибо, не заметил delay(55)
Закажу датчик, сделаю библиотеку без "тормозов".

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

ESP и датчик HTU21 = тормоза

#10

Сообщение diman27 » 13.07.2020{, 17:26}

Так у меня датчик есть, могу протестировать.

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

ESP и датчик HTU21 = тормоза

#11

Сообщение ecoins » 14.07.2020{, 05:48}

diman27 писал(а):
13.07.2020{, 17:26}
Так у меня датчик есть, могу протестировать.
Попробую без датчика сделать библиотеку. Наверное через несколько дней - есть другая незаконченная работа.

Ответить

Вернуться в «Начинающим»