Подскажите, в чем косяк с HTU21D

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Грызет канифоль
Сообщения: 257
Зарегистрирован: Пн окт 03, 2016 10:06:09

Сообщение Леонид_М »

Здравствуйте,
на протеусе 8.4 моделирую работу датчика HTU21D, подключаю его к ATMEGA8. Пытаюсь считать влажность. При первом цикле считывает данные правильно, но при при последующих получается так:
если даю стоповую команду после 1-го цикла, то датчик больше ни на что не откликается
если просто пытаюсь считывать 2-й раз, то почему-то сначала считывается снова последний байт из считывавшихся при первом проходе, если делаю так,
что при 2-м проходе этот байт игнорировать - то считывается все одно, тоже самое показание, хотя на датчике влажность меняю.

Пробовал давать команду ресет - не помогает. Что-то явно не так делаю...

Посоветуйте, куда копать? :shock: ( открыл глаза по полной! )
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Скорее всего, ошибка в ACK-ах при чтении данных.
Сверьтесь с pdf-ом на датчик.
Реклама
Грызет канифоль
Сообщения: 257
Зарегистрирован: Пн окт 03, 2016 10:06:09

Сообщение Леонид_М »

я это делал через TWI контроллера, как я понял, в этом случае ACK формируется автоматически... ведь когда я задаю адрес для команды - я не формирую ACK отдельно, все идет вместе, контроллер это сам формирует.
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

Контроллер выполняет то что вы (или не вы) написали в программе.
Что касается ACK-ов - прочтите в pdf на датчик в каких случаях нужно отвечать ACK и в каких NACK при чтении данных с HTU21D.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3793
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

У меня здесь есть статья с использованием HTU21D. В конце приведены исходники проекта. Они, правда, для другого контроллера, но понадобятся лишь 3 процедуры: Get_Temp_Humi(), Request_Conversion() и Read_Conversion(). При желании из кода можно понять какие команды засылать в датчик.
Реклама
Грызет канифоль
Сообщения: 257
Зарегистрирован: Пн окт 03, 2016 10:06:09

Сообщение Леонид_М »

Спасибо, попробую разобраться сегодня вечером... Вчера пробовал - задаю влажность 62 - показывает - 61, а на 61 - 62... а на 63 - 64, на 64 - 65, на 65 - 64... странно ведет... при чем ошибка точно не в преобразовании результата...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Сообщение Albert_V »

99% у вас ошибка в том, что вы не закрываете сеанс связи с HTU21D. При чтении последнего байта, нужно ей выставить NACK.
На всякий случай, это не единственная микросхема, которая жёстко требует при чтении последнего байта NACK перед STOP.
Грызет канифоль
Сообщения: 257
Зарегистрирован: Пн окт 03, 2016 10:06:09

Сообщение Леонид_М »

Все, разобрался... добавил паузу после измерения, и все же напортачил при умножении на 125... не надо было быть таким самоуверенным, что там - все ОК... )
Всем спасибо за помощь! :beer:
Модератор
Аватара пользователя
Сообщения: 19091
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

появился у меня однажды модуль с HTU21D.
заказывал на али модули ЦАП MCP4725, 3 штуки. а пришло 2 ЦАП и один модуль с HTU21D.
и недавно решил его применить в своем хозяйстве.
и вот что оказалось.
в помещении неправильно измеряет влажность - намного меньше, чем есть на самом деле.
есть у меня в хозяйстве еще советский прибор, измеряет давление, влажность и температуру.
так вот, по этому прибору влажность в комнате около 60%, а HTU21D дает 23-25%.
выношу на улицу - измеряет примерно правильно. возвращаю в квартиру - опять врет.
уже подумал, что как на улице, ему нужно движение воздуха. положил рядом с кулером, чтобы обдувало - эффект НОЛЬ.
вот что ему надо, чтобы в помещении показывал правильно влажность?
и еще оказалось, что температуру он завышает примерно на 1,5 градуса, что многократно больше допустимой погрешности по даташиту.
ну, с температурой проще, программно вычитаю 1,5 градуса.
а вот с влажностью какие-то непонятки...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Друг Кота
Аватара пользователя
Сообщения: 3793
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Слишком много причин для неправильных показаний и слишком мало вводных данных. Например, обычная некондиция в дешёвой китайской продукции, ошибки в программе, или подогрев сеснора на плате (поэтому может и завышение температуры). Если подогрева нет, но при неправильных показаниях температуры я-бы грешил на кошерность сенсора. Может окно сенсора запылено (это врядли, но...). А как Вы определили, что на улице правильно показывает - выносили советский прибор туда? Кстати, не знаю как для Вашего климата, но для моего 60% влажности дома в это время года много, и обычно бывает около 30-40. Попробуйте ещё включить внутренний подогрев в сенсоре и оставить так на ночь. Иногда помогает это или в печь его при 100 градусах на несколько часов для ликвидации оффсета.
Модератор
Аватара пользователя
Сообщения: 19091
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

