Am2320 am2302 чем отличается

от admin

Arduino.ru

День добрый, товарищи. Проблема казалось бы с самой избитой темой — датчиками температуры и влажности. В общем приобрел комплект датчиков с AliExpress (тыц), которые никак не читаются. Для начала ессесно погуглил что это за датчики такие, везде написано что это просто DHT21 в корпусе. Ну лан, примеров много, думал что заведется. а нифига, данные вообще никакие не приходят. Пробовал и в ардуино (нано, уно) и в NodeMcu — все одно и то же. Закрались у меня после этого какие-то сомнения и я раскурочил один из датчиков, а там значит AM2320, который якобы через I2C работает. Нашел спеку к датчику и подрубился к ардуине (все как надо, SCL/SDA, в оригинале датчики шли с тремя распаянными проводами, пришлось припаять еще один), но как оказалось и так ничего не рабит. Нашел вот тако пример на основе библиотеки Wire:

но все виснет на моменте вызова функции Wire.endTransmission(). Я пробовал несколько датчиков из комплекта, но ничего не работает. Я почему-то не верю что весь комплект бракованный, скорее всего где-то тупая ошибка, которая все портит. Может есть какой-то другой корпусный аналог таких датчиков? желательно конечно это заставить работать, но.

  • Войдите на сайт для отправки комментариев

Недавно такой тестил, все штатно, по 1 проводу с примером из библиотеки. Все сразу заработало, вот только температура уж больно большое отклонение имеет по сравнению с другими моими термометрами, около 4-5 градусов в +. То ли он греется в этом корпусе, то ли таки так врет.

Прямую ссылку на библу щас влет не нашел, закинул, что скачал, на свой диск

Отпишись на счет точности, если будет такая возможность.

  • Войдите на сайт для отправки комментариев

Такой же на обычной библиотеке DHT, завелся сразу. Влажность надо поправочные коэффициенты делать и сквозняков не допускать.
Уже года 2 в консервохранилище работает.

  • Войдите на сайт для отправки комментариев

Пробовал уже такой либой — эффект нулевой, все пять датчиков работают одинаково, т.е. никак. Меня сильно смущает что по даташиту указано что датчик работает через I2C, но распаяно всего три провода. Нашел еще пару примеров кода по работе с АМ2320, но все также виснет. Заговор какой-то.

  • Войдите на сайт для отправки комментариев

У меня два таких датчика, один в один как на вашем фото с Ali, от разных продавцов. Разбирать их мне жаба не позволит, но таки-да, оба работают по китайскому однопроводному протоколу, подробно описанному в документации на разные DHT (DHT11 или DHT21). На оборотной стороне ваших датчиков напиано же . DIGITAL (1 WIRE) — это предпоследняя строка.

Этот 1 WIRE никакого отношения к One Wire не имеет, но вполне обслуживается многочисленными ардуино библиотеками для DHT11 и/или DHT21 (разница только в длительности импульса инициализации датчика).

Как вы обнаружили внутри AM2301 целый AM2320 для меня загадка.

Два человека вам написали, что у них нормально работают такие датчики, «штатно». Этот комментарий от третьего такого человека, который не использует библиотеки ардуино, но делает все по документации на прибор. В данном случае на DHT21 (для DHT11 с т.з. передачи информации все одно и то же).

Последнее. Линия данных _должна_ быть подтянута к питанию резистором 2 — 10 кОм. В некоторых изделиях в корпусе скрывается подтягивающий резистор, в некоторых — нет. Измерьте сопротивление между линиями данных и питания.

  • Войдите на сайт для отправки комментариев

Понимаете, я в полном замешательстве — вся та инормация, которую я нахожу в интренете по поводу этих датчиков противоречит сама себе (да и мне тоже). Вот смотрю я вот этот мануал — http://bit.ly/26maJH3 — и там написано, что датчики работают через I2C. Гуглю по поводу АМ2301, везде говорят что читается обычной либой DHT, но на практике не работает. Может китайцы перепутали датчики?

Вот фотография внутренностей датчика — http://imgur.com/yRT1g0D — ну я же ясно вижу, что там АМ2320. Пуллап резисторов там тоже нет, к сожалению.

  • Войдите на сайт для отправки комментариев

