О комбинированных сенсорах параметров среды MS8607 и HDC1000.
Перед повторением обязательно прочитать здесь.

(9.04.2015)

Сергей Безруков

При сегодняшнем изобилии всевозможных сенсоров на рынке пользователей уже сложно чем-либо удивить, тем более придумать что-то новое и конкурентноспособное. Тем не менее, многие фирмы не сдаются и продолжают разработку новых изделий, одновременно улучшая их характеристики. Такая ситуация сложилась и с сенсорами из заглавия, мимо которых я не смог пройти, не попробовав. MEMS сенсор MS8607 разработан фирмой "Measurement Specialties" в конце 2014. Его особенностью является интеграция целых трёх сенсоров в одном корпусе размера 5×3×1 мм.

MS8607

Из восьми контактных площадок на нижней стороне корпуса лишь четыре (на фото выше они идентифицируются по переходным ответстиям) имеют соединение с кристаллами. Корпус легко паяется в домашних условиях, расстояние между контакными площадками 1.25 мм. Фактически, устройство представляет собой 2 независимых датчика в одном корпусе, объединённых по питанию и линиям интерфейса I2C. Внутри корпуса датчики максимально удалены друг от друга, что минимизирует их взаимный подогрев. Один из датчиков предназначен только для измерения относительной влажности воздуха, а другой – для атмосферного давления и температуры окружающей среды. Датчики имеют разные I2C адреса, работоспособны в широком диапазоне питающих напряжений от 1.5 до 3.6 В, и ориентированы на микропотребление. Измерение каждой величины занимает всего около 20 мс. Жалко, что сенсоры не снабжены пылезащитными фильтрами. Кроме того, следует избегать проникновения яркого света через отверстия в корпусе, т.к. это может повлиять на показания.

Сенсор влажности обеспечивает точность ±3% и имеет 16-битное разрешение. Пересчёт его показаний h в значения влажности производится по такой-же формуле, как и для многих других аналогичных сенсоров: RH(%) = -6 + 125*h/216, которая содержит только целочисленные операции и легко вычисляется на любом микроконтроллере.
С сенсором давления дело обстоит сложнее. Следуя классике жанра, при изготовлении сенсора фирма записывает в его память индивидуальные калибровочные коэффициенты, которые следует один раз считать при инициализации сенсора и потом использовать для пересчёта его показаний в единицы давления по формулам из ДШ. Формулы несложные и также содержат лишь целочисленные операции. Однако, они предполагают перемножение 32-битных чисел и работу с 64-битными данными. Поскольку дома я программирую для души исключительно на ассемблере, для упрощения кода решено было собрать тестовую схему на микроконтроллере семейства Kinetis с архитектурой Cortex-M4.

MS8607 Schematic


МК тактируется на частоте 4 мгц от внутреннего генератора, часовой кварц при этом не задействован. Общение МК с датчиком производится с помощью аппаратного модуля I2C на частоте 100 кгц, а с 128×32 графическим дисплеем – через аппаратный модуль SPI на частоте 1 мгц.

ms8607 humidity and temperature ms8607 pressure

Показания влажности/температуры (первое фото) и давления (второе фото) чередуются с периодом 2 сек, обеспечиваемым микромощным таймером МК. Схема питается от стабилизатора на 3.3 В в правой части платы. Отмечу, что работы в широком температурном диапазоне показания датчиков температуры и давления (но не влажности) в сенсоре MS8607 следует подвергнуть нелинейной температурной коррекции по формулам из ДШ. Как показали вычисления, для применения микросхемы в составе погодной станции, установленной в жилом помещении, где температура не выходит за пределы от +15°C до +35°C, эту коррекцию можно и не производить. Отличие показаний температуры и давления скомпенсированного датчика от нескомпенсированного при этом не превышает 0.07°C и 0.1 мм.рт.ст., соответственно с максимумом на нижней границе температурного диапазона.
Более того, если показывать только целые значения температуры и давления, их формулы рассчёта также можно немного упростить, отбросив младшие 4 битa 24-битного значения датчика температуры. При этом формулы становятся такими:
dT = (D2 >> 4) + (C5 << 4)      T(°C)*100 = 2000 + (dT*C6 >> 19)
OFF = (C2 << 13) + (dT*C4 >> 6)      SENS = (C1 << 12) + (dT*C3 >> 7)
P(mbar) = ((D1*SENS >> 21) – OFF) >> 11
В итоге результаты всех операций умножения, за исключением формулы для P, получаются 32-битными, а потеря точности лежит гораздо ниже разрешения целочисленного дисплея.

Тестовая схема работала у меня на столе непрырывно в течении двух недель. Показания всех датчиков не отличались от эталонного измерителя на сенсорах STH15 и BMP180. Программная фильтрация величин не делалась, однако измерение сырых данных датчиков внутренним Δ∑ АЦП производилась с параметром OSR=8192.


Следующий датчик температуры и влажности, HDC1000 фирмы "Texas Instruments", также появился на свет в конце 2014. Мы уже привыкли видеть отверстие на верхней крышке корпуса цифровых датчиков, через которое и производится их связь с окружающей средой. Особенностью этого датчика является установка пластин ёмкостного сенсора на нижней грани корпуса, т.е. между чипом и платой, благодаря чему достигается защита от прямого попадания света и оригинальный внешний вид. Правда, полюбоваться им вы сможете лишь до установки сенсора на плату и только под микроскопом. Возвышение сенсора над платой для контакта с воздухом обеспечивается шарами корпуса BGA. Они-же предохраняют его от большинства частичек пыли в "нормальных" условиях эксплуатации (расстояние между шарами 0.5 мм а высота над платой и того меньше). Экстремально малые размеры сенсора, всего 2×1.6 мм, сэкономят вам кучу места на плате при его дефиците.

HDC1000

Меня терзали сомнения, как сенсор будет отслеживать смену состава воздуха при столь низкой посадке и расположении датчика. Однако, оказалось, что сомнения мои были совершенно напрасными – сенсор работает просто великолепно. Схема включения его весьма стандартная, а формулы рассчёта значений температуры и влажности по сырым показаниям t и h такие-же как и у многих других моделей:
Т(°С) = (t*165 >> 16) – 40      RH(%) = h*100 >> 16,
с которыми легко справится любой МК. Я использовал ARM от "Freescale" только потому, что сейчас с ними работаю и не хочу отвлекаться.

HDC1000 Schematic


Схема была опробована на макетке, среднее токопотребление примерно такое-же как у предыдущей: около 100 мкА с учётом дисплея при отключённой подсветке, и порядка 2 мкА без него.

hdc1000 humidity and temperature

Диапазон рабочих напряжений датчика от 2.7 до 5 В, время измерения каждой величины не превышает 7 мс, среднее токопотребление при периоде измерений 1 сек около 1.2 мкА. Как и предыдущая модель он также оснащён внутренним подогревателем, который полезен для удаления конденсации влаги на пластинах сенсора и ускорения устранения оффсета показаний при длительном нахождении в условиях высокой влажности. После запроса сенсор производит единичное измерение и потом автоматически уходит в сон с наноампермым потреблением. Окончание измерения можно узнать по падению уровня на выводе DRY, или по прошествии времени, зависящим от установленного в регистре настроек разрешения (см. ДШ).

Сергей Безруков, april 2015





Обсудить на форуме



НаписАть отзыв E-mail            Other electronics  Другая электроника

Home
На главную



счётчик посещений

датчик влажности датчик давления датчик температуры


Copyright © 2015 by Dmitry Dubrovenko.