погрешность по температуре меня мало волнует. эти 1,5 градуса ошибки наблюдаются как в помещении, так и на улице, то есть, при разной температуре.
подогрев программно я не включал, а по умолчанию он отключен.
запыленности окна тоже не может быть, так как модуль хранился в пакетике с момента получения посылки.
да, я выносил советский прибор на улицу, поэтому я и сказал, что на улице датчик влажности измеряет примерно правильно.
ошибок в программе нет, там просто негде ошибиться.
советский прибор 83 года. я его не разбирал для проверки механизма. но можно предположить, что что-то мешает стрелке пройти ниже 60% по влажности.
однако, на улице стрелке ничто не помешало показывать высокую влажность.
на улице датчик показал 89%, на приборе я дождался примерно 78%. но у прибора инерционность очень большая и у меня не хватило терпения, чтобы показания прибора стабилизировались.
но вот сейчас я взял прибор, и сейчас он показывает 52%. то есть, стрелка не клинит и может перемещаться ниже 60%.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Starichok51",url="/forum/viewtopic.php?p=3740606#p3740606"]но вот сейчас я взял прибор, и сейчас он показывает 52%. то есть, стрелка не клинит и может перемещаться ниже 60%.[/uquote]Имхо - ошибка может быть не только из-за того что что там где-то "клинит" или не даёт стрелке перемещаться. Раз прибор 83-го года (пенсионер), то почти наверняка его гарантийный срок эксплуатации давно прошёл (если конечно не сняли его с чего-то военного 8) ) и никакой уверенности в правильности показаний уже быть не может - кто его знает какие там параметры его комплектующих могли выйти из допустимых диапазонов?
Тем более если есть какие-то перемещающиеся механические детали (старение материалов, окисление, изменение упругости и т.п.) и тем более - внутри закрытого корпуса. Например: вязкость смазки перемещающихся деталей могла измениться и, чтобы сдвинуть стрелку, требуется большее усилие, поэтому коэффициент соотношения влажность/угол_поворота_стрелки - стал другой. Если бы у Вас был психрометр (как у меня когда-то), то у него (имхо) меньше вероятность влияния деградации параметров от старения компонентов. Ему было бы больше доверия. Но и то....
При отсутствии других приборов, которым можно доверять, можно проверить сравнив показания прибора на улице с показаниями текущей погоды в интернете для Вашей геолокации. Можно даже эти данные усреднить, взяв с разных источников. Я свой BME280 так проверял - летом показания в квартире практически один-в-один совпадали с показаниями интернет-погоды (летом у меня почти постоянно все окна открыты). Сейчас конечно они сильно разнятся в ожидаемую сторону из-за отопления.
Модератор
Аватара пользователя
Сообщения: 19091
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

ну, у прибора не "глухой", закрытый, корпус. в вся задняя стенка в отверстиях. какая у него инерционность через эти отверстия, трудно сказать.
на улице я держал прибор и свой измеритель около 1 часа. и как я сказал, на улице прибор отставал от датчика. то есть, можно предположить, что механика у него барахлит...
сейчас не лето и окно я не открою. да и отопление работает.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Starichok51",url="/forum/viewtopic.php?p=3740673#p3740673"]ну, у прибора не "глухой", закрытый, корпус. в вся задняя стенка в отверстиях. какая у него инерционность через эти отверстия, трудно сказать.
на улице я держал прибор и свой измеритель около 1 часа. и как я сказал, на улице прибор отставал от датчика. то есть, можно предположить, что механика у него барахлит...[/uquote]Дело ведь не только в "инерционности".
Не знаю какая конструкция в Вашем приборе, но предположим, например, что там есть некая пружина (металлическая). Со временем она может покрыться окислами -> изменится её толщина и упругость -> её реакция на некую физическую величину, станет другой. А значит: изменится коэффициент изменение_размера_пружины/изменение_влажности станет не равным расчётному при изготовлении прибора. А значит: сколько не жди - никогда показания не дойдут до реальных.
Ну или там в конструкции есть некий волосок/нить из какого-то материала, который с изменением влажности меняет свою длину. Со временем в материале этого волоска могут происходить изменения (окисление, кристаллизация и т.п.) и его реакция на влажность может измениться.
Модератор
Аватара пользователя
Сообщения: 19091
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

