Меню

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

Резистивный датчик давления

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

  • Обзор
  • Технические характеристики
  • Подключение к Arudino
  • Пример использования
  • FAQ

Обзор

Резистивный датчик давления представляет из себя переменный резистор, сопротивление которого зависит от силы, приложенной к чувствительному элементу. Таким образом можно косвенно оценить силу нажатия или вес воздействующего на датчик объекта. Благодаря своей простоте, стойкости к износу и невысокой стоимости, резистивные датчики широко используются в различных проектах совместно с платформами Arduino. На сегодняшний день выпускается множество модификаций датчиков, работающих на подобном принципе. Они могут отличаться размером, формой, иметь разный диапазон и кривую изменения сопротивления, но алгоритм работы у всех одинаковый. На рисунке №1 показан один из наиболее распространённых видов датчиков, выпускаемых фирмой Sparkfun.

Рисунок №1 — Резистивный датчик давления для Arduino от Sparkfun

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

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

Рисунок №2 – Структурная схема с разделением на слои

Основным недостатком резистивных датчиков давления является их невысокая точность и нелинейность смены сопротивления. Это говорит о том, что применять подобные устройства для измерения точных величин не имеет никакого смысла. Однако, оценить сам факт нажатия или степень давления на сенсор вполне возможно. На рисунке №3 приведён график, взятый из технической документации. Он наглядно позволяет оценить нелинейную зависимость изменения сопротивления от силы нажатия на чувствительный элемент датчика.

Рисунок №3 – график зависимости сопротивления от силы нажатия

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

Технические характеристики

Диапазон фиксирования веса: 100г…10кг;

Диаметр подложки с чувствительным элементом: 18мм;

Источник

Датчик атмосферного давления BMP280

Товары

Обзор модуля атмосферного давления BMP280

Модуль представляет из себя высокоточный цифровой измеритель атмосферного давления на базе микро-чипа BMP280 от фирмы BOSH. После изготовления каждый датчик проходит индивидуальную калибровку в заводских условиях. Его малые размеры, низкое энергопотребление и высокая измерительная способность позволили завоевать популярность среди множества разработчиков Arduino-проектов. Модуль BMP280 был разработан фирмой как более технологичная модель своего предшественника BMP180. Данная модификация, в отличие от своего младшего брата, предоставляет пользователю целых 2 последовательных интерфейса обмена данными (SPI и I2C), а также 3 режима работы:

Читайте также:  Шпинат понижает давление или повышает

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

SLEEP – режим максимально пониженного энергопотребления.

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

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

Рисунок №1 — внешний вид и схема модуля BMP280

Как видно из вышеприведенной схемы на модуле предусмотрены конденсаторы для фильтрации по питанию и подтягивающие резисторы интерфейсов ввода/вывода.

Технические характеристики BMP280

К основным техническим характеристикам можно отнести следующие:

Напряжение питания: 1.71V – 3.6V;

Интерфейс обмена данными: I2C или SPI;

Ток потребления в рабочем режиме: 2.7uA при частоте опроса 1 Гц;

Диапазон измерения атмосферного давления: 300hPa – 1100hPa (±0.12hPa), что эквивалентно диапазону от -500 до 9000 м над уровнем моря;

Диапазон измерения температуры: -40°С … +85°С (±0.01°С);

Максимальная частота работы интерфейса I2C: 3.4MHz;

Максимальная частота работы интерфейса SPI: 10 МГц;

Размер модуля: 21 х 18 мм;

Подключение BMP280 к плате Arduino

Как упоминалось выше, модуль BMP280 может быть подключен к плате Arduino посредствам двух интерфейсов I2C или SPI. Какой выбрать — каждый решает сам исходя из возможностей используемого микроконтроллера и специфики проекта. На рисунке №2 показан вариант подключения датчика к плате Arduino Nano по I2C.

Рисунок №2 — подключение BMP280 по I2C-интерфейсу

Как известно, аппаратный интерфейс I2C у Arduino UNO, Nano, Mini и.т.п. расположен на пинах A4 (SDA) и A5 (SCL). Следовательно, в таком режиме обмена данными понадобиться всего 4 провода, два из которых используются для питания модуля, а два других — непосредственно как информационная шина. Для работы по SPI требуется немного больше проводов — целых 6 штук и подключать их необходимо согласно схемы на рисунке №3.

Рисунок №3 — подключение BMP280 по SPI-интерфейсу

Вышеприведенная схема подключения составлена согласно расположению аппаратного интерфейса SPI на платах Arduino UNO, Nano, Mini и.т.п. Исключением является вывод CSB модуля BMP280. В данной схеме он подключен к 10-му пину Arduino, но может быть соединён с любым цифровым выводом, указанным при составлении программы.

Читайте также:  Вентиляторы среднего давления импортные

Как правило, для BMP280 в Интернете можно найти с десяток библиотек, упрощающих работу с ним. Библиотека Adafruit_BMP280.h позволяет максимально сократить время на освоение данного модуля, не урезая его функционал. Методы библиотеки дают возможность пользователю выбрать способ подключения, а также настроить периодичность и точность измерений в зависимости от режимов работы. Ниже будут рассмотрены некоторые приёмы работы с данной библиотекой.

Итак, для того чтобы начать работу с BMP280 необходимо установить вышеуказанную библиотеку, подключить сам заголовочный файл Adafruit_BMP280.h, а также ещё два файла Wire.h и SPI.h, для доступа к необходимым интерфейсам.

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

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

Теперь через объект bmp мы имеем возможность работать с функциями библиотеки, но изначально необходимо инициализировать модуль. Делать это целесообразно внутри функции setup() перед основным циклом:

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

Рассмотрим подробнее данную функцию. Её первый параметр отвечает за режим работы датчика. Всего доступно 4 варианта, а именно:

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

MODE_FORCED – в этом режиме датчик проводит измерения при получении команды от Arduino, после чего возвращается в состояние сна.

MODE_SLEEP – режим сна или пониженного энергопотребления.

MODE_SOFT_RESET_CODE – сброс на заводские настройки.

Второй и третий параметры отвечают за точность измерения температуры и атмосферного давления соответственно. Они могут принимать следующие значения:

SAMPLING_NONE — минимальная точность;

SAMPLING_X1 – точность АЦП 16 бит;

SAMPLING_X2 – точность АЦП 17 бит;

SAMPLING_X4 – точность АЦП 18 бит;

SAMPLING_X8 – точность АЦП 19 бит;

SAMPLING_X16 – точность АЦП 20 бит.

Четвёртый параметр отвечает за уровень фильтрации измеренных данных. Значения этого параметра могут быть следующие:

FILTER_OFF – фильтр выключен;

FILTER_X2 – минимальный уровень фильтрации;

FILTER_X16 – максимальный уровень фильтрации.

Читайте также:  Редуктор давления после себя v731

Последний, пятый параметр функции setSampling(. ) отвечает за период перехода модуля в активное состояние с целью выполнения измерений. Параметр может принимать следующие значения:

STANDBY_MS_1 – модуль просыпается каждую миллисекунду;

STANDBY_MS_63 – модуль просыпается каждые 63 миллисекунды;

STANDBY_MS_125 – модуль просыпается каждых 125 миллисекунд;

STANDBY_MS_250 – модуль просыпается каждых 250 миллисекунд;

STANDBY_MS_500 – модуль просыпается каждых 500 миллисекунд;

STANDBY_MS_1000 – модуль просыпается каждую секунду;

STANDBY_MS_2000 – модуль просыпается каждые 2 секунды;

STANDBY_MS_4000 – модуль просыпается каждых 4 секунды;

На этом стадию настройки параметров датчика BMP280 можно считать завершённой. Библиотека Adafruit_BMP280 предоставляет пользователю три функции, с помощью которых можно считать показания температуры, атмосферного давления и высоты над уровнем моря. Ниже приведён фрагмент программного кода, с помощью которого эти данные выводятся в окно терминала. Считывание происходит в основном цикле loop().

Следует пару слов сказать о функции bmp.readAltitude(1013.25) и откуда берётся число 1013.25. Это значение давления над уровнем моря конкретной локации, где находится в данный момент датчик. Параметр задаётся в сотнях Ра. Он уникален для каждой местности и по своей сути является отправной точкой или калибровочной константой для корректного измерения высоты. Такой подход обусловлен специфическим алгоритмом вычисления, который построен на принципе фиксации уменьшения атмосферного давления с ростом высоты и наоборот. В любом случае данную константу можно подсмотреть в Интернете на одном из профильных сайтов. Результат вывода значений в терминал показан на рисунке №4.

Рисунок №4 — результат чтения данных с модуля BMP280

Как видно из рисунка, давление выводится в Паскалях, что для восприятия не очень удобно. Гораздо привычнее получать значения в миллиметрах ртутного столба. Как известно 1Ра = 0,00750062 мм. рт. ст., следовательно необходимо полученное с помощью функции readPressure() значение умножить на 0,00750062.

ОБРАТИТЕ ВНИМАНИЕ. Может возникнуть такая ситуация, при которой модуль не будет определяться при подключении его по шине I2C. Дело в том, что каждое устройство на этой шине должно иметь свой уникальный адрес. Данная серия модулей в зависимости от модификации может иметь адреса 0x77 или 0x76. Библиотека Adafruit_BMP280.h использует по умолчанию адрес 0х77. Чтобы изменить его на 0х76 необходимо открыть файл Adafruit_BMP280.h установленной библиотеки любым текстовым редактором и найти там нижеследующую строку:

#define BMP280_ADDRESS (0x77) /**

FAQ. Часто задаваемые вопросы

1. Подключаю датчик по шине I2C, заливаю тестовый скетч из библиотеки Adafruit_BMP280.h, но датчик не обнаруживается. В чём может быть причина?

Большинство датчиков BMP280 имеют адрес 0х76, а библиотека Adafruit_BMP280.h по умолчанию работает с адресом 0х77. Чтобы это исправить необходимо открыть файл Adafruit_BMP280.h любым текстовым редактором, найти строку вида:

Источник

Adblock
detector