Выходной сигнал |
I2C, ШИМ, SDM |
Потребляемая мощность |
1.5 мкВт |
Диапазон измерений относительной влажности |
0 - 100% |
Диапазон рабочих температур |
-40...125°С |
Время отклика (измерения отн. влажности) |
8 сек. |
Точность |
2% |
Габаритные размеры |
QFN корпус, 3х3 мм |
Как и в любом устройстве, работающем по шине
I2C с использованием ведущего (в нашем случае – это микроконтроллер) и
ведомого (датчик SHT21) вначале ведущий передаёт стартовый
импульс (S). Затем
передаётся адрес ведомого
устройства по шине I2C с
режимом записи. Адрес SHT21 определён как 1000000X. Режим
запись/чтение определяет бит X (0-запись, 1-чтение). Затем ведущий ожидает
подтверждения от ведомого – команду АСК.
После получения подтверждения, микроконтроллер выдаёт в линию команду
управления или
конфигурации – биты 10-17. В показанном на рис. 3 примере передаётся команда
работы измерения влажности в режиме Hold. Полный список команд показан в
таблице на рис.
Рис.
Далее, согласно стандартным процедурам
протокола I2C, передаётся повторный
стартовый импульс (S) и адрес
датчика с режимом чтения и
контролем приёма подтверждения АСК.
После приёма подтверждения начинается отсчёт времени
измерения выбранного
параметра – влажности или температуры (Measurement) . Следовательно, на это
время необходимо установить нужные тайм-ауты в процессе считывания
информации с датчика.
После измерения начинается непосредственно процесс
считывания информации Сначала сохраняется содержимое старшего
регистра (MSB) с
передачей ведомому (от микроконтроллера к датчику) команды подтверждения АСК.
Затем считывается младший
байт (LSB) с выдачей
подтверждения и контрольная
сумма (Checksum). Так
как считывание контрольной суммы является завершением процедуры чтения, то
ведомому передается команда NACK,
что говорит о завершении процесса считывания и стоповый бит (Р). Если
контрольная сумма не нужна, то команду NACK необходимо подать вместо команды
АСК в позиции 45. При этом считывание Checksum будет игнорировано. Последние
два бита младшего разряда (43 и 44, рис.3) как наименее значащие при работе
в 14-ти битном режиме используются для передачи статуса
работы – если бит 43
равен 0-измерение температуры, если 1 – измерение влажности. Бит 44 не
определён и в данном случае не используется.
На других режимах работы и дополнительных регистрах SHT21
останавливаться не будем - всю необходимую дополнительную информацию можно
найти в даташите, а лучше на основе приведённого выше примера работы
датчика, попытаемся реализовать экспериментальную схему измерителя
температуры и влажности.
Но вначале нужно уточнить один момент. Полученные результаты
измерения представляют собой 16-ти
битное число, которое хранится в двух регистрах – MSB и LSB.
Однако это значение необходимо подвергнуть преобразованию по определённой
формуле, что бы выводимая информация соответствовала градусам в режиме
измерения температуры и процентам в режиме измерения влажности.
Для перевода полученного значения в
градусы применяется
формула:
Для измерения влажности данная
формула преобразования будет иметь несколько иной вид:
Теперь перейдём непосредственно к реализации схемы. Для
экспериментов с датчиком SHT21 была использована схема с микроконтроллером16F628A и
ЖКИ индикатором WH0802A (рис.5).
В принципе, схема абсолютно стандартная, никаких особенностей не имеет.
Некоторые вопросы возникли с организацией питания – пришлось использовать
питание 5 В для
ЖКИ-индикатора и питание 3,3 В
для микроконтроллера и датчика. Это обусловлено тем, что максимально
допустимое рабочее напряжение SHT21 составляет 3,6В. Датчик SHT21
подключается по шине I2C, которая в микроконтроллере реализована программным
способом. В схеме использован кварцевый резонатор на частоту 4 МГц и внешняя
RC-цепь сброса.