elchupanibrei (elchupanibrei) wrote,
elchupanibrei
elchupanibrei

Category:

Датчик температуры и влажности AHT10/AHT15/AHT20

Пять лет сенсоры HTU21D/SHT21/Si7021 были королями Arduino среди бюджетных термометров/гирометров, но всему приходит конец. Китайцам удалось сделать за $1.3 и не хуже.

Сенсор AHT10 общается по I²C шине, имеет ДВА! адреса и заводскую калибровку. Если верить тестам от Oleksandr Liutyi новый король даже немножко выигрывает по кучности результатов.

AHT10_web.jpg
внешний вид AHT10

Вот так AHT10 выглядит под крышкой


богатый внутренний мир AHT10

Схема один в один как у старичка. Внимание: на плате установлен LDO XC6206-3.3 с максимальным входным напряжением Vin < 7 вольт.


схема AHT10

TTX сенсора AHT10, AHT15 и AHT20:

- Напряжение питания: 1.8 В ... 3.6 В для AHT10 и 2.0 В ... 5.5 В для AHT20
- Диапазон измерения температуры: -40°C .. + 85°C
- Разрешающая способность по температуре: 0.01°C
- Точность измерения температуры: ± 0.3°C
- Диапазон измерения относительной влажности: 0% .. 100%
- Разрешающая способность по влажности: 0,024%
- Точность измерения относительной влажности: ± 2% при 25°C
- Скорость шины I²C: 0Гц - 400КГц
- Рекомендуемая частота опроса: 8 сек ... 30 сек

Длительное воздействие на сенсор в течение 60 часов при влажности > 80% может привести к временному дрейфу относительной влажности на + 3%. Датчик медленно вернется к паспортной точности ± 2 при нормальных условиях эксплуатации.

Официального datasheet на английском нет. В кустарном переводе куча неясностей. Но тем не менее мне удалось кое-что разобрать и написать библиотеку.

Как всегда забирать тут - https://github.com/enjoyneering/AHT10

UDP: Если во время чтения на I²C шине возникает проблема, то библиотека вместо температуры и влажности выдаёт 255/AHT10_ERROR, как бы намекая вам о случившемся.

UDP2: Тема Oleksandr Liutyi на официальном форуме Arduno.

UDP3: Вроде написал кучу примеров. Подробно все закоментировал с объяснениями, но народ не догоняет. Для тех кто на бронепоезде еще раз... Каждый раз, когда вызывается myAHT10.readTemperature() или myAHT10.readHumidity(), библиотека читает по 6 байт (всего 12 байтов). Это много и не эффективно. AHT10 измеряет температуру и влажность одновременно. Это означает, что вся информация о T и RH уже присутствует в первых 6 байтах. Зачем гонять туже инфу по I²C шине второй раз! Для этого делаем так:

Serial.print(myAHT10.readTemperature(AHT10_FORCE_READ_DATA)); //read 6 bytes via I2C
Serial.print(",");
Serial.print(myAHT10.readHumidity(AHT10_USE_READ_DATA)); //use same 6 bytes

UDP4: Не рекомендуется опрашивать датчик слишком часто из-за его нагрева и низкой скорости реакции на изменения влажности. Минимальный рекомендуемый  интервал между измерениями 8 секунд. Конечно, сенсор может и быстрее, но полученным значениям я бы верить не стал.

UDP5: Библиотека подросла до вересии 1.1.0. Исправлен баг и добавлена поддержка AHT20.
Tags: #arduino, arduino
Subscribe

  • Ремонт чайника

    Есть у меня полумный чайник с кнопками и выбором температуры. На прошлой неделе не включился... Нарушился контакт, обуглились провода в маме,…

  • Адский папелац 2

    Американский АвтоВАЗ просто так не сдается. Не долго музыка играла. Месяц назад появилось масляное пятно под левым задним колесом. Это мы уже…

  • MatrixClock v2.0.0 уже на Github

    Выкатил финалочку. Писалось в свободное от работы, семьи время. На все про все ушло 1.5 года. Осталось нарисовать корпус для печати на 3D принтере.…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments