Оглавление:

Arduino Nano - Учебное пособие по прецизионному датчику высотомера MPL3115A2: 4 шага
Arduino Nano - Учебное пособие по прецизионному датчику высотомера MPL3115A2: 4 шага

Видео: Arduino Nano - Учебное пособие по прецизионному датчику высотомера MPL3115A2: 4 шага

Видео: Arduino Nano - Учебное пособие по прецизионному датчику высотомера MPL3115A2: 4 шага
Видео: Учебное пособие по Python для прецизионного барометра и датчика высотомера Raspberry Pi HP203B 2024, Июль
Anonim
Image
Image

MPL3115A2 использует датчик давления MEMS с интерфейсом I2C для получения точных данных о давлении / высоте и температуре. Выходы датчиков оцифровываются 24-битным АЦП высокого разрешения. Внутренняя обработка удаляет задачи компенсации из системы главного MCU. Он способен обнаруживать изменение всего лишь на 0,05 кПа, что соответствует изменению высоты на 0,3 м. Вот его демонстрация с Arduino Nano.

Шаг 1: Что вам нужно..

Что вам нужно..!!
Что вам нужно..!!

1. Arduino Nano

2. MPL3115A2

3. Кабель I²C

4. I²C Shield для Arduino Nano.

Шаг 2: Подключения:

Подключения
Подключения
Подключения
Подключения
Подключения
Подключения
Подключения
Подключения

Возьмите щит I2C для Arduino Nano и аккуратно наденьте его на контакты Nano.

Затем подключите один конец кабеля I2C к датчику MPL3115A2, а другой конец - к экрану I2C.

Подключения показаны на картинке выше.

Шаг 3: Код:

Код
Код

Код Arduino для MPL3115A2 можно загрузить из нашего репозитория github - DCUBE Store.

Вот ссылка на то же самое:

github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino

Мы включаем библиотеку Wire.h для облегчения связи датчика I2c с платой Arduino.

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

// Распространяется по свободной лицензии.

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

// MPL3115A2

// Этот код предназначен для работы с I2C Mini Module MPL3115A2_I2CS

#включают

// Адрес I2C MPL3115A2 0x60 (96)

#define Addr 0x60

установка void ()

{

// Инициализируем связь I2C

Wire.begin ();

// Инициализируем последовательную связь, устанавливаем скорость передачи = 9600

Serial.begin (9600);

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем контрольный регистр

Wire.write (0x26);

// Активный режим, OSR = 128, режим высотомера

Wire.write (0xB9);

// Остановить передачу I2C

Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр конфигурации данных

Wire.write (0x13);

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

Wire.write (0x07);

// Остановить передачу I2C

Wire.endTransmission ();

задержка (300);

}

пустой цикл ()

{

данные типа int без знака [6];

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем контрольный регистр

Wire.write (0x26);

// Активный режим, OSR = 128, режим высотомера

Wire.write (0xB9);

// Остановить передачу I2C

Wire.endTransmission ();

задержка (1000);

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр данных

Wire.write (0x00);

// Остановить передачу I2C

Wire.endTransmission ();

// Запрос 6 байтов данных

Wire.requestFrom (Адрес, 6);

// Считываем 6 байтов данных с адреса 0x00 (00)

// статус, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

если (Wire.available () == 6)

{

данные [0] = Wire.read ();

данные [1] = Wire.read ();

данные [2] = Wire.read ();

данные [3] = Wire.read ();

данные [4] = Wire.read ();

данные [5] = Wire.read ();

}

// Преобразуем данные в 20-битные

int tHeight = (((длинный) (данные [1] * (длинный) 65536) + (данные [2] * 256) + (данные [3] & 0xF0)) / 16);

int temp = ((данные [4] * 256) + (данные [5] & 0xF0)) / 16;

высота поплавка = tHeight / 16.0;

float cTemp = (temp / 16.0);

float fTemp = cTemp * 1.8 + 32;

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем контрольный регистр

Wire.write (0x26);

// Активный режим, OSR = 128, режим барометра

Wire.write (0x39);

// Остановить передачу I2C

Wire.endTransmission ();

задержка (1000);

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр данных

Wire.write (0x00);

// Остановить передачу I2C

Wire.endTransmission ();

// Запрос 4 байта данных

Wire.requestFrom (Адрес, 4);

// Читаем 4 байта данных

// статус, pres msb1, pres msb, pres lsb

если (Wire.available () == 4)

{

данные [0] = Wire.read ();

данные [1] = Wire.read ();

данные [2] = Wire.read ();

данные [3] = Wire.read ();

}

// Преобразуем данные в 20-битные

длинное прес = (((длинные) данные [1] * (длинные) 65536) + (данные [2] * 256) + (данные [3] & 0xF0)) / 16;

давление поплавка = (прес / 4,0) / 1000,0;

// Выводим данные на последовательный монитор

Serial.print ("Высота:");

Serial.print (высота);

Serial.println ("м");

Serial.print («Давление:»);

Serial.print (давление);

Serial.println («кПа»);

Serial.print («Температура в градусах Цельсия:»);

Serial.print (cTemp);

Serial.println ("C");

Serial.print («Температура по Фаренгейту:»);

Serial.print (fTemp);

Serial.println ("F");

задержка (500);

}

Шаг 4: Приложения:

Различные приложения MPL3115A2 включают в себя высокоточный альтиметр, смартфоны / планшеты, персональную электронику альтиметрии и т. Д. Он также может быть включен в систему определения точного счета GPS, усовершенствование GPS для аварийных служб, ассистент карты, навигацию, а также оборудование метеостанции.

Рекомендуемые: