ESP и датчик HTU21 = тормоза
- diman27
 - Сержант
 - Сообщения: 291
 - Зарегистрирован: 06 сен 2015, 07:33
 - Откуда: Белово
 - Благодарил (а): 4 раза
 
ESP и датчик HTU21 = тормоза
Привет всем. Есть часы на ленте ws2812, все работает отлично, но при добавлении датчика HTU21 бегущая строка начинает безбожно тупить, с DS все хорошо, но нужна и влажность. Может дело в блоке или библиотеке? Ни кто не сталкивался?
			
			
									
						- 
				Ingwar
 - Полковник
 - Сообщения: 1928
 - Зарегистрирован: 28 окт 2015, 22:47
 - Откуда: Ленобласть
 - Имя: Игорь
 - Поблагодарили: 3 раза
 
ESP и датчик HTU21 = тормоза
Немного любопытства и желания, и сможете найти информацию о необходимом времени для осуществления замеров температуры и влажности самим датчиком. Потом увидите как это реализовано в библиотеке (через delay) и выберите для себя решение - другая библиотека или период опроса датчика в Вашей программе.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
			
						- 
				ecoins
 - Полковник
 - Сообщения: 4235
 - Зарегистрирован: 12 фев 2016, 11:40
 - Откуда: Шатура
 - Имя: Энвер
 - Благодарил (а): 188 раз
 - Поблагодарили: 252 раза
 
ESP и датчик HTU21 = тормоза
Попробуйте блок с библиотекой от ecoins
Описание:
Датчик температуры и влажности типа 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.
			
			
						Датчик температуры и влажности типа 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.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
			
						- 
				ecoins
 - Полковник
 - Сообщения: 4235
 - Зарегистрирован: 12 фев 2016, 11:40
 - Откуда: Шатура
 - Имя: Энвер
 - Благодарил (а): 188 раз
 - Поблагодарили: 252 раза
 
ESP и датчик HTU21 = тормоза
Посмотрел и код блока -
[spoiler]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();
}[/spoiler]
он простой, и библиотеку. Вроде никаких подводных камней не увидел.
Датчика под руками нет проверить.
Ничего подсказать не могу - если только подтягивающие резисторы 4.7-10к на шину i2c поставить(если их нет).
			
			
									
						[spoiler]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();
}[/spoiler]
он простой, и библиотеку. Вроде никаких подводных камней не увидел.
Датчика под руками нет проверить.
Ничего подсказать не могу - если только подтягивающие резисторы 4.7-10к на шину i2c поставить(если их нет).
- 
				Ingwar
 - Полковник
 - Сообщения: 1928
 - Зарегистрирован: 28 окт 2015, 22:47
 - Откуда: Ленобласть
 - Имя: Игорь
 - Поблагодарили: 3 раза
 
ESP и датчик HTU21 = тормоза
Фрагменты из библиотеки
[scroll]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);[/scroll]
[scroll]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);[/scroll]
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
			
						- 
				ecoins
 - Полковник
 - Сообщения: 4235
 - Зарегистрирован: 12 фев 2016, 11:40
 - Откуда: Шатура
 - Имя: Энвер
 - Благодарил (а): 188 раз
 - Поблагодарили: 252 раза
 
ESP и датчик HTU21 = тормоза
Спасибо, не заметил  delay(55)
Закажу датчик, сделаю библиотеку без "тормозов".
			
			
									
						Закажу датчик, сделаю библиотеку без "тормозов".
- 
				ecoins
 - Полковник
 - Сообщения: 4235
 - Зарегистрирован: 12 фев 2016, 11:40
 - Откуда: Шатура
 - Имя: Энвер
 - Благодарил (а): 188 раз
 - Поблагодарили: 252 раза
 
ESP и датчик HTU21 = тормоза
Попробую без датчика сделать библиотеку. Наверное через несколько дней - есть другая незаконченная работа.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей