Mündəricat:

Particle Photon - MPL3115A2 Həssas Altimetr Sensoru Dərsliyi: 4 addım
Particle Photon - MPL3115A2 Həssas Altimetr Sensoru Dərsliyi: 4 addım

Video: Particle Photon - MPL3115A2 Həssas Altimetr Sensoru Dərsliyi: 4 addım

Video: Particle Photon - MPL3115A2 Həssas Altimetr Sensoru Dərsliyi: 4 addım
Video: Particle Photon - MPL3115A2 Precision Altimeter Sensor Tutorial 2024, Noyabr
Anonim
Image
Image

MPL3115A2, dəqiq təzyiq/yüksəklik və temperatur məlumatlarını təmin etmək üçün I2C interfeysi olan bir MEMS təzyiq sensoru istifadə edir. Sensor çıxışları yüksək keyfiyyətli 24 bitlik ADC ilə rəqəmsallaşdırılır. Daxili emal, kompensasiya vəzifələrini ana MCU sistemindən çıxarır. Hündürlükdə 0.3m dəyişikliyə bərabər olan yalnız 0.05 kPa dəyişikliyi aşkar edə bilir. İşdə Particle Photon ilə nümayişidir.

Addım 1: Nə Lazımdır..

Nə Lazımdır.. !!
Nə Lazımdır.. !!

1. Foton hissəcikləri

2. MPL3115A2

3. I²C Kabel

4. Partikül Foton üçün I²C Qalxanı

Addım 2: Bağlantılar:

Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr
Əlaqələr

Hissəcik fotonu üçün bir I2C qalxanı götürün və zərrəcik foton sancaqlarının üzərinə itələyin.

Sonra I2C kabelinin bir ucunu MPL3115A2 sensoruna, digər ucunu isə I2C ekranına bağlayın.

Bağlantılar yuxarıdakı şəkildə göstərilmişdir.

Addım 3: Kod:

Kod
Kod

MPL3115A2 üçün hissəcik kodunu Github depomuzdan yükləyə bilərsiniz-DCUBE Mağazası.

İşdə link.

Hissəcik kodu üçün application.h və spark_wiring_i2c.h olan iki kitabxanadan istifadə etdik. Sensorla I2C əlaqəsini asanlaşdırmaq üçün Spark_wiring_i2c kitabxanası lazımdır.

Kodu buradan da kopyalaya bilərsiniz, belə verilir:

// Azad iradə lisenziyası ilə paylanmışdır.

// İstənilən şəkildə, mənfəət və ya pulsuz istifadə edin, əlaqəli əsərlərinin lisenziyalarına uyğun gəlir.

// MPL3115A2

// Bu kod MPL3115A2_I2CS I2C Mini Modulu ilə işləmək üçün hazırlanmışdır

#daxil edin

#daxil edin

// MPL3115A2 I2C ünvanı 0x60 (96)

#Addr 0x60

float cTemp = 0.0, fTemp = 0.0, təzyiq = 0.0, yüksəklik = 0.0;

int temp = 0, tHeight = 0; uzun pres = 0;

boş quraşdırma ()

{

// Dəyişən təyin edin

Particle.variable ("i2cdevice", "MPL3115A2");

Particle.variable ("cTemp", cTemp);

Hissəcik.dəyişən ("təzyiq", təzyiq);

Hissəcik.dəyişən ("yüksəklik", yüksəklik);

// I2C ünsiyyətini işə salın

Wire.begin ();

// Serial Rabitəni Başlatın, baud dərəcəsini = 9600 olaraq təyin edin

Serial.begin (9600);

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Nəzarət reyestrini seçin

Wire.write (0x26);

// Aktiv rejim, OSR = 128, altimetr rejimi

Wire.write (0xB9);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Məlumat konfiqurasiya qeydini seçin

Wire.write (0x13);

// Hündürlük, təzyiq, temperatur üçün məlumatlara hazır hadisə aktivdir

Wire.write (0x07);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

gecikmə (300);

}

boşluq döngəsi ()

{

imzasız int məlumatları [6];

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Nəzarət reyestrini seçin

Wire.write (0x26);

// Aktiv rejim, OSR = 128, altimetr rejimi

Wire.write (0xB9);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

gecikmə (1000);

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Məlumat qeydini seçin

Wire.write (0x00);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// 6 bayt məlumat tələb edin

Wire.requestFrom (Addr, 6);

// 0x00 (00) ünvanından 6 bayt məlumat oxuyun

// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

əgər (Tel.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

// Məlumatı 20 bitə çevirin

tHeight = ((((uzun) məlumatlar [1] * (uzun) 65536) + (məlumatlar [2] * 256) + (məlumatlar [3] & 0xF0)) / 16);

temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;

hündürlük = tHeight / 16.0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1.8 + 32;

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Nəzarət reyestrini seçin

Wire.write (0x26);

// Aktiv rejim, OSR = 128, barometr rejimi

Wire.write (0x39);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr);

// Məlumat qeydini seçin

Wire.write (0x00);

// I2C ötürülməsini dayandırın

Wire.endTransmission ();

gecikmə (1000);

// 4 bayt məlumat tələb edin

Wire.requestFrom (Addr, 4);

// 4 bayt məlumat oxuyun

// status, pres msb1, pres msb, pres lsb

əgər (Tel.available () == 4)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

}

// Məlumatı 20 bitə çevirin

pres = (((uzun) məlumatlar [1] * (uzun) 65536) + (məlumatlar [2] * 256) + (məlumatlar [3] & 0xF0)) / 16;

təzyiq = (pres / 4.0) / 1000.0;

// Göstərişlər panelinə məlumat çıxarın

Particle.publish ("Yüksəklik:", String (yüksəklik));

Particle.publish ("Təzyiq:", String (təzyiq));

Particle.publish ("Selsi İstiliyi:", String (cTemp));

Particle.publish ("Fahrenheitdəki temperatur:", String (fTemp));

gecikmə (1000);

}

Addım 4: Tətbiqlər:

MPL3115A2 -nin müxtəlif tətbiqlərinə Yüksək Dəqiqlik Altimetriyası, Smartfonlar/Tabletlər, Fərdi Elektronik Altimetriya və s. Daxildir. O, həmçinin GPS Ölü Hesablama, Təcili Xidmətlər üçün GPS Artırması, Xəritə Köməkçisi, Naviqasiya və Hava İstismarı Avadanlıqlarına daxil edilə bilər.

Tövsiyə: