Меню

Гидравлический датчик давления arduino

2 Схемы

Принципиальные электросхемы, подключение устройств и распиновка разъёмов

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

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

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

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

Почему производители назвали его HX710B? Второй компонент в модуле – HX710B, который представляет собой прецизионный 24-битный аналого-цифровой преобразователь (АЦП). Далее представлена типичная блок-схема приложения HX710B IC, доступная в 8-выводном корпусе.

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

PD_SCK ИМПУЛЬСЫ Вход Скорость передачи данных
25 Дифференциальный 10 Гц
26 DVDD-AVDD 40 Гц
27 Дифференциальный 40 Гц

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

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

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

Читайте также:  Датчик массового расхода воздуха мерседес w164 дизель

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

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

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

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

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

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

Источник

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

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

Расширение функционала стало доступным за счет широкого использования микроконтроллеров. В своей основе — они представляют собой миниатюрные компьютеры, ориентированные на управление внешними устройствами в рамках своей программы и происходящих вокруг факторов. Информацию о последних логический модуль получает за счет специализированных датчиков.

Существует не так много моделей микроконтроллеров, служащих базой «умной» техники. Среди них определенной популярностью пользуется Arduino, в качестве достаточно универсальной основы создания интеллектуального оборудования. Своей известности микроконтроллер обязан не только быстродействием или удобством подключения внешних компонентов, но и широтой их моделей, представленной на рынке. Среди последних, богатый выбор сенсоров, устройств индикации, средств интерфейса и получения команд, сетевых и коммуникационных плат, а также управляющих внешней аппаратурой узлов.

Собственно, чувствительные элементы платформы и будут рассмотрены в теле статьи, а конкретно один из них — датчик давления Ардуино.

Что измеряет сенсор

Давление — некая физическая величина численно равная перпендикулярно направленной силе действующей на единицу площади поверхности. Сам датчик можно представить своеобразными очень чувствительными весами. Последнее замечание сделано по причине того, что и вода, и газы тоже имеют свою массу, которая влияет на поверхность под ними. На практике, за счет указанного фактора, можно определить глубину погружения (чем ниже, тем больше вес слоя воды) или высоту подъема в атмосферу (чем выше — тем меньше плотность, а значит и слабее воздействие). Кроме того, в отношении давления воздуха не стоит забывать о погодных колебаниях. Резкое падение названой характеристики атмосферы — к дождю или буре.

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

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

Устройство

Суммарное количество чувствительных элементов датчика давления зависит от его модели. Главными остается пьезоэлементы, определяющие саму силу действия на свою плоскость. Физическая основа работы – возникновение электрического тока на внутренних кварцевых пластинах в результате их деформации при соприкосновении с влияющим фактором. В настоящем случае, о котором идет речь — газом или жидкостью.

Читайте также:  Замена датчик детонации прадо 120 4 литра

Выработанное аналоговое напряжение идет в модуль АЦП преобразования, где его сила перекодируется в числовой вид и через интерфейсы датчика I2C и SPI отправляется на микроконтроллер. Библиотека функций, ориентированных на работу с конкретным сенсором, переводит полученные величины в понятный человеком вид, на основе единиц измерений давления в стандарте Си — Паскалях.

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

Представленные на рынке модели

Датчики Arduino, относящиеся к давлению, делятся согласно средам применения и конструктивным особенностям, непосредственно связанным с получением конечного результата. Есть модели, защищенные от влаги и предназначенные для применения в жидкостях, другие работают только в качестве анероидов атмосферы, иные устанавливаются в разрыв движения потока, четвертые в качестве определителей внутреннего давления наполняющего емкость газа. Их всех объединяет наличие общих интерфейсов подключения к микроконтроллеру и низкое, не более нескольких милливатт (реже Ватт), потребление энергии.