Раскрутил свой 2301, различаются кардинально. У меня с одной стороны термистор, гигристор, 4МГц кварц, с другой преобразователь на noname 10 ногом чипе с обвязкой.

  • Войдите на сайт для отправки комментариев

Вот наверное поэтому никакие готовые мануалы не работают в моей ситуации. У меня даже обвязки никакой нет внутрях, обратная сторона вообще пустая, хотя как везде написано как минимум резистор балластный там должен быть.

  • Войдите на сайт для отправки комментариев

Если он I2C, то посмотрите сканером, считает адрес или нет? Резисторы не забудьте к +5В.

  • Войдите на сайт для отправки комментариев

Приведенная вами фотография противоречит моим представлениям, но убеждает. Уже продолжительное время хочу для своего «зверинца» именно AM2320.

Документация по AM2320 (именно китайская, с дерьмовым переводом на английский, от которого голова раскалывается) доступна по запросу в поисковиках. Читал ее неоднократно. AM2320 запускается либо как I2C прибор с адресом 0xB8 (вам порекомендовали проверить сканером, что IMHO очень правильно). Либо в своем «китайском 1 wire» варианте (в этом случае мы говорим о совместимости с библиотеками для DHT11/21). Для второго варианта китайцы приводят схему подключения (именно AM2320). Ножка SCL должна заводится на GND, в этом случае, как понимаю, прибор «должен» работать как 1 wire (китайский протокол DHT) устройство.

Смотрел тайминги 1 wire для AM2320, они укладываются в тайминги DHT, поэтому существующий софт для DHT11/21 работать должен. Скорее софт для DHT11, поскольку инициализация AM2320 заявлена в 1 мс (это несколько спекулятивно, от 0,8 мс до 20 мс, что годится для любого DHT). Если бы использовал библиотеки, попробовал бы от Adafruit, по моим представлениям там толковые парни делом занимаются и код у них красивый.

Увы, больше ничем помочь не могу. За темой буду следить, надеюсь что вы отпишетесь о результатах.

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

arendst / Tasmota Public

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AM2301/AM2302/Itead SI7021 what mudule type shoul i chose. Wiki confuse! #2680

AM2301/AM2302/Itead SI7021 what mudule type shoul i chose. Wiki confuse! #2680

Comments

I have 3 kinds of sensor AM2301/AM2302/Itead SI7021, i want to chose the correct module type for them but i am very confusing by looking info on Wiki.

  • the AM2301 i chose «02 AM2301» : it is easy and make sense.
  • the AM2302 i chose «03 SI7021» or «02 AM2301» : it also work. But i don’t know it’s correct or not. what kind is the best and correct i should chose?
  • Itead SI7021 (one Wire), i chose «03 SI7021» or «02 AM2301«: both selection are working but on Wiki advise to chose SI7021, so what kind i should chose?

Info from Wiki » Devices — Additional Info» Wemos D1 Mini:

image

Info from Wiki «Sensor Configuration»:

image

Info from Tasmota «Changelog»:

Regards
(edited to correct my typo)

The text was updated successfully, but these errors were encountered:

Thank you so much for your advice and detail explaination.

I hope that the wiki will be updated soon to reduce confusion for everyone.

I can imagine it is confusing, but I created the wemos wiki from a wemos point of view as a reminder how to connect sensors but also to help others. I believe it’s quite clear, but feel free to update the wemos page and or the main Tasmota page now you know how it should be connected. I think everyone has access to update the wiki in general, and if not you can do a PR (pull request) and send it to Theo, who can accept your changes if he agrees.

Am2320 am2302 чем отличается

Как работают датчики температуры и влажности DHT11 и DHT22, и их взаимодействие с Arduino

Датчики температуры и влажности DHT11 и DHT22/AM2302 от AOSONG довольно просты в использовании, недорогие и отлично подходят для любителей! Эти датчики предварительно откалиброваны и не требуют дополнительных компонентов, поэтому вы можете сразу начать измерение температуры и относительной влажности.

Как работают датчики температуры и влажности DHT11 и DHT22, и их взаимодействие с ArduinoРисунок 1 – Как работают датчики температуры и влажности DHT11 и DHT22, и их взаимодействие с Arduino

Одна из важнейших функций, которую они предоставляют, заключается в том, что температура и влажность измеряются с точностью до десятых долей; то есть до одного десятичного знака. Единственным недостатком этого датчика является то, что вы можете получать с него новые данные с периодичностью только раз в одну или две секунды. Но, учитывая его производительность и цену, вы не можете жаловаться.

DHT11 против DHT22/AM2302

У нас есть две версии серии датчиков DHTxx. Они выглядят немного похоже и имеют одинаковую распиновку, но имеют разные характеристики. Вот подробности.

DHT22 является более дорогой версией, которая, очевидно, имеет лучшие характеристики. Диапазон измерения температуры составляет от -40°C до +80°C с точностью ±0,5 градуса, а диапазон температур DHT11 составляет от 0°C до 50°C с точностью ±2 градуса. Также датчик DHT22 имеет более широкий диапазон измерения влажности, от 0 до 100% с точностью 2-5%, в то время как диапазон измерения влажности DHT11 составляет от 20 до 80% с точностью 5%.

Сравнение спецификаций DHT11 и DHT22/AM2302

Хотя DHT22/AM2302 более точен и работает в большем диапазоне температур и влажности; есть три вещи, в которых DHT11 сильно превосходит DHT22. Он более дешевый, меньше по размеру и имеет более высокую частоту выборки. Частота выборки DHT11 составляет 1 Гц, то есть одно чтение каждую секунду, в то время как частота выборки DHT22 составляет 0,5 Гц, то есть одно чтение каждые две секунды.

Рабочее напряжение обоих датчиков составляет от 3 до 5 вольт, в то время как максимальный ток, используемый во время преобразования (при запросе данных), составляет 2,5 мА. И самое приятное, что датчики DHT11 и DHT22/AM2302 являются «взаимозаменяемыми», то есть, если вы создаете свой проект с одним датчиком, вы можете просто отключить его и использовать другой датчик. Ваш код, возможно, придется немного изменить, но, по крайней мере, схема не изменится!

Для получения более подробной информации обратитесь к техническим описаниям датчиков DHT11 и DHT22/AM2302.

Обзор аппаратного обеспечения

Теперь давайте перейдем к более интересным вещам. Давайте разберем оба датчика DHT11 и DHT22/AM2302 и посмотрим, что внутри.

Корпус состоит из двух частей, поэтому для его вскрытия достаточно просто достать острый нож и разделить корпус на части. Внутри корпуса на стороне датчиков находятся датчик влажности и датчик температуры NTC (термистор).

Рисунок 2 Внутренности датчиков температуры и влажности DHT11 DHT22/AM2302Рисунок 2 – Внутренности датчиков температуры и влажности DHT11 DHT22/AM2302

Чувствительный к влажности компонент, который используется, разумеется, для измерения влажности, имеет два электрода с влагоудерживающей подложкой (обычно соль или проводящий пластиковый полимер), зажатой между ними. По мере поглощения водяного пара подложка высвобождает ионы, что, в свою очередь, увеличивает проводимость между электродами. Изменение сопротивления между двумя электродами пропорционально относительной влажности. Более высокая относительная влажность уменьшает сопротивление между электродами, в то время как более низкая относительная влажность увеличивает это сопротивление.

Рисунок 3 Внутренняя структура датчика влажности в DHT11 и DHT22Рисунок 3 – Внутренняя структура датчика влажности в DHT11 и DHT22

Кроме того, в этих датчиках для измерения температуры имеется датчик температуры NTC (термистор). Термистор – это терморезистор – резистор, который меняет свое сопротивление в зависимости от температуры. Технически все резисторы являются термисторами – их сопротивление слегка изменяется в зависимости от температуры, но обычно это изменение очень мало и его трудно измерить.

Термисторы сделаны так, чтобы их сопротивление резко изменялось при изменении температуры, и изменение на один градус может составлять 100 Ом или более! Термин «NTC» означает «Negative Temperature Coefficient» (отрицательный температурный коэффициент), что означает, что с ростом температуры сопротивление уменьшается.

Рисунок 4 График зависимости сопротивления NTC термистора от температурыРисунок 4 – График зависимости сопротивления NTC термистора от температуры

С другой стороны имеется небольшая печатная плата с 8-разрядной микросхемой в корпусе SOIC-14. Эта микросхема измеряет и обрабатывает аналоговый сигнал с сохраненными калибровочными коэффициентами, выполняет аналого-цифровое преобразование и выдает цифровой сигнал с данными о температуре и влажности.

Распиновка DHT11 и DHT22/AM2302

Датчики DHT11 и DHT22/AM2302 довольно легко подключаются. У них есть четыре вывода:

  • Вывод VCC обеспечивает питание датчика. Хотя допускается напряжение питания в диапазоне от 3,3 до 5,5 В, рекомендуется питание 5 В. В случае источника питания 5 В, вы можете держать датчик на расстоянии до 20 метров от источника питания. Однако при напряжении питания 3,3 В длина кабеля не должна превышать 1 метра. В противном случае падение напряжения в линии приведет к ошибкам измерения.
  • Вывод Data используется для связи между датчиком и микроконтроллером.
  • NC не подключен
  • GND должен быть подключен к земле Arduino.

Подключение DHT11 и DHT22/AM2302 к Arduino UNO

Теперь, когда у нас есть полное понимание того, как работает датчик DHT, мы можем начать подключать его к нашей плате Arduino!

К счастью, подключение датчиков DHT11, DHT22/AM2302 к Arduino довольно тривиально. У них довольно длинные выводы с шагом 0,1 дюйма (2,54 м), поэтому вы можете легко вставить их в любую макетную плату. Подайте на датчик питание 5 В и подключите землю. Наконец, подключите вывод данных к цифровому выводу 2 на Arduino.

Помните, как обсуждалось ранее, между VCC и линией данных нам нужно установить подтягивающий резистор 10 кОм, чтобы поддерживать высокий логический уровень на линии данных для правильной связи между датчиком и микроконтроллером. Если у вас есть готовый модуль датчика, вам не нужно добавлять какие-либо внешние подтягивающие резисторы. Модуль поставляется со встроенным подтягивающим резистором.

Рисунок 6 Подключение DHT11 к Arduino UNOРисунок 6 – Подключение DHT11 к Arduino UNO Рисунок 7 Подключение DHT22/AM2302 к Arduino UNOРисунок 7 – Подключение DHT22/AM2302 к Arduino UNO

Теперь вы готовы загрузить в Arduino код и заставить ее работать.

Код Arduino. Вывод значений на монитор последовательного порта

Как обсуждалось ранее, датчики DHT11 и DHT22/AM2302 имеют собственный однопроводный протокол, используемый для передачи данных. Этот протокол требует точной синхронизации. К счастью, нам не нужно беспокоиться об этом, потому что мы собираемся использовать библиотеку DHT, которая позаботится почти обо всем.

Сначала скачайте библиотеку, посетив репозиторий на GitHub, или просто нажмите эту кнопку, чтобы скачать архив:

Чтобы установить библиотеку, откройте Arduino IDE, перейдите в «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку» и выберите только что загруженный zip-архив DHTlib.

После установки библиотеки вы можете скопировать следующий скетч в IDE Arduino. Данный скетч выводит значения температуры и относительной влажности в монитор последовательного порта. Попробуйте скетч в работе; а затем мы рассмотрим его подробнее.

Скетч начинается с включения библиотеки DHT. Затем нам нужно определить номер вывода Arduino, к которому подключен вывод данных нашего датчика, и создать объект DHT . Так мы сможем получить доступ к специальным функциям, связанным с библиотекой.

В функции setup() нам нужно инициировать интерфейс последовательной связи, так как для вывода результатов мы будем использовать монитор последовательного порта.

В функции loop() мы будем использовать функцию read22() , которая считывает данные с DHT22/AM2302. В качестве параметра она принимает номер вывода данных датчика. Если вы работаете с DHT11, вам нужно использовать функцию read11() . Вы можете сделать это, раскомментировав вторую строку.

После расчета значений влажности и температуры мы можем получить к ним доступ:

Объект DHT возвращает значение температуры в градусах Цельсия (°C). Его можно преобразовать в градусы Фаренгейта (°F) по простой формуле:

В конце мы выводим значения температуры и влажности в монитор последовательного порта.

Рисунок 8 Вывод в мониторе последовательного порта показаний датчика DHT11 или DHT22/AM2302Рисунок 8 – Вывод в мониторе последовательного порта показаний датчика DHT11 или DHT22/AM2302

Код Arduino. Использование DHT11 и DHT22/AM2302 с LCD дисплеем

Иногда может возникнуть идея, контролировать температуру и влажность в инкубаторе. Тогда для отображения условий в инкубаторе вам, вероятно, понадобится символьный LCD дисплей 16×2 вместо монитора последовательного порта. Итак, в этом примере вместе с датчиком DHT11 или DHT22/AM2302 мы подключим к Arduino LCD дисплей.

Если вы не знакомы с LCD дисплеями на 16×2 символов, взгляните на статью «Взаимодействие Arduino с символьным LCD дисплеем».

Далее нам нужно подключиться к LCD дисплею, как показано ниже.

Рисунок 9 Подключение к Arduino символьного LCD дисплея 16x2 и DHT11Рисунок 9 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT11 Рисунок 10 Подключение к Arduino символьного LCD дисплея 16x2 и DHT22Рисунок 10 – Подключение к Arduino символьного LCD дисплея 16×2 и DHT22

Следующий скетч будет выводить значения температуры и относительной влажности на символьном LCD дисплее 16×2. Он использует тот же код, за исключением того, что мы печатаем значения на LCD дисплее.

Рисунок 11 Показания температуры и влажности на LCD дисплееРисунок 11 – Показания температуры и влажности на LCD дисплее

Wide range of Hygrometers:
DHT22, AM2302, AM2320, AM2321, SHT71, HTU21D, Si7021, BME280

Previous experiments looked at comparing a set of six Aosong DHT22/AM2302 and compared the Aosong DHT22/AM2302 with the Aosong DHT11 and Sensirion SHT71. Here I have added five new devices meaning this test now covers most commonly available low-cost digital hygrometers. This page will present only new results. For details of how the experiment works, please refer to the previous write-ups.

  • Aosong AM2302 (A.K.A. DHT22)
  • Aosong AM2320
  • Aosong AM2321

The DHT11 is clearly a different class of sensor with substantially lower specification and has been dropped from further investigation. In my tests it performed perfectly well with respect to its specification, but I am only interested in devices that claim to read the full range 0–100% RH.

Image of all the devices before installation

The Devices and Test Apparatus

Aosong AM2302

Also commonly known as DHT22. Two devices (E & F) from my previous experiments have been included. Device E was selected as the best of the six I originally started with. [AM2302 datasheet]

Aosong AM2320 & AM2321

The AM2320 is effectively the latest version of the AM2302 with the addition of an option to communicate over I2C interface. It is physically a little smaller, but with identical pin-out. The one-wire serial of the AM2302 is retained making this a simple drop-in replacement. [AM2320 datasheet]

The AM2321 appears to be the same but in a much smaller physical package and narrower pin pitch. It might be electrically identical. There is some suggestion from the manufacturer’s web site that this might already be discontinued and replaced by AM2322. I am not sure. [AM2321 datasheet]

The sensing elements in these are likely the same as each other and I presume similar to the AM2302/DHT22. The internals of these devices are not exactly the same as the DHT22 because they do not exhibit the very distinctive sawtooth behaviour around 25°C.

Sensirion SHT71
Measurement Specialties HTU21D & Silicon Labs Si7021

I discuss these together though they are distinct devices from two different manufacturers. In normal use they are interchangeable both in terms of specification and communications protocols and even have the same I2C address so are drop-in replacements for each other. Similarly the Sensirion SHT21 (not included here) also has a near identical specification and interface. I have seen the same third party generic break-out boards being sold with any one of these devices attached. (See Figure 1.) The one difference I have found and possibly the only way to be sure which device you have is in the devices’ unique serial numbers for which each manufacturer uses a slightly different format, detailed in their respective datasheets. So long as you do not attempt to read the device serial number, these three sensors function identically. That is not to say they will all perform identically. Though equivalent for most normal use, the precise specification details do differ, most particularly in their speed of response. [HTU21D datasheet, Si7021 datasheet]

