hd44780 0 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Привет всем. Вот обзавёлся этим датчиком и решил заменить им старый добрый проверенный HIH-3610 (аналоговый датчик влажности с выходом на АЦП), но сдохший к великому сожалению :crying: . В конечный прибор пока не вставлял, в целях тестирования/отладки подключил его к отдельной меге8@16MHz. Результаты для простоты гоню на USART и далее в комп. На базе примеров из интернета написал функции для работы с этим датчиком. Использую ногодрыг, т.к. в конечном устройстве на меге8 ноги аппаратного i2C заблокированы АЦП (там ещё MPX6115A висит). Это не STM32 :rolleyes: ... Датчик запустился в общем-то без проблем, данные с него приходят исправно, но, на мой взгляд, немного странные. Например: Temp=24.54; Hum=28.76 Temp=24.55; Hum=28.58 Temp=24.55; Hum=28.45 Temp=24.54; Hum=28.30 Temp=24.53; Hum=28.18 Temp=24.51; Hum=28.15 Temp=24.51; Hum=28.12 Temp=24.51; Hum=28.03 Temp=24.50; Hum=27.91 Temp=24.51; Hum=27.87 Temp=24.54; Hum=27.97 Temp=24.56; Hum=27.97 Temp=24.57; Hum=27.91 Temp=24.57; Hum=28.15 Temp=24.58; Hum=28.18 Замеры раз в секунду. В 30 см от него лежит DS18B20, показывает ~22 градуса. Если долго держать включённым, температура медленнно но повышается. это нормально? В целом вопрос теоретический, у меня прибор сам вырубается через 10 сек после включения. А вот влажность какая-то пониженная. Эталона у меня, правда, нет, но когда HIH-3610 был в норме, он 30% даже в жару не показывал... И ещё вопрос. По стандарту I2C вначале положено передавать адрес девайса. В некоторых примерах под ардуину я видел передачу этого адреса. Но когда я это делаю, оно где-то виснет (не разбирался где). Но у меня нет доверия к ардуино-примерам, т.к. там значения из датчика везде делят на 65535, хотя по доке на SHT21 там разрешения 16 бит нигде нет, для температуры максимум 14 бит, для влажности - 12. Я также не припаял pull-up резюки к ногам. Для этого модуля они вроде не нужны. Или я ошибаюсь? Кто-то может помочь? Код для CvAVR приложил. Сам датчик полностью адекватный - кладу палец - температура повышается (кстати и влажность тоже :) ), открываю окно (идёт холодный воздух) - понижается. подышу на него - влажность увеличивается. Снимаю эти воздействия - показания возвращаются обратно. Спасибо. Mega8_SHT11.7z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Вот чуток инфы с we.easyelectronix.ru SHTxx_Design_Guide.zip лишней думаю не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivn 0 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Я нe работал с SHT11, но когда-то изучал. И ещё вопрос. По стандарту I2C вначале положено передавать адрес девайса. В некоторых примерах под ардуину я видел передачу этого адреса. Цитата из DataSheet-а: "The sensor cannot be addressed by I2C protocol; however, the sensor can be connected to an I2C bus without interference with other devices connected to the bus. The controller must switch between the protocols." Я также не припаял pull-up резюки к ногам. На коротком расстоянии можно пользоваться внутреннюю подтяжку на линии потра АВР, но надеяться на неё не стоит, и лучше подтянуть резистром в 10КОм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Вот чуток инфы с we.easyelectronix.ru SHTxx_Design_Guide.zip лишней думаю не будет. Да, спасибо. я видел кое-где упоминания этой доки, но все ссылки были битые :( На коротком расстоянии можно пользоваться внутреннюю подтяжку на линии потра АВР, но надеяться на неё не стоит, и лучше подтянуть резистром в 10КОм. Резюки припаяю ... хз. У меня расстояние между датчиком и процом максимум 5 см (если мерять по длине проводка). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amiller 2 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба В документации на SHT10 (SHT11) есть указания по дизайну платы и по ограничениям на частоту опросов, чтобы свести к минимуму саморазогрев девайса. Удивительно, что Вам удалось без документации запустить обмен. Там в общем то не совсем I2C. Ещё там есть CRC, которую желательно проверять. Да и процедуры сброса интерфейса на стороне SHT надо реализовать. В условиях помех зависание по шине обмена - вовсе не редкость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Дико извиняюсь, датчик SHT21 - http://www.ebay.com/itm/112053626741?_trks...K%3AMEBIDX%3AIT Дизайн платы - китайский и пуллапы 10 кил там уже есть. Поэтому этот вопрос отпадает. Про ограничения на частоту опроса я в курсе, делаю раз секунду (или 2 ) - и так и так делал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 27 ноября, 2016 Опубликовано 27 ноября, 2016 · Жалоба Но у меня нет доверия к ардуино-примерам, т.к. там значения из датчика везде делят на 65535, хотя по доке на SHT21 там разрешения 16 бит нигде нет, для температуры максимум 14 бит, для влажности - 12. ну если ардуинам не верите, то даташит Вы читали? :) там пишут, что датчик отдаёт данные всегда в 16-битном формате, только, к примеру, для 12-битного разрешения младшие 4 бита не считаются (и лучше их после приёма принудительно сбросить, так бит 1 указывает на тип данных 0 - температура, 1 - влажность). и формула из даташита H = -6 + 125*<16-bits_data>/65536 немного не совпадает с тем, что у Вас в исходниках: return -6.0F + 125.0F*(float)hum_raw/4096.0F; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M_Andrey 0 27 ноября, 2016 Опубликовано 27 ноября, 2016 · Жалоба Датчик запустился в общем-то без проблем, данные с него приходят исправно, но, на мой взгляд, немного странные. Если данные более-менее адекватные, значит с ПО все в порядке, а далее начинается "магия". Любой датчик температуры (влажности) показывает температуру (влажность) самого себя и уже ваша проблема заставить его показывать температуру (влажность) среды, которую вы хотите :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 28 ноября, 2016 Опубликовано 28 ноября, 2016 · Жалоба ну если ардуинам не верите, то даташит Вы читали? :) там пишут, что датчик отдаёт данные всегда в 16-битном формате, только, к примеру, для 12-битного разрешения младшие 4 бита не считаются (и лучше их после приёма принудительно сбросить, так бит 1 указывает на тип данных 0 - температура, 1 - влажность). и формула из даташита H = -6 + 125*<16-bits_data>/65536 немного не совпадает с тем, что у Вас в исходниках: return -6.0F + 125.0F*(float)hum_raw/4096.0F; ну ДШ я читал :) Но там тоже, извините, лажа. В разделе 6, в формулах (!) указано 16 бит, в разделе 5.6 - 12 и 14 бит, в разделе 9, самая последняя страница - вообще 2^RES Я пытался писать формулы из расчёта RES=16, получил температуру типа -86 градусов в комнате, и такую же ахинейскую влажность. Кстати RES=16 -- брал из ардуины. интересно, как оно там работает? Когда вписал 12 и 14 -значения стали более-менее правдоподобные. А из датчика я всегда 2 байта забираю. M_Andrey, а как же рассказы про заводскую калибровку? Все врут, все врут ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M_Andrey 0 28 ноября, 2016 Опубликовано 28 ноября, 2016 · Жалоба А при чем тут калибровка. Может у вас датчик что-то греет. Замеры раз в секунду. В 30 см от него лежит DS18B20, показывает ~22 градуса. Если долго держать включённым, температура медленнно но повышается. это нормально? А вот влажность какая-то пониженная. Может сама схема, а может горячий воздух из ноута, например :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 29 ноября, 2016 Опубликовано 29 ноября, 2016 · Жалоба ну я ж не первый раз делаю такие схемы :) Китайская платка с датчиком в воздухе, где-то в 1-1.5 см от платы. Воткнута в разъём, который собственно и задаёт эту высоту. Сам проц вообще в стороне от него. Могу фотку скинуть :) ЗЫ А ноута у меня вообще нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M_Andrey 0 29 ноября, 2016 Опубликовано 29 ноября, 2016 · Жалоба Кстати у SHT21 есть встроенный подогрев чипа, у вас он не включен случайно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 29 ноября, 2016 Опубликовано 29 ноября, 2016 · Жалоба Ну я его не включал, он мне 300 лет не нужен :D . Гляну. выключу на всякий случай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 29 ноября, 2016 Опубликовано 29 ноября, 2016 · Жалоба Прочитал конфиг-регистр: 3Ah = 00111010 - бит 2 = 0 - грелка выключена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
enclis_ 0 14 декабря, 2016 Опубликовано 14 декабря, 2016 · Жалоба А вот влажность какая-то пониженная. Эталона у меня, правда, нет, но когда HIH-3610 был в норме, он 30% даже в жару не показывал... Зимой в помещениях с отоплением влажность всегда ниже чем это бывает в теплое время года. Вам ещё повезло, что целых 28-29%. У меня на работе всего 15-17% (на улице -10°C) в лучше случае, если верить AM2302. Могу скинуть свои логи, на которых хорошо видно как проседает влажность, когда кто-то запускает воздух с улицы в комнату, даже после того как температура восстановится до номинальной. Если долго держать включённым, температура медленнно но повышается. это нормально? В каком диапазоне меняется температура? Даже если у вас датчик находится внутри изолированной термокамеры - температура может спокойно плавать в небольшом диапазоне. Ну и конечно - может быть саморазогрев чипа . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться