Съдържание:
Видео: Частичен фотон - Прецизен сензор за висотомер MPL3115A2 Урок: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
MPL3115A2 използва MEMS сензор за налягане с I2C интерфейс за предоставяне на точни данни за налягане/надморска височина и температура. Изходите на сензора са цифровизирани от 24-битов ADC с висока разделителна способност. Вътрешната обработка премахва компенсационните задачи от хост MCU системата. Той е в състояние да открие промяна само в 0,05 kPa, което се равнява на 0,3 m промяна във височината. Ето демонстрацията му с фотон от частици.
Стъпка 1: Какво ви трябва..
1. Фотон от частици
2. MPL3115A2
3. Кабел I²C
4. I²C щит за частичен фотон
Стъпка 2: Връзки:
Вземете I2C щит за фотон на частиците и го натиснете леко върху щифтовете на фотона на частиците.
След това свържете единия край на I2C кабела към сензора MPL3115A2, а другия край към I2C щита.
Връзките са показани на снимката по -горе.
Стъпка 3: Код:
Кодът на частиците за MPL3115A2 може да бъде изтеглен от нашето хранилище на Github-DCUBE Store.
Ето линка.
Използвахме две библиотеки за код на частици, които са application.h и spark_wiring_i2c.h. Библиотеката Spark_wiring_i2c е необходима за улесняване на I2C комуникацията със сензора.
Можете също да копирате кода от тук, той е даден, както следва:
// Разпространява се с лиценз за свободна воля.
// Използвайте го по какъвто начин искате, печалба или безплатно, при условие че се вписва в лицензите на свързаните с него произведения.
// MPL3115A2
// Този код е предназначен за работа с мини модула MPL3115A2_I2CS I2C
#включва
#включва
// MPL3115A2 I2C адресът е 0x60 (96)
#define Addr 0x60
float cTemp = 0.0, fTemp = 0.0, налягане = 0.0, надморска височина = 0.0;
int temp = 0, tHeight = 0; long pres = 0;
void setup ()
{
// Задаване на променлива
Particle.variable ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Частица.променлива ("налягане", налягане);
Particle.variable ("надморска височина", надморска височина);
// Инициализиране на 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-бита
tHeight = ((((дълги) данни [1] * (дълги) 65536) + (данни [2] * 256) + (данни [3] & 0xF0)) / 16);
temp = ((данни [4] * 256) + (данни [5] & 0xF0)) / 16;
надморска височина = tHeight / 16,0;
cTemp = (temp / 16.0);
fTemp = cTemp * 1.8 + 32;
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете контролен регистър
Wire.write (0x26);
// Активен режим, OSR = 128, режим на барометър
Wire.write (0x39);
// Спиране на I2C предаването
Wire.endTransmission ();
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете регистър на данни
Wire.write (0x00);
// Спиране на I2C предаването
Wire.endTransmission ();
забавяне (1000);
// Изискване на 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-бита
pres = (((дълги) данни [1] * (дълги) 65536) + (данни [2] * 256) + (данни [3] & 0xF0)) / 16;
налягане = (pres / 4.0) / 1000.0;
// Извеждане на данни към таблото за управление
Particle.publish ("Altitude:", String (altitude));
Particle.publish ("Налягане:", Низ (налягане));
Particle.publish ("Температура в Целзий:", Низ (cTemp));
Particle.publish ("Температура по Фаренхайт:", String (fTemp));
забавяне (1000);
}
Стъпка 4: Приложения:
Различните приложения на MPL3115A2 включват високоточна алтиметрия, смартфони/таблети, лична електроника и др. Може също да бъде включена в GPS Dead Reckoning, GPS Enhancement за аварийни услуги, Map Assist, навигация, както и оборудване на метеорологичните станции.
Препоръчано:
Частичен фотон - TCN75A Температурен сензор Урок: 4 стъпки
Частичен фотон-TCN75A Температурен сензор Урок: TCN75A е двупроводен сериен температурен сензор, включен с преобразувател температура в цифров. Той е интегриран с програмируеми от потребителя регистри, които осигуряват гъвкавост за приложения с чувствителност към температура. Настройките на регистъра позволяват на потребителите
Частичен фотон - Урок за температурен сензор ADT75: 4 стъпки
Частичен фотон - Урок за температурен сензор ADT75: ADT75 е високо точен, цифров температурен сензор. Той се състои от сензор за температурен диапазон и 12-битов аналогово-цифров преобразувател за наблюдение и дигитализиране на температурата. Неговият изключително чувствителен сензор го прави достатъчно компетентен за мен
Частичен фотон - STS21 Температурен сензор Урок: 4 стъпки
Частичен фотон - STS21 Температурен сензор Урок: STS21 Цифров температурен сензор предлага превъзходна производителност и пести място. Той осигурява калибрирани, линеаризирани сигнали в цифров, I2C формат. Изработката на този сензор се основава на CMOSens технологията, която се дължи на превъзходните
Частичен фотон - HDC1000 Температурен сензор Урок: 4 стъпки
Частичен фотон - HDC1000 Температурен сензор Урок: HDC1000 е цифров сензор за влажност с вграден температурен сензор, който осигурява отлична точност на измерване при много ниска мощност. Устройството измерва влажността въз основа на нов капацитивен сензор. Сензорите за влажност и температура са факс
Частичен фотон - BH1715 Урок за цифров сензор за околна светлина: 4 стъпки
Фотон на частици - BH1715 Урок за цифров сензор за околна светлина: BH1715 е цифров сензор за околна светлина с интерфейс на I²C шина. BH1715 обикновено се използва за получаване на данни за околната светлина за регулиране на мощността на подсветката на LCD и клавиатурата за мобилни устройства. Това устройство предлага 16-битова резолюция и настройва