Измеряем температуру, влажность и давление датчиками начального уровня.

Обратил вот внимание, что данная и весьма распространенная тема еще не освещена на моем сайте. А так как его использую в том числе и я как справочный материал (копаться в папках на хардах и дольше и не всегда они под рукой) - то решил черкануть этот кратенький материал.

Существует множество различных датчиков одного и того же типа воздействия, отличаются они как правило не только по исполнению, но также и по диапазону измеряемых значений, точности и соответственно цене. Какой выбрать - решать пользователю. В этом материале рассмотрим наиболее популярные и доступные датчики указанных воздействий из нижнего ценового сегмента - соответственно ожидать от них высокой точности и стабильности не стоит - но картинку в целом они дают. Начнем с влажности.

Датчики влажности и температуры DHT11 и DHT22.

Оба этих датчика "очень начального" уровня, хотя второй чуть более прогрессивен. В таких сенсорах датчик температуры идет "бонусом". Взаимодействие с ними происходит по цифровому интерфейсу из одной сигнальной линии. Также к датчику подводится питание. Т.е. из четырех ног датчика используется только три. С лева направо (ногами вниз, решеткой к себе) -  VCC, DATA, NC, GND.

Слева - DHT22; Справа - DHT11;

Приведем сравнение параметров обеих датчиков в виде таблицы.

 DHT11DHT22
 Диапазон измерения влажности20-80%0-100%
 Точность при измерении влажности5%2-5%
 Диапазон измерения температуры0-50°C-40 to 125°C
 Точность при измерении температуры  ±2°C±0.5°C
 Максимальная частота измерений1 Hz0.5 Hz

С чтением документации и написанием скетча заморачиваться не придется - товарищи с adafruit уже проделали эту работу, так что можно просто скачать библиотеку с примером. Там нужно лишь в начале раскомментировать используемый сенсор и закомментировать все остальные. Подключение также весьма тривиально (распиновку см. выше). Линию данных вешаем на цифровую ногу указанную в скетче (по умолчанию D2), а также подтягиваем ее резистором 10к к питанию. Питать датчики рекомендуется от 3.3В (хотя и от пяти они вроде не дохнут и работают нормально).

Можно встретить в продаже такие датчики напаянные на мини плату-адаптер. толк в ней сомнительный, так как из обвязки датчику нужен только резистор.

Из практики тестирования - DHT11 показывает более низкое значение влажности (разница около 5%), температуру же напротив DHT11 завышает на 1°C (что подтверждается и другими термометрами). DHT22 температуру измеряет вполне адекватно. Жаль нет точного эталона для сравнения значений влажности.

Датчик давления и температуры BMP085.

Сей датчик (производства Bosch) весьма миниатюрен, и распаивать его самому не пожелаешь никому - посему берем его исключительно в составе платы-адаптера, которая к тому же содержит еще и стабилизатор напряжения. Наличие термометра в корпусе сенсора уже не являются просто "бонусом" - его показания необходимы для корректировки значения при расчете точной величины давления. Соответственно точность этого термометра существенно выше чем в датчике влажности.

Модуль с сенсором BMP085 - содержит стабилизатор питания и пр. Интерфейс I2C.

Взаимодействие с датчиком происходит по двум линям интерфейса I2C, описание последовательности чтения калибровочных констант, переменных текущего состояния, а также алгоритм расчета актуального значения температуры и давления - подробно расписаны в документации на сенсор. Колдовать с формализацией описания алгоритма тоже не приходится - можно воспользоваться готовым примером (что я и сделал). Корпус датчика вполне удачный (в отличии от описанного здесь) - практически "вандалозащищенный" ;-))

При необходимости перевода одних величин (влажности, температуры, давления) в другие можно воспользоваться одним из многочисленных онлайн калькуляторов (например этим) - и прописать уже необходимые коэффициенты для пересчета в свой скетч.

MiGeRA (май 2013)

Заглавная » Радиоэлектроника » Arduino - Высокоуровневая платформа устройств на микроконтроллерах » Погодные датчики начального уровня