я вскрыл советский прибор.
да, там нить, которая изменяет от влажности свою длину. нить пластмассовая, похожа не леску.
да, есть спиралевидная пружина, видимо, из латуни, которая своими концами припаяна к неподвижным частям корпуса.
пружина натягивает нить. и на пружине укреплена стрелка.
при изменении длины нити изменяется угол поворота стрелки.
я совершенно согласен, что за столько лет свойства нити и свойства пружины могли измениться.
я провел эксперимент - положил на батарею отопления разобранный прибор и свой новый измеритель.
на батарее показания на приборе снизились до 40%. показания датчика прыгали 1-3%, то есть, практически полная сушь...
затем я разобранный прибор (чтобы снизить инерционность) и свой измеритель вынес на улицу, минут 20 назад.
сейчас сходил и посмотрел показания.
интернет дает 64% влажность. прибор установился на 56%. мой измеритель показывает 62-63% (показания скачут).
таким образом, а улице HTU21D показывает влажность примерно правильно, а старый прибор дает ошибку.
в программе я даже применил формулу из даташита по учету температурного коэффициента для влажности.
но в даташите оговорено, что формула справедлива от 0 до 80 градусов, а на улице сейчас минус 12 градусов. и тем не менее, датчик показал влажность практически совпадающую с интернетом.
но тогда, если верить уличным показаниям датчика, получается, что у меня в комнате на самом деле влажность в районе 25%, а старый прибор безбожно врет.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
AAX
Опытный кот
Сообщения: 721
Зарегистрирован: Сб ноя 16, 2013 23:34:34

Сообщение AAX »

[uquote="Starichok51",url="/forum/viewtopic.php?p=3740750#p3740750"]получается, что у меня в комнате на самом деле влажность в районе 25%, а старый прибор безбожно врет.[/uquote]если бы у Вас была влажность воздуха в комнате постоянно 60%, скорее всего, у Вас было бы много плесени и мхов :) 25-35% когда включено отопление - нормально. Ну, если специальных мер никаких не применять для увлажнения воздуха.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Нельзя HTU21D использовать: они очень быстро деградируют, если влажность не меняется в широких пределах. Знакомый несколько штук тестировал. Меньше, чем за год, те, что находились в помещениях с постоянной влажностью, сдохли окончательно.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Starichok51",url="/forum/viewtopic.php?p=3740750#p3740750"]но тогда, если верить уличным показаниям датчика, получается, что у меня в комнате на самом деле влажность в районе 25%, а старый прибор безбожно врет.[/uquote]25% - вполне нормально при работающем отоплении. У меня примерно так же показывает и BME280 и DHT22 (20...40%). Да и инет говорит, что это - типичное значение.

[uquote="AAX",url="/forum/viewtopic.php?p=3740869#p3740869"]Ну, если специальных мер никаких не применять для увлажнения воздуха.[/uquote]Цветочков побольше посадить. Только не кактусов. :)

Добавлено after 2 minutes 2 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3740876#p3740876"]Меньше, чем за год, те, что находились в помещениях с постоянной влажностью, сдохли окончательно.[/uquote]Видимо - с тоски. Одно и то же значение показывать - скучно. :)
Модератор
Аватара пользователя
Сообщения: 19091
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

AAX писал(а):25-35% когда включено отопление - нормально.
jcxz писал(а):25% - вполне нормально при работающем отоплении.
спасибо, ребята, успокоили.
а то я до сих пор о влажности даже не интересовался, соответственно, про влажность был "ни в зуб ногой"...
я собираюсь этот измеритель поместить в погреб. а в погребе бывает большая влажность, вплоть до образования конденсата.
поэтому хочется надеяться, что этот датчик там будет показывать влажность адекватно.
за температурой в погребе я и ранее следил, термометром на основе датчика DS18B20, чтобы в сильные холода картошка не замерзла и своевременно включить подогрев в погребе. теперь решил контролировать и влажность.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

jcxz, на самом деле, товарищ довольно серьезно подошел к делу. Сравнивал кучу датчиков. В общем, дешевле, чем за ~2000 рублей датчики-гигрометры покупать смысла нет - пустая трата денег.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Ответить

Вернуться в «Периферия»