Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SHT21 (Модуль GY-21) на ATMega8
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
hd44780
Привет всем.

Вот обзавёлся этим датчиком и решил заменить им старый добрый проверенный HIH-3610 (аналоговый датчик влажности с выходом на АЦП), но сдохший к великому сожалению crying.gif .

В конечный прибор пока не вставлял, в целях тестирования/отладки подключил его к отдельной меге8@16MHz. Результаты для простоты гоню на USART и далее в комп.
На базе примеров из интернета написал функции для работы с этим датчиком. Использую ногодрыг, т.к. в конечном устройстве на меге8 ноги аппаратного i2C заблокированы АЦП (там ещё MPX6115A висит). Это не STM32 rolleyes.gif ...

Датчик запустился в общем-то без проблем, данные с него приходят исправно, но, на мой взгляд, немного странные. Например:
Цитата
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 приложил. Сам датчик полностью адекватный - кладу палец - температура повышается (кстати и влажность тоже sm.gif ), открываю окно (идёт холодный воздух) - понижается.
подышу на него - влажность увеличивается. Снимаю эти воздействия - показания возвращаются обратно.

Спасибо.
Obam
Вот чуток инфы с we.easyelectronix.ru
Нажмите для просмотра прикрепленного файла
лишней думаю не будет.
ivn
Я н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
Цитата(Obam @ Nov 21 2016, 16:25) *
Вот чуток инфы с we.easyelectronix.ru
Нажмите для просмотра прикрепленного файла
лишней думаю не будет.

Да, спасибо. я видел кое-где упоминания этой доки, но все ссылки были битые sad.gif

Цитата(ivn @ Nov 21 2016, 16:34) *
На коротком расстоянии можно пользоваться внутреннюю подтяжку на линии потра АВР, но надеяться на неё не стоит, и лучше подтянуть резистром в 10КОм.


Резюки припаяю ... хз. У меня расстояние между датчиком и процом максимум 5 см (если мерять по длине проводка).
amiller
В документации на SHT10 (SHT11) есть указания по дизайну платы и по ограничениям на частоту опросов, чтобы свести к минимуму саморазогрев девайса.
Удивительно, что Вам удалось без документации запустить обмен. Там в общем то не совсем I2C.
Ещё там есть CRC, которую желательно проверять.
Да и процедуры сброса интерфейса на стороне SHT надо реализовать. В условиях помех зависание по шине обмена - вовсе не редкость.
hd44780
Дико извиняюсь, датчик SHT21 - http://www.ebay.com/itm/112053626741?_trks...K%3AMEBIDX%3AIT
Дизайн платы - китайский biggrin.gif и пуллапы 10 кил там уже есть. Поэтому этот вопрос отпадает.

Про ограничения на частоту опроса я в курсе, делаю раз секунду (или 2 ) - и так и так делал.
RabidRabbit
Цитата(hd44780 @ Nov 21 2016, 14:14) *
Но у меня нет доверия к ардуино-примерам, т.к. там значения из датчика везде делят на 65535, хотя по доке на SHT21 там разрешения 16 бит нигде нет, для температуры максимум 14 бит, для влажности - 12.

ну если ардуинам не верите, то даташит Вы читали? sm.gif
там пишут, что датчик отдаёт данные всегда в 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
Цитата(hd44780 @ Nov 21 2016, 14:14) *
Датчик запустился в общем-то без проблем, данные с него приходят исправно, но, на мой взгляд, немного странные.

Если данные более-менее адекватные, значит с ПО все в порядке, а далее начинается "магия". Любой датчик температуры (влажности) показывает температуру (влажность) самого себя и уже ваша проблема заставить его показывать температуру (влажность) среды, которую вы хотите sm.gif.
hd44780
Цитата(RabidRabbit @ Nov 27 2016, 20:01) *
ну если ардуинам не верите, то даташит Вы читали? sm.gif
там пишут, что датчик отдаёт данные всегда в 16-битном формате, только, к примеру, для 12-битного разрешения младшие 4 бита не считаются (и лучше их после приёма принудительно сбросить, так бит 1 указывает на тип данных 0 - температура, 1 - влажность).
и формула из даташита H = -6 + 125*<16-bits_data>/65536 немного не совпадает с тем, что у Вас в исходниках: return -6.0F + 125.0F*(float)hum_raw/4096.0F;

ну ДШ я читал sm.gif Но там тоже, извините, лажа.
В разделе 6, в формулах (!) указано 16 бит, в разделе 5.6 - 12 и 14 бит, в разделе 9, самая последняя страница - вообще 2^RES biggrin.gif
Я пытался писать формулы из расчёта RES=16, получил температуру типа -86 градусов в комнате, и такую же ахинейскую влажность. Кстати RES=16 -- брал из ардуины. интересно, как оно там работает?
Когда вписал 12 и 14 -значения стали более-менее правдоподобные.
А из датчика я всегда 2 байта забираю.

M_Andrey, а как же рассказы про заводскую калибровку? Все врут, все врут ...
M_Andrey
А при чем тут калибровка. Может у вас датчик что-то греет.
Цитата(hd44780 @ Nov 21 2016, 14:14) *
Замеры раз в секунду. В 30 см от него лежит DS18B20, показывает ~22 градуса.
Если долго держать включённым, температура медленнно но повышается. это нормально?
А вот влажность какая-то пониженная.

Может сама схема, а может горячий воздух из ноута, например sm.gif.
hd44780
ну я ж не первый раз делаю такие схемы sm.gif
Китайская платка с датчиком в воздухе, где-то в 1-1.5 см от платы. Воткнута в разъём, который собственно и задаёт эту высоту. Сам проц вообще в стороне от него.
Могу фотку скинуть sm.gif

ЗЫ
А ноута у меня вообще нет biggrin.gif
M_Andrey
Кстати у SHT21 есть встроенный подогрев чипа, у вас он не включен случайно?
hd44780
Ну я его не включал, он мне 300 лет не нужен :D . Гляну. выключу на всякий случай.
hd44780
Прочитал конфиг-регистр: 3Ah = 00111010 - бит 2 = 0 - грелка выключена.
enclis_
Цитата
А вот влажность какая-то пониженная. Эталона у меня, правда, нет, но когда HIH-3610 был в норме, он 30% даже в жару не показывал...

Зимой в помещениях с отоплением влажность всегда ниже чем это бывает в теплое время года. Вам ещё повезло, что целых 28-29%. У меня на работе всего 15-17% (на улице -10°C) в лучше случае, если верить AM2302. Могу скинуть свои логи, на которых хорошо видно как проседает влажность, когда кто-то запускает воздух с улицы в комнату, даже после того как температура восстановится до номинальной.

Цитата
Если долго держать включённым, температура медленнно но повышается. это нормально?

В каком диапазоне меняется температура? Даже если у вас датчик находится внутри изолированной термокамеры - температура может спокойно плавать в небольшом диапазоне. Ну и конечно - может быть саморазогрев чипа .
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.