Подключение датчика барометра и высотомера MS5611 к Arduino


В этом уроке мы научимся подключать датчик барометра/альтиметра (высотомера) MS5611 к плате Arduino с помощью кода на C/C++. MS5611 — это новое поколение датчиков альтиметра высокого разрешения от компании MEAS Switzerland с интерфейсом шины SPI и I2C. Этот датчик барометрического давления оптимизирован для альтиметров и вариометров с разрешением по высоте 10 см.

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

Подключение датчика барометра и высотомера MS5611 к Arduino

В этой статье представлен базовый обзор датчика MS5611 вместе с распиновкой и подробностями протокола связи. Позже мы будем использовать датчик MS5611 с Arduino IDE и 0,96″ OLED-дисплеем и отображать показания датчика на OLED дисплее. Мы также сделаем подробное сравнение между датчиком BME280 и MS5611.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Датчик альтиметра/барометра MS5611 (купить на AliExpress).
  3. Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
  4. Макетная плата
  5. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Датчик барометра/альтиметра MS5611

MS5611-01BA — это датчик альтиметра/барометра высокого разрешения от MEAS Switzerland. Датчик работает с интерфейсами шин SPI и I2C. Датчик также имеет встроенный датчик температуры, который используется для компенсации изменений окружающей среды и калибровки измерений.

Датчик барометра/альтиметра MS5611

MS5611 включает в себя датчик давления с высокой линейностью и сверхнизкоэнергетический 24-битный ΔΣ АЦП с внутренними заводскими калибровочными коэффициентами. Он обеспечивает точное цифровое 24-битное значение давления и температуры и различные режимы работы, которые позволяют пользователю оптимизировать скорость преобразования и потребление тока.

Диапазон измеряемого им давления составляет от 10 мбар до 1200 мбар с абсолютной точностью ±1,5 мбар. Датчик оптимизирован для высотомеров и вариометров с разрешением по высоте 10 см. Диапазон измеряемых им температур составляет от -40˚C до +85˚C с точностью ±0,8˚C.

Модуль оснащен точным регулятором напряжения MIC5205 3,3 В и преобразователем уровня напряжения. Поэтому мы можем использовать его с микроконтроллером 3,3 В или 5 В.

Более подробную информацию об этом датчике можно найти в техническом описании MS6511.

Характеристики датчика MS5611

  • Диапазон давления: от 10 до 1200 мбар.
  • Диапазон температур: от -40 °C до 85 °C.
  • Разрешение АЦП: 24 бита.
  • Разрешение по высоте: 10 см.
  • Разрешение давления: 0,012 мбар.
  • Разрешение температуры: 0,01 °C.
  • Напряжение питания: от 1,8 до 3,6 В.
  • Очень низкое потребление тока: в режиме ожидания макс. 0,14 мкА.
  • Интерфейс I²C и SPI.
  • Защита от электростатического разряда.
  • Корпус QFN: 5,0 x 3,0 x 0,95 мм³.
  • Соответствует RoHS и REACH.

Интерфейсы и протокол связи MS5611

Компоненты датчика MS5611

MS5611 взаимодействует через шину I2C или SPI. На плате датчика имеется вывод PS. Если вывод PS подтянут к LOW, то интерфейс SPI включен. Подтягивание PS к HIGH выбирает интерфейс I2C. По умолчанию интерфейс I2C доступен.

MS5611 имеет несколько адресов I2C: 0x77 и 0x76. Адрес I2C по умолчанию — 0x77. Если мы подключим вывод CSB к VCC, адрес I2C станет 0x76.

Чтобы включить и использовать интерфейс SPI, нам необходимо подключить контакт PS (выбор протокола) к земле.

Распиновка модуля MS5611

Модуль MS5611 имеет в общей сложности 7 контактов, включая контакты питания, контакты SPI, контакты I2C и контакты выбора.

Распиновка модуля MS5611

Название контакта Функция контакта
VCC Разъем питания для входа 3,3 В или 5 В
GND Земля (общий провод)
SCL Входной контакт синхронизации SPI/ Контакт синхронизации I2C
SDA Вывод последовательного входа данных (MOSI)/вывод данных I2C
CSB Вывод выбора чипа (Chip Select)
SD0 Последовательный вывод данных (MISO)
PS Контакт выбора протокола

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

Взаимодействие датчика барометра/альтиметра MS5611 с Arduino

Схема подключения датчика барометра/альтиметра MS5611 к плате Arduino представлена на следующем рисунке.

Схема подключения датчика барометра/альтиметра MS5611 к плате Arduino

Подключите VCC и GND MS5611 к контактам Arduino 3.3V/5V и GND соответственно. Подключите контакты I2C датчика SDA и SCL к контактам Arduino A4 и A5 соответственно.

Собранная на макетной плате конструкция проекта

В этом руководстве мы будем подключать MS5611 к Arduino только в режиме I2C, поскольку при подключении в режиме SPI обнаружена проблема нагрева.

Исходный код программы

Код для MS5611 можно написать в Arduino IDE. Но прежде чем продолжить, нам нужно добавить библиотеку MS5611 в Arduino IDE.

Загрузите библиотеку и добавьте ее в Arduino IDE с помощью менеджера библиотек.

Теперь скопируйте следующий код и загрузите его на плату Arduino Nano.

После загрузки кода откройте Serial Monitor (окно монитора последовательной связи). Параметры измерения барометра/альтиметра MS5611, такие как температура, давление и высота, можно наблюдать в Arduino IDE.

Тестирование измерения высоты и давления в окне монитора последовательной связи

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

Взаимодействие MS5611 с Arduino и OLED-дисплеем

Вместо отображения температуры, давления и высоты на последовательном мониторе мы можем использовать 0,96-дюймовый SSD1306 I2C OLED-дисплей.

Схема подключения датчика MS5611 и OLED-дисплея к плате Arduino

Подключите VCC и GND OLED-дисплея к контактам Arduino 3.3V/5V и GND соответственно. Подключите контакты OLED I2C SDA и SCL к контактам Arduino A4 и A5 соответственно.

Собранная на макетной плате конструкция проекта с подключенным OLED дисплеем

Исходный код программы

Код требует дополнительную библиотеку SSD1306 вместе с библиотекой MS5611 Arduino. Загрузите библиотеку и добавьте ее в Arduino IDE с помощью менеджера библиотек.

Загрузить: Библиотека SSD1306
Теперь скопируйте следующий код и загрузите его на плату Arduino Nano.

После загрузки кода вы увидите на своем OLED-дисплее значения давления, температуры и высоты.

Тестирование работы проекта на OLED-дисплее

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

Сравнение MS5611 и BME280

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

Таким образом, необходимо сравнить BME280 и MS5611, чтобы выяснить, какой из них является лучшим датчиком и насколько велика разница в показаниях.

Сначала подключите датчики BME280 и MS5611 к плате Arduino через контакты I2C.

Подключение датчиков BME280 и MS5611 к плате Arduino

Код, объединяющий библиотеку MS5611 и библиотеку BME280, был создан для считывания значений температуры, давления и высоты. Поэтому скопируйте следующий код и загрузите его на плату Arduino Nano.

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

Сравнение показаний датчиков MS5611 и BME280 в окне монитора последовательной связи

Из показаний видно, что значение температуры для обоих датчиков почти одинаковое. Но есть разница в давлении в 120-130 паскалей и разница в высоте около 10 метров.

Видео, демонстрирующее работу проекта

Ссылка на видео на YouTube

(Проголосуй первым!)
Загрузка...
28 просмотров

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

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