Датчик абсолютного давления и температуры (последним сегодня уже никого не удивишь) Bosch BMP180 . Датчик не нов и хорошо известен, datasheet изучен вдоль и поперек, а библиотек целая куча.
Характеристики :
- Диапазон измерения давления: 300 – 1100 hPa.
- Напряжение питания: от 1.8 — 3.3 и 5V (если на плате стоит стабилизатор напряжения).
- Низкое энергопотребление: 3 мкА (режим ультра-низкого энергопотребления)
- Точность: режим пониженного энергопотребления, разрешение 0.06hPa (0,5 м).
- Высокий линейный режим с разрешением 0.02hPa (0,17 м).
- Подключение: интерфейс I2C.
- Возможность измерения температуры в диапазоне -40 … +85 ° C.
- Время отклика: 5ms — 7.5ms (standart mode).
- Ток в режиме ожидания: 0,1 мкA
Более подробно можно прочитать в Datasheet.
Принцип действия датчика BMP180:
В датчике имеется герметичная камера, одна из стенок которой является гибкой мембраной с установленными на ней тензодатчиками. Мембрана прогибается пропорционально разности давлений внутри камеры и снаружи, что влияет на изменение сопротивления тензодатчиков электрическому току. Так же имеется термодатчик, сопротивление которого меняется пропорционально температуре. АЦП (аналого-цифровой преобразователь) переводит результаты изменений датчиков в цифровые данные « некомпенсированные результаты », которые доступны для чтения из регистров датчика: «Out MSB», «Out LSB» и «Out xLSB». Для компенсации указанных результатов (компенсации смещения, температурной зависимости, погрешностей при изготовлении, неоднородностей материалов и т.д.) каждый датчик калибруется на заводе, и в EEPROM записываются индивидуальные для каждого датчика 11 калибровочных коэффициентов
(176 бит) , которые доступны для чтения из регистров датчика: «AC1», «AC2», «AC3», «AC4», «AC5», «AC6», «B1», «B2», «MB», «MC», «MD».
Не допускайте попадания на датчик влаги и прямых солнечных лучей.
Алгоритм получения данных:
- Чтение калибровочных коэффициентов:
Чтение значений из одноименных регистров:
short AC1, AC2, AC3, B1, B2, MB, MC, MD;
unsigned short AC4, AC5, AC6;
- Чтение температуры: (некомпенсированное значение)
Записываем в регистр «Measurement Control» значение: 0x2E;
Ожидаем спад флага состояния «CSO» в «0»;
Читаем результат из регистров «Out MSB» и «Out LSB»;
- Чтение давления: (некомпенсированное значение)
Записываем в регистр «Measurement Control» значение: 0x34 + (OSS > (8-OSS);
- Вычисление действительных значений
Код и подключение.
Датчик достаточно популярный. Чаще всего он идет уже с обвязкой в виде готового модуля. Вы без труда найдете много разных, готовых библиотек. Я остановился на BMP180_Breakout_Arduino_Library. Скачать можно с GitHub или с нашего сайта.
Подключение описано в библиотеке, но я его продублирую на всякий случай:
SCL(clock)
- Uno,Nano,Pro к А5
- Mega,Due к 21
- Leonardo к 3
SDA(Data)
- Uno,Nano,Pro к А4
- Mega,Due к 20
- Leonardo к 2
VIN — к +5 вольта.
IO — Этот вывод есть на некоторых платах, питание в обход стабилизатора. НЕ больше 3.3 вольта .
Датчики атмосферного давления bmp180, bmp280, bme280 – частые гости в инженерных проектах. С их помощью можно предсказать погоду или измерить высоту над уровнем моря. Сегодня именно эту линейку можно назвать самыми популярными и недорогими сенсорами для ардуино. В этой статье мы расскажем принцип действия датчиков, схему подключения к различным платам Arduino и приведем примеры программирования скетчей.
Принцип действия барометра на BMP280, BMP180, BME280
Барометр – устройство, измеряющее атмосферное давление. Электронные барометры используются в робототехнике и различных электронных устройствах. Наиболее распространенными и доступными являются датчики давления от фирмы BOSH: это BMP085, BMP180, BMP280 и другие. Первые два очень похожи между собой, BMP280 – это более новый и усовершенствованный датчик.
Датчики давления работают на преобразовании давления в движение механической части. Состоит датчик давления из преобразователя с чувствительным элементом, корпуса, механических элементов (мембран, пружин) и электронной схемы.
Датчик BMP280 создан специально для приложений, где требуются малые размеры и пониженное потребление энергии. К таким приложениям относятся навигационные системы, прогноз погоды, индикация вертикальной скорости и другие. Датчик обладает высокой точностью, хорошей стабильностью и линейностью. Технические характеристики датчика BMP280:
- Габариты 2 х 2,5 х 0,95 мм.
- Давление 300-1100гПа;
- Температуры от 0С до 65 С;
- Поддержка интерфейсов I2C и SPI;
- Напряжение питания 1,7В – 3,6В;
- Средний ток 2,7мкА;
- 3 режима работы – режим сна, режим FORCED (проведение измерения, считывание значения, переход в спящий режим), режим NORMAL (перевод датчика в циклическую работу – то есть устройство самостоятельно через установленное время выходит из режима сна, проводит измерения, считывает показания, сохраняет измеренные значения и переходит снова в режим сна).
Датчик BMP180 – это дешевый и простой в применении сенсорный датчик, который измеряет атмосферное давление и температуру. Используется обычно для определения высоты и в метеостанциях. Состоит устройство из пьезо-резистивного датчика, термодатчика, АЦП, энергонезависимой памяти, ОЗУ и микроконтроллера.
Технические характеристики датчика BMP180:
- Пределы измеряемого давления 225-825 мм рт. ст.
- Напряжение питания 3,3 – 5В;
- Ток 0,5мА;
- Поддержка интерфейса I2C;
- Время срабатывания 4,5мс;
- Размеры 15 х 14 мм.
Датчик bme280 содержит в себе 3 устройства – для измерения давления, влажности и температуры. Разрабатывался для малого потребления тока, высокой надежности и долгосрочной стабильной работы.
Технические характеристики датчика bme280:
- Размеры 2,5 х 2,5 х 0,93 мм;
- Металлический LGA-корпус, оснащенный 8-ю выходами;
- Напряжение питания 1,7 – 3,6В;
- Наличие интерфейсов I2C и SPI;
- Потребляемый ток в режиме ожидания 0,1 мкА.
Если сравнивать все устройства между собой, то датчики очень похожи. По сравнению со своим предшественником, к которым относится BMP180, более новый датчик BMP280 заметно меньше по размерам. Его восьмиконтактный миниатюрный корпус требует аккуратности во время монтажа. Также устройство поддерживает интерфейсы I2C и SPI, в отличие от предшественников, которые поддерживали только I2C. По логике работы датчика изменений практически нет, была только усовершенствована температурная стабильность и увеличено разрешение АЦП. Датчик BME280, измеряющий температуру, влажность и давление, также похож на BMP280. Отличие между ними заключается в размерах корпуса, так как BME280 имеет датчик влажности, который немного увеличивает габариты. Количество контактов и их расположение на корпусе совпадают.
Варианты подключения к Arduino
Подключение датчика BMP180 к Ардуино. Для подключения понадобятся сам датчик BMP180, плата Ардуино UNO, соединительные провода. Схема подключения показана на рисунке ниже.
Землю с Ардуино нужно соединить с землей на датчике, напряжение – на 3,3 В, SDA – к пину А4, SCL – к А5. Контакты А4 и А5 выбираются с учетом их поддержки интерфейса I2C. Сам датчик работает от напряжения 3,3 В, а Ардуино – от 5 В, поэтому на модуле с датчиком установлен стабилизатор напряжения.
Подключение BMP 280 к Ардуино. Распиновка и вид сверху платы изображены на рисунке.
Сам модуль датчика давления выглядит следующим образом:
Для соединения с Ардуино нужно подключить выходы следующим образом: соединить землю с Ардуино и на датчике, VCC – на 3,3В, SCL / SCK – к аналоговому контакту А5, SDA / SDI – к А4.
Подключение датчика BME280. Расположение контактов и распиновка у датчика BME280 такая же, как у BMP280.
Так как датчик может работать по I2C и SPI, подключение можно реализовать двумя методами.
При подключении по I2C нужно соединить контакты SDA и SCL.
При подключении по SPI нужно соединить SCL с модуля и SCK (13й контакт на Ардуино), SDO с модуля к 12 выводу Ардуино, SDA – к 11 контакту, CSB (CS) – к любому цифровому пину, в данном случае к 10 контакту на Ардуино. В обоих случаях напряжение подключается к 3,3В на Ардуино.
Описание библиотеки для работы с датчиком. Пример скетча
Для работы с датчиком BMP180 существуют различные библиотеки, упрощающие работу. К ним относятся SFE_BMP180, Adafruit_BMP085. Эти же библиотеки подходят для работы с датчиком BMP080. Для датчика bmp280 используется похожая библиотека Adafruit_BMP280.
Первый пробный скетч будет заставлять датчик считывать показания давления и температуры. Код подойдет как для датчика BMP180 , так и для BMP280, нужно только подключить правильную библиотеку и указать верные контакты, к которым подключен модуль. В первую очередь в коде нужно подключить все библиотеки и инициализировать работу датчика. Для определения давления нужно сначала узнать температуру. Для этого используется следующий элемент кода.
Затем нужно получить информацию об атмосферном давлении.
После загрузки скетча в окне мониторинг порта появятся данные о температуре и атмосферном давлении.
Датчик BME280 также показывает давление и температуру, дополнительно он может считывать показания о влажности, который по умолчанию выключен. При необходимости можно произвести настройки датчика и начать считывать показания о влажности. Диапазон измерения от 0 до 100%. Библиотека, которая нужна для работы с датчиком, называется Adafruit_BME280.
Код похож на тот, что описан выше, только к нему еще добавляются строки для определения влажности.
Возможные ошибки при подключении и устранение их
Наиболее часто встречающаяся ошибка – неправильные данные о давлении и температуре, которые отличаются на несколько порядков от реального значения. Причиной этого чаще всего становится неправильное подключение – например, в библиотеке указано, что нужно подключать по I2C, а датчик подключен по SPI.
Также при использовании “китайских” датчиков можно столкнуться с нестандартными I2C или SPI адресами. В этом случае рекомендуется просканировать все присоединенные устройства с помощью одного из популярных скетчей и выяснить, по какому адресу откликается ваш датчик давления.
Еще одной проблемой может стать несоответствие рабочего напряжения питания модуля базовому напряжению используемого контроллера. Так, для работы с датчиком на 3,3 В вам потребуется создать делитель напряжения или использовать один из существующих готовых модулей согласования уровней. Кстати, такие модули достаточно дешевы и начинающим рекомендуется использовать их.
Небольшие отклонения от реальной величины могут быть связаны с калибровкой сенсора. Например, для датчика BMP180 все данные рассчитываются и задаются в скетче. Для получения более точного значения высоты нужно знать текущее значение давления над уровнем моря для данных координат.
Заключение
Датчики атмосферного давления bmp180, bmp280- не самые дешевые виды сенсоров, но во многих случаев альтернативы таким сенсорам практически нет. В проекте метеостанции датчик фиксирует важный параметр – атмосферное давление, благодаря чему становится возможным предсказывать погоду. В проектах, связанных с созданием летающих аппаратов барометр используется в качестве датчика реальной высоты над уровнем моря.
Подключение датчиков не представляет какой-либо сложности, т.к. используется стандартной i2C или SPI соединение. Для программирования можно использовать одну из готовых бесплатных библиотек.
Датчик абсолютного давления и температуры (последним сегодня уже никого не удивишь) Bosch BMP180 . Датчик не нов и хорошо известен, datasheet изучен вдоль и поперек, а библиотек целая куча.
Характеристики :
- Диапазон измерения давления: 300 – 1100 hPa.
- Напряжение питания: от 1.8 — 3.3 и 5V (если на плате стоит стабилизатор напряжения).
- Низкое энергопотребление: 3 мкА (режим ультра-низкого энергопотребления)
- Точность: режим пониженного энергопотребления, разрешение 0.06hPa (0,5 м).
- Высокий линейный режим с разрешением 0.02hPa (0,17 м).
- Подключение: интерфейс I2C.
- Возможность измерения температуры в диапазоне -40 … +85 ° C.
- Время отклика: 5ms — 7.5ms (standart mode).
- Ток в режиме ожидания: 0,1 мкA
Более подробно можно прочитать в Datasheet.
Принцип действия датчика BMP180:
В датчике имеется герметичная камера, одна из стенок которой является гибкой мембраной с установленными на ней тензодатчиками. Мембрана прогибается пропорционально разности давлений внутри камеры и снаружи, что влияет на изменение сопротивления тензодатчиков электрическому току. Так же имеется термодатчик, сопротивление которого меняется пропорционально температуре. АЦП (аналого-цифровой преобразователь) переводит результаты изменений датчиков в цифровые данные « некомпенсированные результаты », которые доступны для чтения из регистров датчика: «Out MSB», «Out LSB» и «Out xLSB». Для компенсации указанных результатов (компенсации смещения, температурной зависимости, погрешностей при изготовлении, неоднородностей материалов и т.д.) каждый датчик калибруется на заводе, и в EEPROM записываются индивидуальные для каждого датчика 11 калибровочных коэффициентов
(176 бит) , которые доступны для чтения из регистров датчика: «AC1», «AC2», «AC3», «AC4», «AC5», «AC6», «B1», «B2», «MB», «MC», «MD».
Не допускайте попадания на датчик влаги и прямых солнечных лучей.
Алгоритм получения данных:
- Чтение калибровочных коэффициентов:
Чтение значений из одноименных регистров:
short AC1, AC2, AC3, B1, B2, MB, MC, MD;
unsigned short AC4, AC5, AC6;
- Чтение температуры: (некомпенсированное значение)
Записываем в регистр «Measurement Control» значение: 0x2E;
Ожидаем спад флага состояния «CSO» в «0»;
Читаем результат из регистров «Out MSB» и «Out LSB»;
- Чтение давления: (некомпенсированное значение)
Записываем в регистр «Measurement Control» значение: 0x34 + (OSS > (8-OSS);
- Вычисление действительных значений
Код и подключение.
Датчик достаточно популярный. Чаще всего он идет уже с обвязкой в виде готового модуля. Вы без труда найдете много разных, готовых библиотек. Я остановился на BMP180_Breakout_Arduino_Library. Скачать можно с GitHub или с нашего сайта.
Подключение описано в библиотеке, но я его продублирую на всякий случай:
SCL(clock)
- Uno,Nano,Pro к А5
- Mega,Due к 21
- Leonardo к 3
SDA(Data)
- Uno,Nano,Pro к А4
- Mega,Due к 20
- Leonardo к 2
VIN — к +5 вольта.
IO — Этот вывод есть на некоторых платах, питание в обход стабилизатора. НЕ больше 3.3 вольта .