An interesting feature of the SHT21, HTU21 and Si7021 is that they are available in options with or without a protective PTFE membrane over the sensing element. For this test I am running one device each, with and without. (See Figure 1.) The intent had been to include an identical pair of sensors with and without the cover, however when my devices arrived I found the retailer had sent me HTU21s without the cover and Si7021s with the cover. It was only by reading the internal serial numbers I was able to ascertain that. Though not discussed in detail on this page, the effect of using the protective cover on the response speed has been investigated elsewhere. My conclusion was that is has virtually no impact at all.

Be careful with variable types in your software. These devices can return humidity values <0% RH. This is a good thing because it allows some head room for small errors in the calibration. The first version of my code however used unsigned variables which caused numeric underflow and 0% ended up getting read as 3500%.

Bosch BME280

This device is a bit different. First, unlike all the other devices tested it includes a barometer. Though an interesting addition and I will write about it elsewhere, for the present report I present only the temperature and humidity data.

Second, it possibly works on an entirely different physical principle from the other sensors here. As far as I have been able to acertain, all the other devices are polymer capacitance hygrometers. The Bosch website, datasheet and press releases contain no information that I have been able to find about what is inside the BME280. Currently I am operating on a belief that it is a resistive sensor, measuring the electrical resistence through a porous film rather than the capacitance across a film like the other devices. Many thanks to Nava Whiteford who has sent me some scanning electron micrographs of what is inside the BME280. In those images, the lower die looks like a typical MEMS barometer so the upper die must presumably be the hygrometer and I am guessing that we see a pair of almost square electrodes and the device is measuring the resistence of the cracked film that spans between them.

The datasheet has no accuracy specification outside the range 20%<RH<80%, but my past experience from other Bosch Sensortec devices is that the specifications are rigourous and conservative. They seem to under-promise and over-deliver, so a priori I am not expecting problems outside the specified range. [BME280 datasheet]

As previously demonstrated for other sensors (DHT22, SHT71), driving this device too fast can lead to self-heating. Contrary to the other devices though, this can occur straight out of the box, in the factory default configuration. In its default configuration, rather than taking a reading on demand, the device continuously reads values as fast as it can, returning the latest available value on request. The sampling rate is controlled by setting the 0xF5 memory register and the various speed options are defined in the datasheet. When running at the default full speed my device returned temperatures 0.5°C warmer than when running at one sample per second. At one sample per second values agreed with the polled operating mode where the device was put to sleep between readings. For the present experiment speed is of no consequence and I operated at 1 sample/sec.

Manufacturers’ Specification
AM2302 AM2320/AM2321 SHT71 HTU21D Si7021 BME280
Operating Range 0–100 0–100 0–100 0–100 0–100 0–100
Absolute accuracy
(%RH, 25°C)
±3% (10-90%)
±5% (<10, >90%)
±3% (10-90%)
±5% (<10, >90%)
±3% (20-80%)
±5% (<20, >80%)
±3% (20-80%)
±5% (<20, >80%)
±3% (0-80%)
±5% (>80%)
±3% (20-80%)
Repeatability (%) ±0.3 ±0.1 ±0.1 ±0.025
Long term stability
(% per year)
0.5 0.5 0.5 0.5 0.25 0.5
1/e Response (sec) 5 5 8 5 18 (with cover)
17 (without)
1
Voltage supply (V) 3.3–5.5 3.1–5.5(AM2320)
2.6–5.5(AM2321)
2.4–5.5 1.5–3.6 1.9–3.6 1.71–3.6
The Test Apparatus

Apparatus setup is essentially as previously described though a new board had to be built to hold nine devices inside the jars. The AM2302 and SHT71 devices have proprietary one-wire serial interfaces and were addressed independently, each using a separate GPIO pin as in the previous experiments. All the other sensors were multiplexed onto the I2C bus. I2C is able to address multiple devices on a single bus so long as each has a different address, but since I have multiple samples of the same device I am not able to identify each one uniquely. I therefore use a TI CD4051 8×1 multiplexer so that only one of the devices is connected to the I2C bus at a time. The devices are powered continuously, but the I2C IO lines are briefly connected to each device in turn. This would not have been required if I had only one each of the different device models.

