Здравствуйте, на протеусе 8.4 моделирую работу датчика HTU21D, подключаю его к ATMEGA8. Пытаюсь считать влажность. При первом цикле считывает данные правильно, но при при последующих получается так: если даю стоповую команду после 1-го цикла, то датчик больше ни на что не откликается если просто пытаюсь считывать 2-й раз, то почему-то сначала считывается снова последний байт из считывавшихся при первом проходе, если делаю так, что при 2-м проходе этот байт игнорировать - то считывается все одно, тоже самое показание, хотя на датчике влажность меняю.
Пробовал давать команду ресет - не помогает. Что-то явно не так делаю...
Посоветуйте, куда копать? ( открыл глаза по полной! )
я это делал через TWI контроллера, как я понял, в этом случае ACK формируется автоматически... ведь когда я задаю адрес для команды - я не формирую ACK отдельно, все идет вместе, контроллер это сам формирует.
Контроллер выполняет то что вы (или не вы) написали в программе. Что касается ACK-ов - прочтите в pdf на датчик в каких случаях нужно отвечать ACK и в каких NACK при чтении данных с HTU21D.
У меня здесь есть статья с использованием HTU21D. В конце приведены исходники проекта. Они, правда, для другого контроллера, но понадобятся лишь 3 процедуры: Get_Temp_Humi(), Request_Conversion() и Read_Conversion(). При желании из кода можно понять какие команды засылать в датчик.
Спасибо, попробую разобраться сегодня вечером... Вчера пробовал - задаю влажность 62 - показывает - 61, а на 61 - 62... а на 63 - 64, на 64 - 65, на 65 - 64... странно ведет... при чем ошибка точно не в преобразовании результата...
99% у вас ошибка в том, что вы не закрываете сеанс связи с HTU21D. При чтении последнего байта, нужно ей выставить NACK. На всякий случай, это не единственная микросхема, которая жёстко требует при чтении последнего байта NACK перед STOP.
Все, разобрался... добавил паузу после измерения, и все же напортачил при умножении на 125... не надо было быть таким самоуверенным, что там - все ОК... ) Всем спасибо за помощь!
появился у меня однажды модуль с HTU21D. заказывал на али модули ЦАП MCP4725, 3 штуки. а пришло 2 ЦАП и один модуль с HTU21D. и недавно решил его применить в своем хозяйстве. и вот что оказалось. в помещении неправильно измеряет влажность - намного меньше, чем есть на самом деле. есть у меня в хозяйстве еще советский прибор, измеряет давление, влажность и температуру. так вот, по этому прибору влажность в комнате около 60%, а HTU21D дает 23-25%. выношу на улицу - измеряет примерно правильно. возвращаю в квартиру - опять врет. уже подумал, что как на улице, ему нужно движение воздуха. положил рядом с кулером, чтобы обдувало - эффект НОЛЬ. вот что ему надо, чтобы в помещении показывал правильно влажность? и еще оказалось, что температуру он завышает примерно на 1,5 градуса, что многократно больше допустимой погрешности по даташиту. ну, с температурой проще, программно вычитаю 1,5 градуса. а вот с влажностью какие-то непонятки...
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Слишком много причин для неправильных показаний и слишком мало вводных данных. Например, обычная некондиция в дешёвой китайской продукции, ошибки в программе, или подогрев сеснора на плате (поэтому может и завышение температуры). Если подогрева нет, но при неправильных показаниях температуры я-бы грешил на кошерность сенсора. Может окно сенсора запылено (это врядли, но...). А как Вы определили, что на улице правильно показывает - выносили советский прибор туда? Кстати, не знаю как для Вашего климата, но для моего 60% влажности дома в это время года много, и обычно бывает около 30-40. Попробуйте ещё включить внутренний подогрев в сенсоре и оставить так на ночь. Иногда помогает это или в печь его при 100 градусах на несколько часов для ликвидации оффсета.
погрешность по температуре меня мало волнует. эти 1,5 градуса ошибки наблюдаются как в помещении, так и на улице, то есть, при разной температуре. подогрев программно я не включал, а по умолчанию он отключен. запыленности окна тоже не может быть, так как модуль хранился в пакетике с момента получения посылки. да, я выносил советский прибор на улицу, поэтому я и сказал, что на улице датчик влажности измеряет примерно правильно. ошибок в программе нет, там просто негде ошибиться. советский прибор 83 года. я его не разбирал для проверки механизма. но можно предположить, что что-то мешает стрелке пройти ниже 60% по влажности. однако, на улице стрелке ничто не помешало показывать высокую влажность. на улице датчик показал 89%, на приборе я дождался примерно 78%. но у прибора инерционность очень большая и у меня не хватило терпения, чтобы показания прибора стабилизировались. но вот сейчас я взял прибор, и сейчас он показывает 52%. то есть, стрелка не клинит и может перемещаться ниже 60%.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
но вот сейчас я взял прибор, и сейчас он показывает 52%. то есть, стрелка не клинит и может перемещаться ниже 60%.
Имхо - ошибка может быть не только из-за того что что там где-то "клинит" или не даёт стрелке перемещаться. Раз прибор 83-го года (пенсионер), то почти наверняка его гарантийный срок эксплуатации давно прошёл (если конечно не сняли его с чего-то военного ) и никакой уверенности в правильности показаний уже быть не может - кто его знает какие там параметры его комплектующих могли выйти из допустимых диапазонов? Тем более если есть какие-то перемещающиеся механические детали (старение материалов, окисление, изменение упругости и т.п.) и тем более - внутри закрытого корпуса. Например: вязкость смазки перемещающихся деталей могла измениться и, чтобы сдвинуть стрелку, требуется большее усилие, поэтому коэффициент соотношения влажность/угол_поворота_стрелки - стал другой. Если бы у Вас был психрометр (как у меня когда-то), то у него (имхо) меньше вероятность влияния деградации параметров от старения компонентов. Ему было бы больше доверия. Но и то.... При отсутствии других приборов, которым можно доверять, можно проверить сравнив показания прибора на улице с показаниями текущей погоды в интернете для Вашей геолокации. Можно даже эти данные усреднить, взяв с разных источников. Я свой BME280 так проверял - летом показания в квартире практически один-в-один совпадали с показаниями интернет-погоды (летом у меня почти постоянно все окна открыты). Сейчас конечно они сильно разнятся в ожидаемую сторону из-за отопления.
ну, у прибора не "глухой", закрытый, корпус. в вся задняя стенка в отверстиях. какая у него инерционность через эти отверстия, трудно сказать. на улице я держал прибор и свой измеритель около 1 часа. и как я сказал, на улице прибор отставал от датчика. то есть, можно предположить, что механика у него барахлит... сейчас не лето и окно я не открою. да и отопление работает.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
ну, у прибора не "глухой", закрытый, корпус. в вся задняя стенка в отверстиях. какая у него инерционность через эти отверстия, трудно сказать. на улице я держал прибор и свой измеритель около 1 часа. и как я сказал, на улице прибор отставал от датчика. то есть, можно предположить, что механика у него барахлит...
Дело ведь не только в "инерционности". Не знаю какая конструкция в Вашем приборе, но предположим, например, что там есть некая пружина (металлическая). Со временем она может покрыться окислами -> изменится её толщина и упругость -> её реакция на некую физическую величину, станет другой. А значит: изменится коэффициент изменение_размера_пружины/изменение_влажности станет не равным расчётному при изготовлении прибора. А значит: сколько не жди - никогда показания не дойдут до реальных. Ну или там в конструкции есть некий волосок/нить из какого-то материала, который с изменением влажности меняет свою длину. Со временем в материале этого волоска могут происходить изменения (окисление, кристаллизация и т.п.) и его реакция на влажность может измениться.
я вскрыл советский прибор. да, там нить, которая изменяет от влажности свою длину. нить пластмассовая, похожа не леску. да, есть спиралевидная пружина, видимо, из латуни, которая своими концами припаяна к неподвижным частям корпуса. пружина натягивает нить. и на пружине укреплена стрелка. при изменении длины нити изменяется угол поворота стрелки. я совершенно согласен, что за столько лет свойства нити и свойства пружины могли измениться. я провел эксперимент - положил на батарею отопления разобранный прибор и свой новый измеритель. на батарее показания на приборе снизились до 40%. показания датчика прыгали 1-3%, то есть, практически полная сушь... затем я разобранный прибор (чтобы снизить инерционность) и свой измеритель вынес на улицу, минут 20 назад. сейчас сходил и посмотрел показания. интернет дает 64% влажность. прибор установился на 56%. мой измеритель показывает 62-63% (показания скачут). таким образом, а улице HTU21D показывает влажность примерно правильно, а старый прибор дает ошибку. в программе я даже применил формулу из даташита по учету температурного коэффициента для влажности. но в даташите оговорено, что формула справедлива от 0 до 80 градусов, а на улице сейчас минус 12 градусов. и тем не менее, датчик показал влажность практически совпадающую с интернетом. но тогда, если верить уличным показаниям датчика, получается, что у меня в комнате на самом деле влажность в районе 25%, а старый прибор безбожно врет.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
получается, что у меня в комнате на самом деле влажность в районе 25%, а старый прибор безбожно врет.
если бы у Вас была влажность воздуха в комнате постоянно 60%, скорее всего, у Вас было бы много плесени и мхов 25-35% когда включено отопление - нормально. Ну, если специальных мер никаких не применять для увлажнения воздуха.
Нельзя HTU21D использовать: они очень быстро деградируют, если влажность не меняется в широких пределах. Знакомый несколько штук тестировал. Меньше, чем за год, те, что находились в помещениях с постоянной влажностью, сдохли окончательно.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
но тогда, если верить уличным показаниям датчика, получается, что у меня в комнате на самом деле влажность в районе 25%, а старый прибор безбожно врет.
25% - вполне нормально при работающем отоплении. У меня примерно так же показывает и BME280 и DHT22 (20...40%). Да и инет говорит, что это - типичное значение.
спасибо, ребята, успокоили. а то я до сих пор о влажности даже не интересовался, соответственно, про влажность был "ни в зуб ногой"... я собираюсь этот измеритель поместить в погреб. а в погребе бывает большая влажность, вплоть до образования конденсата. поэтому хочется надеяться, что этот датчик там будет показывать влажность адекватно. за температурой в погребе я и ранее следил, термометром на основе датчика DS18B20, чтобы в сильные холода картошка не замерзла и своевременно включить подогрев в погребе. теперь решил контролировать и влажность.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
jcxz, на самом деле, товарищ довольно серьезно подошел к делу. Сравнивал кучу датчиков. В общем, дешевле, чем за ~2000 рублей датчики-гигрометры покупать смысла нет - пустая трата денег.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения