Съдържание:
Видео: Arduino Nano - MPL3115A2 Прецизен сензор за висотомер Сензор: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
MPL3115A2 използва MEMS сензор за налягане с I2C интерфейс за предоставяне на точни данни за налягане/надморска височина и температура. Изходите на сензора са цифровизирани от 24-битов ADC с висока разделителна способност. Вътрешната обработка премахва компенсационните задачи от хост MCU системата. Той е в състояние да открие промяна само в 0,05 kPa, което се равнява на 0,3 m промяна във височината. Ето демонстрацията му с Arduino Nano.
Стъпка 1: Какво ви трябва..
1. Arduino Nano
2. MPL3115A2
3. Кабел I²C
4. I²C щит за 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
// Този код е предназначен за работа с мини модула MPL3115A2_I2CS I2C
#включва
// MPL3115A2 I2C адресът е 0x60 (96)
#define Addr 0x60
void setup ()
{
// Инициализиране на I2C комуникация
Wire.begin ();
// Инициализира серийна комуникация, зададена скорост на предаване = 9600
Serial.begin (9600);
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете контролен регистър
Wire.write (0x26);
// Активен режим, OSR = 128, режим на висотомер
Wire.write (0xB9);
// Спиране на I2C предаването
Wire.endTransmission ();
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете регистър за конфигуриране на данни
Wire.write (0x13);
// Активирано събитие за готовност за данни за надморска височина, налягане, температура
Wire.write (0x07);
// Спиране на I2C предаването
Wire.endTransmission ();
забавяне (300);
}
void loop ()
{
беззнакови int данни [6];
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете контролен регистър
Wire.write (0x26);
// Активен режим, OSR = 128, режим на висотомер
Wire.write (0xB9);
// Спиране на I2C предаването
Wire.endTransmission ();
забавяне (1000);
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете регистър на данни
Wire.write (0x00);
// Спиране на I2C предаването
Wire.endTransmission ();
// Изискване на 6 байта данни
Wire.requestFrom (Addr, 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 (Addr);
// Изберете контролен регистър
Wire.write (0x26);
// Активен режим, OSR = 128, режим на барометър
Wire.write (0x39);
// Спиране на I2C предаването
Wire.endTransmission ();
забавяне (1000);
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете регистър на данни
Wire.write (0x00);
// Спиране на I2C предаването
Wire.endTransmission ();
// Изискване на 4 байта данни
Wire.requestFrom (Addr, 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;
налягане на поплавък = (pres / 4.0) / 1000.0;
// Извеждане на данни към сериен монитор
Serial.print ("Надморска височина:");
Serial.print (надморска височина);
Serial.println ("m");
Serial.print ("Налягане:");
Serial.print (налягане);
Serial.println ("kPa");
Serial.print ("Температура в Целзий:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("Температура по Фаренхайт:");
Serial.print (fTemp);
Serial.println ("F");
забавяне (500);
}
Стъпка 4: Приложения:
Различните приложения на MPL3115A2 включват високоточна алтиметрия, смартфони/таблети, лична електроника и др. Може също да бъде включена в GPS Dead Reckoning, GPS Enhancement за аварийни услуги, Map Assist, навигация, както и оборудване на метеорологичните станции.
Препоръчано:
Waveshare E-ink дисплей Прецизен волтметър (0-90v DC) с Arduino Nano: 3 стъпки
Waveshare E-ink дисплей Прецизен волтметър (0-90v DC) с Arduino Nano: В тази инструкция използвам 2,9-инчов дисплей Waveshare E-Paper с Arduino Nano, разделител на напрежение и ADS1115 за показване на прецизни напрежения до 90 волта DC на дисплея на електронната хартия. Тази инструкция комбинира тези два предишни проекта:- Ardui
Висотомер (измервател на височина) Въз основа на атмосферно налягане: 7 стъпки (със снимки)
Висотомер (измервател на височина) Въз основа на атмосферно налягане: [Редактиране]; Вижте версия 2 в стъпка 6 с ръчно въвеждане на базовата височина. Това е описанието на сградата на висотомер (измервател на височина), базиран на Arduino Nano и сензор за атмосферно налягане Bosch BMP180. Дизайнът е прост, но измерванията
Мръсотия евтин Dirt-O-Meter-$ 9 Arduino базиран звуков висотомер: 4 стъпки (със снимки)
Dirt-O-Meter Dirt-O-Meter-$ 9 Звуков висотомер на базата на Arduino: Dytters (A.K.A Audible Altimeters) спаси живота на парашутистите за толкова много години. Сега Audible Abby също ще им спести пари. Основните Dytters имат четири аларми, една по пътя нагоре и три по пътя надолу. При изкачването на самолета, парашутистите трябва да знаят кога
LED компас и висотомер: 7 стъпки (със снимки)
LED компас и висотомер: Обектите със светодиоди винаги ме очароват. Затова този проект ще комбинира популярния цифров сензор за компас HMC5883L с 48 светодиода. Поставяйки светодиодите в кръг, светлинният индикатор е посоката, в която се насочвате. На всеки 7,5 градуса ще се
PropVario, вариометър/висотомер „Направи си сам“с гласов изход за RC платна: 7 стъпки (със снимки)
PropVario, вариометър/висотомер „Направи си сам“с гласов изход за RC платна: Тези инструкции ще ви покажат как да създадете евтин Vario, който може да говори надморската височина и, разбира се, да изпраща различни тонове при промяна на височината на вашия самолет. Някои функции: - глас и тон - използвайте свои собствени (вълнови) проби във вашия ла