Ищете компактный датчик температуры и влажности? Если вы решили, что AHT10 ваш следующий датчик для экспериментов, то эта статья для вас..

Датчик температуры и влажности AHT10
В datasheet говорится, что AHT10 — это цифровой датчик температуры и влажности, встроенный для пайки оплавлением. Двухрядный плоский безвыводной SMD-корпус имеет размеры 4х5мм и высоту 1,6мм.
Датчик AHT10 оснащен микросхемой ASIC новой конструкции, улучшенным полупроводниковым емкостным датчиком влажности MEMS и стандартным встроенным датчиком температуры. Он может выводить калиброванный цифровой сигнал по I2C шине.
Миниатюрный датчик имеет диапазон питания от 1,8 до 3,6 В, но рекомендуемое рабочее напряжение — 3,3 В.
Сенсорный модуль AHT10
Поскольку этот датчик предназначен для штамповки на специальной печатной плате с помощью процесса оплавления, большинству радиолюбителей будет нелегко справиться с ним. К счастью, в интернете доступно бесчисленное количество модулей на основе этого датчика по доступным ценам.

Сенсорный модуль AHT10 имеет собственный встроенный линейный регулятор напряжения и базовую схему сдвига логического уровня. Существует возможность изменить адрес I2C (по умолчанию 0x38).
Регулятор напряжения с малым падением напряжения
SMD маркировка «662K» на микросхеме стабилизатора напряжения показывает, что это стабилизатор 3,3 В LM6206-3.3/XC-6206-3.3, представляющий собой трехвыводной сильноточный низковольтный стабилизатор, выполненный по CMOS технологии. Как следует из datasheet стабилизатор может обеспечить максимальный выходной ток до 100 мА и допускает входное напряжение до 6 В. В таблице ниже показаны его основные характеристики:
Схема сдвига логического уровня
Сдвиг логического уровня состоит из массива SMD резисторов 10 кОм x 4 (103) и 6-контактного сдвоенного N-канального MOSFET-чипа. В некоторых старых модулях микросхема MOSFET имеет маркировку 702, а в новых модулях установлена другая микросхема с маркировкой K27.
На самом деле это микросхемы 2N7002DW (702) и 2N7002KDW (K27), последняя имеет встроенный механизм защиты от электростатического разряда.
Это очень простая идея реализовать двунаправленный сдвиг уровня с помощью пары N-канальных МОП-транзисторов и группы резисторов. Протокол I2C является полудуплексным, поэтому требуется двунаправленная трансляция уровня.
Схема модуля сдвига уровня работает без проблем. Но таблицы данных, которые я собрал, выглядят немного странно, поэтому я не уверен, является ли K27 чипом с двумя мосфетами логического уровня или нет! Эта SMD-деталь в моем модуле AHT10 имеет довольно странную маркировку «RK».
Выбор I2C адреса
Согласно официальному техническому описанию, I2C адрес датчика AHT10 по умолчанию равен 0x38, и этот адрес является фиксированным. Даташит не дает никакой информации об изменении адреса устройства.
Это означает, что к одной шине I2C одновременно может быть подключено только одно устройство. Тогда почему модуль имеет эту опцию? Несмотря на тщательное расследование, у меня до сих пор нет удовлетворительного ответа!
Обновление: у AHT10 может быть альтернативный адрес I2C 0x39, но он не разглашается!
Ардуино и AHT10
Затем я подключил сенсорный модуль AHT10 и Arduino Uno, как показано на приведенной ниже схеме:
Я также загрузил простой тестовый код для отображения показаний датчиков в окне Serial Monitor. Я получил некоторые разумные значения датчиков (температура, влажность и точка росы). Хотя я этого не ожидал, сенсорный модуль AHT10 одинаково хорошо работал как при напряжении 5 В, так и при напряжении 3,3 В.
Точка росы — это температура, до которой необходимо охладить воздух (при постоянном давлении), чтобы достичь относительной влажности (RH) 100%. В этот момент воздух не может удерживать больше воды в газовой форме. Если бы воздух еще больше охладить, водяной пар выйти из атмосферы в жидком виде (обычно в виде тумана или осадков). Чем выше поднимается точка росы, тем больше влаги в воздухе.
Скетч
#include <Wire.h> #include <AHT10.h> AHT10Class AHT10; void setup() { Serial.begin(9600); Wire.begin(); if (AHT10.begin(eAHT10Address_Low)) Serial.println("Init AHT10 Success!"); else Serial.println("Init AHT10 Failed!"); } void loop() { Serial.println("//Arduino & AHT10//"); Serial.println("Quick Test – Serial Monitor"); Serial.println(String("") + "Humidity(%RH):\t\t" + AHT10.GetHumidity() + "%"); Serial.println(String("") + "Temperature(℃):\t" + AHT10.GetTemperature() + "℃"); Serial.println(String("") + "Dewpoint(℃):\t\t" + AHT10.GetDewPoint() + "℃"); delay(1000); }
Для этого кода быстрого теста требуется библиотека AHT10 Arduino, которую можно скачать отсюда.
