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

  • Контроллер фена на STM32

    Собрал фен на китайском контроллере с STM32 на борту. Корпус выдержан в стиле паяла на STM32. Контроллер брал за $35. Ручка $12. Разъем GX16-8…

  • Зарядное устройство ISDT Q6 Nano

    Поменял свой iMax-B6 на ISDT Q6 Nano. Помещается на ладонь руки. Способен отдавать до 8A/200W. ISDT Q6 Nano Нормально заряжает Ni-Ca и Ni-Mh…

  • Зажим на автомобильный насос

    Поменял на автомобильном насосе зажим. Офигительная штука. Прощай втыкание с 100500 попытки. Всегда с первого раза и без утечек. Брал за $1.8.…

  • 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