The reference calibration sources are the same as before, eleven saturated solutions and distilled water. Sensors were allowed to stabilise for a few hours with each solution. The software automatically steps the temperature over a pre-defined range, allowing the readings to settle at each temperature and logging a reading to a database before stepping to the next temeperature.

Results

Throughout the following plots you will notice the data for sensor G are a little more sparse than the others. Both my AM2320 devices fail intermittently above 50% RH, just returning bytes of 00 or FF. They are worst in the range 50-70% where I got almost no readings. Below that I had not problems and above they were intermittent but fine most of the time. I never found a cause or have any suggestion for why they should fail to produce output in such a narrow range of humidity. At least the values are obviously wrong and an extra function was added to the microcontroller code to simply reject the bad data. The others all continue uneffected but values were only logged from this sensor when they were sensible.

Similarly, the AM2321 device J failed to return values when the humidity was above 90%. Whenever I used H2O (100%) or K2NO3 (92%) the sensor would work for about 10-15min and then freeze, refusing to even repond to I2C communication requests. It worked again immediately once the humidity dropped. Again, I have not found a fix and simply did not log data from this sensor above 90%.

Part 1: As a Function of Humidity

First we look at the varying response of the sensors to different reference humidities 0–100%. Figures 3 and 4 contain the same data plotted with different axes. Figure 3 shows the actual relative humidity values measured and Figure 4 shows the deviations from a perfect calibration. The manufacturers’ specifications are all defined at 25°C so I highlight those data in red. Data obtained at other temperatures are shown in blue.

Plots of measured vs. reference humidity for the nine hygrometers

Plots of measured vs. reference humidity for the nine hygrometers

Both of the above figures have equivalents in previous test runs where you can see earlier results for SHT71 and AM2302 E, F. The other six are new and this is their first test.

Part 2: As a Function of Temperature

In Figure 4 the red data are measured at 25±1°C and the blue data at other temperatures. Device E (an AM2302/DHT22) performs very well at 25°C, easily achieving the advertised specification. The large scatter of the blue points however show that the calibration degrades rapidly with varying temperature. As previously noted, this is my cherry-picked, best AM2302 from a sample of six. In contrast, device K (an HTU21D) seems to lie just slightly outside its specified tolerance at 25°C but has the very substantial advantage of behaving consistently over temperature. In different applications, absolute accuracy at 25°C or a small temperature dependence might be preferable. Easily the best performers though are the BME280 which are both accurate and consistent over the range tested.

    is sodium chloride. [DHT22/DH11/SHT71 version] is ammonium nitrate. [DHT22/DH11/SHT71 version] is magnesium chloride. [DHT22/DHT11/SHT71 version]

Plots showing thermal dependence of sensor output. Measured humidity vs. temperature.

Plots showing thermal dependence of sensor output. Measured humidity vs. temperature.

Plots showing thermal dependence of sensor output. Measured humidity vs. temperature.

The BME280 shows outstanding calibration throughout. For the other sensors, where the slope of my data matches the slope of the reference data (e.g., NH4NO3 panel K), that device shows good thermal compensation and simply has a constant offset. Where the slopes of the measurements and reference data differ (e.g., MgCl panel K), the device is showing varying errors as the temperature changes.

Part 3: As a Function Simultaneously of Temperature and Humidity

Finally, if a sensor is to be used to measure humidity under a range of varying temperatures a full bivariate calibration is required. Such a calibration over the temperature range 5 < °C < 35 is shown in Figure 8. The curves in Figure 4 are effectively cross sections through these surfaces.

Про Ардуино и не только

Датчики температуры и влажности DHT11 и DHT22

DHT11 и DHT22 (AM2302), пожалуй, наиболее популярные датчики температуры и влажности для Ардуино. Они содержат терморезистор, емкостный датчик влажности и простенький контроллер, который считывает с них аналоговые значения и выдает результат в виде цифрового сигнала. Датчики имеют следующие характеристики:

  • Напряжение питания 3,5
  • Напряжение питания 3,5

DHT11 DHT22 pinout

Датчики имеют 4 вывода: 2 для питания, 1 сигнальный и 1 вывод не используется. В продаже часто встречаются в виде модулей, у них только 3 контакта и они содержат подтягивающий резистор для сигнального вывода. AM2302 может выпускаться как в стандартном корпусе (на фото выше), так и в увеличенном с тремя проводами. Если вы используете не модуль, а отдельный датчик, то вывод DATA следует подтянуть к +5В резистором на 5,1-10кОм. Ниже показана схема подключения DHT11 к Ардуино, DHT22 подключается точно так же.

В принципе можно попробовать вместо внешнего задействовать внутренний подтягивающий резистор Ардуино, если длина провода составляет несколько сантиметров проблем быть не должно. В целом же лучше придерживаться рекомендаций и включать в схему внешний резистор.

Я для работы с датчиками использую библиотеку DHT sensor library от Adafruit. Кроме нее потребуется установить Adafruit Unified Sensor Library. Это можно сделать как вручную, так и через менеджер библиотек в IDE Ардуино (меню Скетч — Подключить библиотеку — Управлять библиотеками. Для быстрого поиска нужной библиотеки воспользуйтесь фильтром). После установки библиотек можно открыть пример DHTtester (скетч также доступен ниже), указать тип используемого датчика (DHT11, DHT22 или DHT21), при необходимости изменить пин для вывода DATA и прошить скетч в Ардуино. Результат работы будет доступен в мониторе порта.

AM2320 – измеряем температуру и влажность

AM2320

Есть такой хороший датчик температуры и влажности, как AM2320. По характеристикам он почти идентичен с более известными датчиками серии DHT, но в то же время имеет возможность работы по I 2 C.

Сравнение аналогов

Если сравнивать датчики серии DHT и AM2320, получаем следующую картину:

Характеристика Датчик
DHT11 DHT22 AM2320
Диапазон температур 0 … +50°C -40 … +80°C -40 … +80°C
Шаг измерения температуры 1°C 0,1°C 0,1°C
Погрешность температуры ±2°C ±0,5°C ±0,5°C
Диапазон влажности 20 … 90% 0 … 100% 0 … 99,9%
Шаг измерения влажности 1% 0,1% 0,1%
Погрешность влажности ±5% ±5% ±3%
Цена 70 руб. 260 руб. 190 руб.

Цены для сравнения взяты из одного и того же магазина (какого – рекламы делать не буду). Так что выбор в пользу AM2320 был очевиден.

Достаточно непонятный момент – зачем делать такой шаг измерения, если погрешность превышает его в десятки раз? Но это вопрос скорее риторический.

Особенности работы

Важное преимущество этого датчика перед DHT – умение работать по шине I 2 C, но это же является причиной одного из главных недостатков. Дело в том, что работа по I2 C предполагает обмен данными по запросу, при этом передаётся адрес устройства (от 0 до 127). И проблема в том, что датчики имеют один и тот же адрес, соответственно, подключить на эту шину более одного датчика будет очень сложно. Тем не менее, мне встречались упоминания о возможности.

Если у вас несколько таких датчиков, работать с ними следует как с DHT – по одному проводу. Для этого достаточно заземлить четвёртый вывод, который в режиме I 2 C используется для синхронизации AM2320.

Чтение данных с датчика

Мы в примере будем использовать работу по I 2 C. Для работы с датчиком скачаем соответствующую библиотеку, а также для поддержки I 2 C подключим библиотеку Wire. Поскольку нашей целью является работы с датчиком, а не с дисплеем, вместо отображения будем отправлять данные в последовательный порт, а смотреть их при помощи монитора порта в среде разработки.

Выводы датчика подключаем следующим образом:

  • 1 – к выводу +5В.
  • 2 – к выводу SDA (A4 для Arudino Uno);
  • 3 – к выводу 0В.
  • 4 – к выводу SCL (A5 для Arudino Uno).

И получаем следующую конструкцию:

Arudino UNO + AM2320

Arudino UNO + AM2320

Стоит отметить, что функция чтения информации с датчика передаёт код завершения операции, по которому можно судить об отсутствии ошибок. Скетч для работы с датчиком будет достаточно простой, поэтому весь код будет приведён здесь, а файла для скачивания не будет.

После запуска приложения открываем монитор порта и наблюдаем передачу данных с датчика.

Arudino UNO + AM2320 - результаты измерения

Arudino UNO + AM2320 — результаты измерения

Читать:
Как настроить сетевой кабель

Похожие публикации