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

  • Time, Temperature & Humidity Relay - режим осушителя

    Пришли WiFi Relay module на ESP-01S описанные тут. Сдул феном 1-мегабайтную флешку и вкорячил 4 мегабайта, со сгоревшей ESP-12. В Arduino IDE…

  • Time, Temperature & Humidity Relay - новости с полей

    Я уже почти закончил tthRelay и собирался приступить к тестированию, как всплыла еще одна архиважная фича. Захотелось эмуляции кратковременно…

  • Скоро Time, Temperature & Humidity Relay

    Понадобилось мне подсушить подвал, уж очень там влажно. Пару раз забыл выключить. Итого +25% за электричество. Сначала планировал только режим…

  • 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