Наименование Питание (V) Точность Разрешение
(hPa)
Диапазон (hPa) Рабочая температура
(°C)
Интерфейсы Примечание
SPI I2C UEXT
Атмосферные
MOD-BMP085 1.8–3.6 0.03 hPa 0.01 300–1100 (от 500 м ниже уровня моря до 9 км. высоты –40..+85 + + Измерение температуры
GY-BMP280 3.3 0.12 hPa 0.0016 300–1100 –40..+85 + + Измерение температуры до +65, с точностью 0.01
MD-PS002 5V ±0.2% –100–+150 –40..+125 + Только не агрессивные среды
Жидкостные
MS5803-02BA 1.8–3.6 20 см жидкости 30–1100
(10–2000)
–40..+85 + +
MS5803-07BA 1.8–3.6 0–7 мбар
(70 м погружения)
–20..+85 + +
Open-Smart 5V G1/4 0-1.2 MPa Hydraulic Pressure Sensor for Non-Corrosive Water 5 1.5 % 1–2.4 мбар (max 3) 0..+85 Собственный коннектор, соединяемый к I2C через резистор, датчик оснащен термометром

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

Схемы подключения датчика давления жидкости

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

Элемент Наименование/характеристики Количество
Микроконтроллер Arduino Nano/Uno или любой клон 1
Экран Display 2×16 ST7032 1
Датчик MS5803 1
Резистор 10 кОм 2
Конденсатор 0.1 мкФ 1
Кнопка Любая, без фиксации нажатия 1

Библиотека работы с датчиком давления берется здесь: https://github.com/millerlp/MS5803_05

С экраном тут: https://yadi.sk/d/KKJwJ1VtDx9PCw

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

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

Скетч

Достаточно простая программа для микроконтроллера, заливаемая в него при помощи Arduino IDE:

#DEFINE fButton_pin 2
#DEFINE LED_pin 13
#DEFINE DISPLAY_height 2
#DEFINE DISPLAY_width 16
#DEFINE DISPLAY_contrast 63
// Подключение библиотек и инициализация датчика вместе с дисплеем
#include
#include
// Wire.h подключать не нужно он уже вызван в TroykaTextLCD.h
MS_5803 S = MS_5803(512);
TroykaTextLCD DISPLAY;
// переменные программы
float mmWater = 0;
float TechAtmosphere = 0;
float dObtainedValue = 0;
float ObtainedValue = 0;
void setup() <
// параметры экрана
DISPLAY.setContrast(DISPLAY_contrast);
DISPLAY.begin(DISPLAY_width, DISPLAY_height);
// Установка датчика в 0, FALSE функции блокирует отправку технической информации в консоль
S.initializeMS_5803(FALSE);
delay(1000); // ждем, пока он выполнит инициализацию
// кнопка и светодиод показывающий режимы
pinMode(fButton_pin, INPUT_PULLUP);
pinMode(LED_pin, OUTPUT);
>
void loop() <
// Инициировать сенсор в режим взятия показаний
S.readSensor();
DISPLAY.setCursor(0, 0);
// получить и высветить значения в верхней строчке экрана
ObtainedValue = S.pressure();
DISPLAY.print(ObtainedValue);
DISPLAY.print(«mbar «);
DISPLAY.print(S.temperature());
DISPLAY.print(«C»);
// действия при нажатии кнопки
if (!digitalRead(fButton_pin)) <
// Изменение режима работы светодиода на противоположный
digitalWrite(LED_pin, !digitalRead(LED_pin));
dObtainedValue = ObtainedValue;
>
if (!digitalRead(LED_pin)) <
// абсолютные значения
mmWater = ObtainedValue * 1.019744288922 * 10;
TechAtmosphere = ObtainedValue * 0.001019716212978;
> else <
// относительные значения
mmWater = ((ObtainedValue — dObtainedValue) * 1.019744288922) * 10;
TechAtmosphere = (ObtainedValue — dObtainedValue) * 0.001019716212978;
>
// отображаем на экране значения в технических атмосферах и см воды
DISPLAY.setCursor(0, 1);
DISPLAY.print(TechAtmosphere,3);
DISPLAY.print(«TA «);
DISPLAY.print(mmWater,0);
DISPLAY.print(«mm»);
delay(1000);
DISPLAY.clear();
>

Читайте также:  Датчик ускорения для чего нужен mazda 6 gg

Схемы подключения датчика давления воздуха

Следующая конструкция построена на сенсоре-анероиде BMP180. Экран, в нее входящий, будет отображать текущее давление атмосферного воздуха и температуру окружающей среды. Для изготовления понадобятся:

Элемент Наименование/характеристика Количество
Микроконтроллер Arduino UNO/Nano 1
Датчик BMP180 1
Экран HD447080LCD-1602 1
Резистор 100 Ом 1
Регулируемый резистор До 10 кОм 1

Ну и конечно провода для связки всего названого в единую систему.

Библиотека, управляющая сенсором берется тут: https://github.com/adafruit/Adafruit-BMP085-Library

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

Фотография итогового устройства:

Плата-шилд самодельная, для желающих повторить, она вблизи:

Датчик питается от 3.3V, соответственно и подключаются его контакты получения энергии (VCC и GND) к плате Arduino. Для передачи данных используются входы A5 (SCL) и A4(SDA). Дисплей с микроконтроллером соединяется согласно следующей таблицы:

Arduino Экран
D6 E и D4 вместе
D4 D5
D3 D6
D2 D7
GND GND
D7 RS

Скетч

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

#define mPAUSE 2500
#include
#include
#include

Adafruit_BMP085 SENS;
LiquidCrystal DISPLAY(7, 6, 5, 4, 3, 2);
void setup() <
DISPLAY.clear();
>
void loop() <
float p = SENS.readSealevelPressure()/101.325 * 0.76;
DISPLAY.setCursor(1, 0);
DISPLAY.print(«T.= «);
if ( SENS.readTemperature()

Использование стороннего аналогового датчика давления

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

Примером послужит WABCO 4410400130 — сенсор указанного плана, используемый на большегрузных фурах. Единственное, требующее внимания в представленной схеме — питание у элемента раздельно с Arduino. В последнем, просто нет требуемых для запуска датчика +24 В. В связи с чем и приходится использовать дополнительный блок энергообеспечения, с правильными и достаточными характеристиками питания — 8–32 V постоянного тока, при минимуме 400 mА мощности.

Что касается соединения сенсора напрямую к плате микроконтроллера — в нем на выходе не более 5 В. И чем больше давление, тем меньший ток будет поступать на аналоговые контакты логического устройства. Вот только, на всякий случай, рекомендуется проверить изначальный выход мультиметром, с целью контроля варианта «пробития» сенсора, с возникновением обстоятельств беспрепятственного связывания OUT с минусом или плюсом питающей детектор линии.

Пример скетча получения информации с аналогового датчика:

#include

LiquidCrystal_I2C DISPLAY (0x27, 16, 2);
#define Detector_Pin 0
#include
void setup() <
DISPLAY.init();
DISPLAY.clear;
AnalogReference(DEFAULT);
DISPLAY.setCursor (0,0);
DISPLAY.print(«Data:»);
>
void loop() <
static int AVC = 0;
AVC = (AVC * 3 + AnalogRead(Detector_Pin))/4;
float v = AVC * 5.0 / 1024.0;
float ObtainedValue = (v — 0.5) * 10/4;
DISPLAY.setCursor(0,1);
DISPLAY.print(» «);
DISPLAY.setCursor(0,1);
DISPLAY.print (ObtainedValue);
>

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

И в окончании, технические характеристики WABCO 4410400130, для сравнения с похожими датчиками Arduino:

  • Тип: пьезоэлемент
  • Питание: 8–32 V
  • Рабочая температура: −40..+80 °С
  • Диапазон измерения: от 0 до 10 bar
  • Точность: 0.2–0.3 %
  • Предельное давление разрушения: 16 bar

Резюмируя

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

Видео по теме

Источник

Adblock
detector