Реле давления на ардуино своими руками

Обновлено: 04.07.2024

Датчики атмосферного давления 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

Технические характеристики датчика BMP180:

  • Пределы измеряемого давления 225-825 мм рт. ст.
  • Напряжение питания 3,3 – 5В;
  • Ток 0,5мА;
  • Поддержка интерфейса I2C;
  • Время срабатывания 4,5мс;
  • Размеры 15 х 14 мм.

Датчик bme280 содержит в себе 3 устройства – для измерения давления, влажности и температуры. Разрабатывался для малого потребления тока, высокой надежности и долгосрочной стабильной работы.

Датчик bme280

Технические характеристики датчика bme280:

Если сравнивать все устройства между собой, то датчики очень похожи. По сравнению со своим предшественником, к которым относится 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 к Ардуино. Распиновка и вид сверху платы изображены на рисунке.

Датчики давления Arduino bmp280, bmp180, bme280

Сам модуль датчика давления выглядит следующим образом:

Датчики давления Arduino bmp280, bmp180, bme280

Для соединения с Ардуино нужно подключить выходы следующим образом: соединить землю с Ардуино и на датчике, VCC – на 3,3В, SCL / SCK – к аналоговому контакту А5, SDA / SDI – к А4.

Подключение датчика BME280. Расположение контактов и распиновка у датчика BME280 такая же, как у BMP280.

Датчики давления Arduino bmp280, bmp180, bme280

Так как датчик может работать по I2C и SPI, подключение можно реализовать двумя методами.

При подключении по I2C нужно соединить контакты SDA и SCL.

Датчики давления Arduino bmp280, bmp180, bme280

При подключении по SPI нужно соединить SCL с модуля и SCK (13й контакт на Ардуино), SDO с модуля к 12 выводу Ардуино, SDA – к 11 контакту, CSB (CS) – к любому цифровому пину, в данном случае к 10 контакту на Ардуино. В обоих случаях напряжение подключается к 3,3В на Ардуино.

Датчики давления Arduino bmp280, bmp180, bme280

Описание библиотеки для работы с датчиком. Пример скетча

Для работы с датчиком 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 соединение. Для программирования можно использовать одну из готовых бесплатных библиотек.


В этом материале проведём тестирование модуля, способного измерять давление. Это небольшой и недорогой датчик давления HX710B. Модуль имеет диапазон измерения 0-5,8 фунтов на квадратный дюйм. Единица PSI – это британская система мер, которая означает фунты на квадратный дюйм. Если PSI преобразовать в Паскаль, то диапазон измерения составляет 0-40 кПа (1 PSI равен примерно 6895 Паскаля).

Датчик давления: подключение модуля к Ардуино

Прежде всего нужно знать как его подключить и как получить от него электрический сигнал, а также как расшифровать этот выходной сигнал с помощью микроконтроллера, чтобы прочитать результат и действовать в соответствии с ним. Приступим к разборе и изучению модуля датчика давления HX710B.

В основе маленького модуля находится датчик давления MPS20N0040D-S. Внутри 6-контактный датчик представляет собой мост Уитстона, предназначенный для работы с регулируемым источником питания 5 В постоянного тока.

Датчик давления: подключение модуля к Ардуино

Датчик давления: подключение модуля к Ардуино

Микросхема HX710B предназначена для весов и устройств управления и имеет непосредственный интерфейс с мостовым датчиком. Её входной малошумящий усилитель (PGA) имеет фиксированное усиление 128, что соответствует полномасштабному дифференциальному входному напряжению ± 20 мВ, когда опорное напряжение 5 В подключено к выводу VREF. Встроенный генератор обеспечивает работу таймера без каких-либо внешних компонентов. Помимо встроенной схемы включения питания при сбросе (POR), упрощается инициализация цифрового интерфейса. Далее радиосхема модуля HX710B, это очень простая и понятная схема, поэтому не требуется пояснений.

Датчик давления: подключение модуля к Ардуино

В некоторых модулях чип HX710B заменен другим – TM7711.

Датчик давления: подключение модуля к Ардуино

Модуль датчика давления имеет 4 точки подключения, а именно VCC (+5 В), GND (0 В), OUT (Данные) и SCK (Таймер). Для внутренних регистров микросхемы HX710B нет необходимости в программировании, потому что все управление осуществляется через контакты. Тем не менее, самая сложная часть – это выяснить протокол связи, поскольку цифровой интерфейс не относится к типу I2C.

Последовательный интерфейс: контакты PD_SCK и DOUT используются для извлечения данных, выбора входа, выбора скорости выходных данных и управления отключением питания. Когда выходные данные не готовы для извлечения, на цифровом выходном выводе DOUT высокий уровень. Последовательный тактовый вход PD_SCK должен быть низким. Когда DOUT становится низким это означает, что данные готовы к извлечению. При подаче 25 ~ 27 положительных тактовых импульсов на вывод PD_SCK данные смещаются с вывода DOUT. Каждый импульс PD_SCK сдвигает на один бит, начиная с бита MSB первым, до тех пор, пока не будут сдвинуты все 24 бита. 25-й импульс на входе PD_SCK вернет вывод DOUT в высокий уровень. Выбор входа и выбор скорости выходных данных контролируется количеством входных импульсов PD_SCK. Тактовых импульсов PD_SCK не должно быть меньше 25 или больше 27 в течение одного периода преобразования.

На рисунке показаны синхронизация вывода, ввода и выбора скорости передачи данных, а также управление HX710B.

Датчик давления: подключение модуля к Ардуино

Также обратите внимание, что при включении питания микросхемы встроенная схема питания в состоянии покоя сбрасывает микросхему. Контактный вход PD_SCK используется для отключения питания. Когда на входе PD_SCK низкий уровень, микросхема находится в нормальном рабочем режиме. Когда вывод PD_SCK переключается с низкого на высокий и остается на высоком уровне более 60 мкс, микросхема переходит в режим пониженного энергопотребления. Когда PD_SCK возвращается к низкому уровню, микросхема сбрасывается и переходит в нормальный режим работы. После сброса или отключения питания выбран вход по умолчанию для дифференциального входа с выходной скоростью 10 Гц.

Датчик давления: подключение модуля к Ардуино

Таким образом, получается миниатюрный модуль датчика давления, который может работать от 5 В постоянного тока и передавать данные через собственный интерфейс последовательной связи.

Приступим к тестированию датчика давления. Существует множество способов связать модуль с микроконтроллерами, но хотелось бы воспользоваться популярным Arduino, чтобы получить быстрый и простой результат. Для этого выберем Arduino Uno.

Для простоты будем использовать специальную библиотеку HX710 Arduino. Возможно стоит попробовать библиотеку HX711 Arduino и для HX710, поскольку оба чипа используют идентичную систему последовательного интерфейса.

Датчик давления: подключение модуля к Ардуино

В аппаратной настройке, помимо соединений источника питания (5V и GND), вывод SCK модуля HX710B подключен к A0 Arduino Uno, а вывод OUT – к A1.

Датчик давления: подключение модуля к Ардуино

Датчик давления можно проверить различными способами, в зависимости от потребностей. Один из них – прикрепить вход датчика непосредственно к шприцу. Затем датчик давления использовать для измерения давления при перемещении поршня шприца (смотрите фото из заголовка).

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

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

Смотрите видео: Управление погружным насосом на Arduino

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

Очень долго набирается вода, и чтоб не сидеть, не следить, когда она дойдет до максимального уровня, погружу два поплавка на герконах, которые будут передавать данные в Arduino и управлять через реле включением и выключения насоса.

схема колодца с насосом

Таким образом я смогу выбирать этот диапазон воды из колодца, управлять питанием на 220 Вольт.

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

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

поплавок геркон с алиэкспресс

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

От двух поплавков наверх пойдет 4 провода, надо будет использовать герметичный кабель, или кинуть витую пару, в ней 8 проводников, можно будет попарно соединить, и у меня получится на 2 датчика четыре провода.

Ну вот так примерно выглядит задача, которую я хотел бы решить с помощью Arduino, а использовать я буду Arduino Nano, поскольку, я сначала хотел сделать более компактную схему, поместить в небольшую коробочку, ну максимум тут реле управления насосом, но я столкнулся с проблемой, как запитать собственно Arduino, и пришлось заказывать дополнительно Shield, который имеет разъем для подачи питания на 9 вольт. Теперь можно будет от адаптера подать напряжение и дальше уже всё это использовать.

Shield для Arduino NANO и вид элементов схемы

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

принципиальная схема

В данный момент, как будто бы воды сейчас нет, и поплавки находится в сухом положение.

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

Насос будет работать пока нижний поплавок не разомкнет цепь, то есть на него перестанет давить вода.

поплавки на макете

Использовал проводники, заказывал дополнительно, это всё еще сейчас монтажная схема.

А вот блок, который находится слева, где находится сопротивления и светодиоды, это всё будет у меня уже позже распаяно на отдельной плате.

Красный светодиод у меня отвечает за верхний уровень, за нижний уровень отвечает синий светодиод, ну и зелёный светодиод будет сигнализировать о включении и работе насоса.

Использовались контакты на плате D2 это красный светодиод – верхний поплавок, D3 синий светодиод – нижний поплавок.

Зеленый светодиод подключен к D11 , горит при включении и работе насоса и включенном реле.

Сигнальный контакт реле подключен к D12 . На этом Shield ближний ряд это пины Arduino, средний ряд – питание 5 вольт, и крайний ряд – GRD.

Пины D4 и D5 я использую как входящие для датчиков. 5 вольт идет с платы на геркон поплавка, допустим на верхний датчик, при замыкании контактов, питание идет в D5 , но он замкнут через сопротивление 220 ом на землю, пока геркон не замкнут. Если этого не делать, то реле сходит с ума и начинает хаотично замыкаться и размыкаться.

При включении, когда нижний уровень воды будет заполнен, и верхний также будет заполнен, сработает реле и включится насос.

Когда вода будет откачена ниже верхнего уровня, и будет опускаться ниже, нижний поплавок опустится вниз, реле отключит насос. Других вариантов как решить эту задачу найти не удалось, при всех иных схемах насос бы включался и выключался постоянно, пока срабатывал верхний поплавок, откачивая небольшой объем воды, на ход поплавка.

При погружении в воду или подъеме уровня воды, замкнется геркон нижнего поплавка, загорится синий светодиод.

замкнут нижний поплавок, горит синий светодиод

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

замкнуты оба поплавка, горят все светодиоды и включилось реле

При замыкании нижнего поплавка, вода идет вверх, толкает верхний датчик, срабатывает реле, включается насос. Как только вода немного будет откачана, погас красный светодиод, горит зеленый на плате и на реле и замкнуто реле.

насос работает, реле замкнуто, идет откачка воды, горят зеленый и синий светодиоды

Как только вода уходит ниже поплавка, гаснут красный и зеленый светодиоды, отключается реле и выключается насос.

вода откачана, реле и насос откл, светодиоды погасли

При наборе воды снова сработает нижний датчик и весь цикл повторится.

Питать плату буду от 9 вольтового адаптера, так как реле потребляет лишний ток, да и не везде удобно питать Arduino от USB.

адаптеры на 9 вольт для питания arduino

Останется распаять навесные элементы(светодиоды, резисторы), привести в порядок провода и можно будет приступать к полевым испытаниям.

Теперь приступим к написанию скетча, он уже написан, я буду добавлять кусочки кода и пояснять, что получилось. На некоторые комментарии в коде не обращайте внимания, они могут повторяться, но дальше по ходу разберёмся.

Значит объявляем разъемы для светодиодов, которые будет у нас показывает, есть ли замыкание геркона или нет, синий светодиод (нижний датчик) на втором пине - downLed , на третьем пине красный светодиод (верхний датчик)- upLed , на одиннадцатом пине мы будем сигнализировать включение реле и насоса relayLed .

keyPin1 это нижний датчик на четвёртом контакте, keyPin2 5 контакт, это у нас верхний датчик.

Объявляем разъем для реле D12 , объявляем две переменные – булевые: down , up для определения в каком положении находятся у нас поплавки.

Так же ещё одна переменная Trigger , присвоим ей сразу значение ложь.

В setup и это важно,

данные будут приниматься с нижнего датчика. С верхнего датчика будем принимать данные

Через pinMode присвоим индикаторам нижнего, верхнего уровня, и реле значение OUTPUT .

Исходящее значение для самого реле, и через digitalwrite (relay, HIGH) подаем на реле напряжения, реле работает наоборот. То есть, если мы сейчас подаем напряжение, то реле разомкнуто, если мы здесь будем писать LOW то реле будет замкнуто.

В цикле loop сделаем проверку: если на разъёме D4 есть напряжение, то промежуточная переменная down примет истинное значение, если нет, то ложь;

если на разъёме D5 есть напряжение, то промежуточная переменная up примет истинное значение, если нет, то ложь.

Если на Верхнем датчик есть напряжение, а это свидетельствует о том, что верхний датчик замкнут, то up истина, если нет, то up ложь.

Идём дальше. Если keyPin1 - LOW и keyPin2 - LOW , то Trigger ложь. Оба датчика разомкнуты.

В принципе здесь можно было использовать если up==false и down==false , и наоборот, то Триггер равно ложь, но как сделал так сделал.))))

И еще одно проверка: если keyPin1 - HIGH и keyPin2 - HIGH, то Trigger истина. Оба датчика замкнуты.

С общими проверками закончили. Идем дальше.

После цикла loop напишем две функции mstart и mstop , в которых через digitalWrite на реле и светодиод включения насоса, будем подавать питание. В mstart на relay – LOW , relayLed – HIGH , в mstop - relay – HIGH , relayLed – LOW , то есть наоборот.

Снова в loop пойдёт куча проверок, если up равно True и Триггер равно false , погружено в воду идёт набор воды, насос не включён – то насос включим и Триггер поменяет свое состояние.

Если теперь Триггер стал True , то мы повторяем эти же действия.

Если нижний, верхний уровни и Триггер равны истине, то есть насос уже работает, продолжаем действием.

Если нижний уровень еще замкнут, то есть вода ещё в Нижнем уровне есть, в верхнем уже нет и триггер True , продолжаем, Триггер всё ещё равен true .

Если нижний уровень уже равен ложь, то есть вода откачана, верхний уровень само собой пройден, и триггер равен True , то есть насос все еще работает, и только теперь мы мотор останавливаем, вызываем mstop , триггер делаем равным ложь.

И ещё одна проверка и даже не одна, необходимо указать все возможные варианты, какие только могут быть, если нижний уровень ложь, верхний уровень ложь, Trigger ложь, то чтоб не было никаких ложных срабатываний, мы опять посылаем mstop , стоп мотор, опять пишем триггер ложь.

И вот теперь последняя проверка: если нижний уровень уже True , верхней ещё false и Триггер равно ложь, мы ещё шлём, что мотор не должен включаться.

Пришлось перечислить практически все вот эти комбинации, и они идут последовательно. То есть у нас up cработает, когда поднимется до верхнего уровня и потом в цикле пойдёт опять. Триггер у нас пришел снизу со значением ложь, именно в такой последовательности всё это работает. По крайней мере в моём случае.

Небольшое условие для светодиода, я не помню почему именно, так если верхний датчик замкнут, то горит нижний синий светодиод, и наоборот.

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

Я не помню почему у меня так получилось, но я этот кусок кода я оставил, может быть потом в комментариях отпишусь, почему именно так сделал.

И почему именно так схема работает, почему-то я сделал перекрёст, вот такой, но сейчас я уже не могу вспомнить, писал давно.

Главное, что схема работает, вот весь код, сохраним скетч. Проверим на ошибки, ошибок нет, в принципе в таком виде схема должна работать.

Cкачать архив для ознакомления - скетч управления погружным насосом на Arduino и схема:

UPD. При сборе этой схемы в реальных условиях, по просьбам трудящихся, параллельно с верхним поплавком была припаяна кнопка, позволяющая включать насос, не дожидаясь пока сработает автоматика.

Таким образом, схема работает сразу в двух режимах: можно качать воду в большую ёмкость на несколько кубов в автоматическом режиме, пока через край не польется(можно добавить еще геркон и в бочку, для разрыва работы схемы) и можно при необходимости полить огород, не дожидаясь максимального наполнения воды в колодце, не опасаясь, что насос схватит воздух.

Сегодня в Arduino уроке научимся подключать датчик температуры и давления BMP180 к Arduino.

BMP180 достаточно точный датчик, погрешность измерения давления: 0,1 гектопаскаль, и погрешность измерения температуры: 0,1°С.

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

  • Напряжение питания: 3.3 В – 5 В.
  • Рабочий ток: 0.5 мA.
  • Диапазон измеряемого давления:300 гПа. – 1100 гПа.
  • Интерфейс: I2C
  • Время срабатывания: 4.5 мс.
  • Точность измерения давления: 0.1 гектопаскаль
  • Точность измерения температуры: 0.1°С
  • Габариты: 15 мм. х 14 мм.

Общие сведения.

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

Давайте рассмотрим данный датчик. В левой части расположен сам сенсорный датчик BMP180 фирмы Bosch. Так как датчик BMP 180 работает от 3.3В (а почти все платы Arduino работают на 5В), на плате предусмотрен стабилизатор напряжения XC6206P332MR в корпусе SOT-23, который выдает на выходе напряжение в 3.3В, рядом установлена обвязка стабилизатора, состоящая из двух керамических конденсаторов на 1 мкФ. Подключение осуществляется по интерфейсу I2C, линии SCL и SDA выведены на группу контактов на другой стороне модуля, туда же выведено и питание. Последние два резистора на 4.7 кОм необходимы для подтяжки линии SCL и SDA к питанию, конечно, при необходимости, их можно выпаять, если используете несколько устройств на I2C линии.

Рассмотрим датчик давления и температуры BMP180 (Digital Pressure Sensor)

Рассмотрим датчик давления и температуры BMP180 (Digital Pressure Sensor)

Датчик поставляется в виде модуля (на печатной плате) с 4 или 5 выводами:

  • если у модуля 4 вывода (VIN GND SCL SDA), то на вывод VIN подаётся питание +3,3в.
  • если у модуля 5 выводов (VIN 3V3 GND SCL SDA), то на вывод VIN подаётся +5в. (так же можно запитать модуль с 5 выводами от 3,3в, подав их на вывод 3V3 оставив вывод VIN свободным)
  • если у модуля 5 выводов с выводом IO или VDDIO, то считайте, что у вашего модуля 4 вывода. Не подавайте +5в.

Выводы датчика BMP180:

1 - CS, 2 - VDD, 3 - VDDIO, 4 - MOSI, 5 - CSL (CSLK), 6 - SDA (MISO), 7 - GND.

Датчик имеет возможность передачи данных, используя интерфейсы I2C (выводы: 5-CSL и 6-SDA) или SPI (выводы: 1-CS, 4-MOSI, 5-CSLK и 6-MISO)

В рассматриваемых модулях используется протокол I2C, а значит, выводы 1 и 4 датчика не используются, но должны быть припаяны к плате для симметрии

Виды некоторых модулей с установленным датчиком BMP180:

Виды некоторых модулей с установленным датчиком BMP180

В примере будем использовать первый датчик BMP180, из указанных выше.

Выводы модуля BMP180:

  • VIN (Vcc, Vdd) плюс питания;
  • GND (-) (англ. GrouND) общий (минус питания);
  • SDA (DA) (англ. Serial DAta) линия данных, интерфейс I2C
  • SCL (CL) (англ. Serial CLock) линия тактирования, интерфейс I2C

Принципиальная схема датчика BMP180, показана ниже.

Принципиальная схема датчика BMP180

Подключение датчика давления BMP180 к Arduino.

Необходимые детали:

  • Датчик давления BMP180
  • Arduino UNO
  • Провод DuPont 10x, 2,54 мм.

Подключение датчика давления BMP180 к Arduino:

 датчик BMP 180 и плату Arduino NANO

Подключение датчика давления BMP180 к Arduino NANO.

Подключение датчика давления BMP180 к Arduino UNO

Подключение датчика давления BMP180 к Arduino UNO.

Теперь, о программной части. Для нашего удобства разработана библиотека BMP180 Breakout Arduino Library, которая позволяет упросить работу с датчиком, скачиваем и устанавливаем ее.

Загружаем скетч в плату Arduino, и если все правильно подключено, то в окне мониторинга порта можно увидеть температуру и атмосферное давление.

Загружаем скетч в плату arduino,

В данном уроке рассмотрели Подключение датчика температуры и давления BMP180 к Arduino. В предыдущем уроке мы рассматривали, как можно реализовать анимацию на сегментном дисплее TM1637.

В данном уроке рассмотрели Подключение датчика температуры и давления BMP180 к Arduino.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Читайте также: