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

На сайте уже есть несколько статьей про датчики давления, BME280 и BMP180. В этой статье расскажу, еще об одном датчик давления для Arduino, собранном на датчике MPS20N0040D и аналого-цифровом преобразователе HX710B. Модуль способен измерять давление воздуха от 0 до 40 кПа.

Технические параметры:

► Напряжение питания: 3.3 В — 5 В;
► Основные функции интегральных: MPS20N0040D-D и HX710B;
► Выход тип: цифровой;
► Диапазон измерения: 0 — 40 кпа;
► Размеры: 19 x 19 x 12 мм;
► Вес: 3 грамма.

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

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

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

Назначение контактов:
 VIN, GND —  Вывод источник питания;
 SCK — Тактовый вывод;
 OUT — Цифровой вывод.

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

Необходимые детали:
► Контроллер Arduino UNO R3  x 1 шт.
► Провода DuPont, 2,54 мм, 20 см x 1 шт.
► Барометрический датчик давления 0-40 кПа HX710B x 1 шт.

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

Подключение:
Из приведенной ниже принципиальной схемы можно увидеть, что мы используем всего четыре провода. Сначала подключаем вывода SCK и OUT к выводам D3 и D2, затем подключаем к VCC и GND к 5 В и GND.

Установка библиотеки:
Для работы датчиком HX710B необходимо установить библиотеку, для этого заходим на сайт скачиваем библиотеку и устанавливаем в среду разработки IDE (так же можно скачать в конце статьи)

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

#include "HX710B.h"              // Подключаем библиотеку Барометрический датчик давления 0-40 кПа HX710B
 
const int DOUT = 2;              // Указываем вывод OUT
const int SCLK  = 3;             // Указываем вывод CLK
 
HX710B pressure_sensor;          // Создаем объект
 
void setup() {
  Serial.begin(57600);               // Открываем последовательную связь, на скорости 57600
  pressure_sensor.begin(DOUT, SCLK); // Инициализируем датчик
}
 
void loop()
{
  if (pressure_sensor.is_ready()) {
    Serial.print("Pascal: ");
    Serial.println(pressure_sensor.pascal());
    Serial.print("ATM: ");
    Serial.println(pressure_sensor.atm());
    Serial.print("mmHg: ");
    Serial.println(pressure_sensor.mmHg());
    Serial.print("PSI: ");
    Serial.println(pressure_sensor.psi());
  } else {
    Serial.println("Pressure sensor not found.");
  }
  delay(1000);
}
}

При открытие окна «Мониторинг порта» можно увидеть показания.

Ссылки
  Библиотека HX710B

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
 Барометрический датчик давления 0-40 кПа HX710B

Купить в Самаре и области
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
 Барометрический датчик давления 0-40 кПа HX710B

О нас Сергей

Посмотреть также

Начало работы с STM32 в Arduino IDE — руководство для начинающих

Начало работы с STM32 в Arduino IDE — руководство для начинающих

В этой статье расскажу как начать программировать микроконтроллеры серии STM32 с помощью среды разработки Arduino …

12 комментариев

  1. Можно ли этим датчиком контролировать неглубокий вакуум?

    • У меня при малейшем разряжении показывает 0.

      • Александр

        Простите за тупой вопрос, а что измеряет этот датчик? Понятно что давление, а какое? В вашем примере 404 с копейками в паскалях, у меня примерно также. Но это не атмосферное давление. Жмём на шприц показания увеличиваются, создаём вакуум — уменьшаются. Тогда от чего берётся точка отсчёта? Что будет значить 0? Не пойму логику измерений

  2. Добрый день! Два вопроса:
    1) при установке задержки меньше секунды данные все равно идут с шагом в секунду
    2) как бы не нагнетался воздух через шприц, максимальный выход получается 1000 Па, никак не до 40к Па, в чем может быть проблема? Брак?

    • «Несколько дней «промучился» с этой проблемой, датчик точно также работал до 10 кПа. Решением было запустить питание на вторую(или пятую, смотря откуда смотреть) ножку датчика MPS20N0040D питание не «чистые» 5 вольт, а через резистор 15 кОм.»

  3. метровая ПВХ труба опущена в емкость с водой, от нее силиконовым шлангом внутренним диаметром 3 мм к датчику. Похоже, что датчик травит воздух. Давление падает на датчике. Уже не важно в каких там попугаях замер производит. Стагивал силикон на входе датчика, всё равно теряет значения. Кто сталкивался? заливали всё это компаундом?

    • Здравствуйте. Как решили проблему? Собираюсь использовать для измерения уровня воды. Можно ли подключить напрямую? Течет?

  4. то же долго мучался, и в итоге переделал на операционник LM358 по этой инструкции https://www.youtube.com/watch?v=NAraksgfMpc.
    Получил значения близкие к mmHg, Откалибровал их при помощи функции map() . Калибровал как в видео, медицинским тонометром.
    // преобразуем аналоговое значения в 8-битное число (от 0 до 255)
    val = map(val, 36, 434, 20, 300); Где:36 входящих попугаев равно 20mmHg, а 434 будет 300mmHg.
    на Ardublock 2.0 то же такая функция присутствует. называется «карта значений»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *