Sisukord:

Osakeste footon - MPL3115A2 Täpse kõrguseanduri anduri õpetus: 4 sammu
Osakeste footon - MPL3115A2 Täpse kõrguseanduri anduri õpetus: 4 sammu

Video: Osakeste footon - MPL3115A2 Täpse kõrguseanduri anduri õpetus: 4 sammu

Video: Osakeste footon - MPL3115A2 Täpse kõrguseanduri anduri õpetus: 4 sammu
Video: Инь-Ян в квантовой физике 2024, Juuni
Anonim
Image
Image

MPL3115A2 kasutab rõhu/kõrguse ja temperatuuri täpsete andmete saamiseks IEM -liidesega MEMS -rõhuandurit. Anduri väljundid digiteeritakse kõrge eraldusvõimega 24-bitise ADC abil. Sisemine töötlemine eemaldab kompenseerimisülesanded host -MCU süsteemist. See on võimeline tuvastama muutusi vaid 0,05 kPa, mis võrdub 0,3 m kõrguse muutusega. Siin on selle demonstratsioon osakeste footoniga.

Samm: mida vajate..

Mida sa vajad..!!
Mida sa vajad..!!

1. Osakeste footon

2. MPL3115A2

3. I²C kaabel

4. I²C kilp osakeste footonile

Samm: ühendused:

Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused

Võtke osakeste footoni jaoks I2C kilp ja suruge see õrnalt üle osakeste footoni tihvtide.

Seejärel ühendage I2C kaabli üks ots MPL3115A2 anduriga ja teine ots I2C varjestusega.

Ühendused on näidatud ülaltoodud pildil.

3. samm: kood:

Kood
Kood

MPL3115A2 osakeste koodi saab alla laadida meie Githubi hoidlast-DCUBE poest.

Siin on link.

Osakeste koodi jaoks oleme kasutanud kahte raamatukogu, milleks on application.h ja spark_wiring_i2c.h. I2C anduriga suhtlemise hõlbustamiseks on vajalik teek Spark_wiring_i2c.

Siit saate koodi ka kopeerida, see on järgmine:

// Levitatakse vaba tahte litsentsiga.

// Kasutage seda soovitud viisil, kasumit teenides või tasuta, tingimusel et see sobib sellega seotud teoste litsentsidega.

// MPL3115A2

// See kood on loodud töötama koos MPL3115A2_I2CS I2C minimooduliga

#kaasake

#kaasake

// MPL3115A2 I2C aadress on 0x60 (96)

#define Addr 0x60

ujuk cTemp = 0,0, fTemp = 0,0, rõhk = 0,0, kõrgus = 0,0;

int temp = 0, tKõrgus = 0; pikk pres = 0;

tühine seadistus ()

{

// Määra muutuja

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

Particle.variable ("cTemp", cTemp);

Osake.muutuja ("rõhk", rõhk);

Osake.muutuja ("kõrgus", kõrgus);

// Initsialiseeri I2C side

Wire.begin ();

// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600

Seriaalne algus (9600);

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige juhtregister

Wire.write (0x26);

// Aktiivne režiim, OSR = 128, altimeetri režiim

Wire.write (0xB9);

// Peata I2C edastamine

Wire.endTransmission ();

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige andmete konfiguratsiooniregister

Wire.write (0x13);

// Andmete valmis sündmus on lubatud kõrguse, rõhu, temperatuuri jaoks

Wire.write (0x07);

// Peata I2C edastamine

Wire.endTransmission ();

viivitus (300);

}

tühine tsükkel ()

{

allkirjastamata int andmed [6];

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige juhtregister

Wire.write (0x26);

// Aktiivne režiim, OSR = 128, altimeetri režiim

Wire.write (0xB9);

// Peata I2C edastamine

Wire.endTransmission ();

viivitus (1000);

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige andmeregister

Wire.write (0x00);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotlege 6 baiti andmeid

Wire.requestFrom (Addr, 6);

// Lugege 6 baiti andmeid aadressilt 0x00 (00)

// olek, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

kui (Wire.available () == 6)

{

andmed [0] = Wire.read ();

andmed [1] = Wire.read ();

andmed [2] = Wire.read ();

andmed [3] = Wire.read ();

andmed [4] = Wire.read ();

andmed [5] = Wire.read ();

}

// Teisendage andmed 20-bitisteks

tKõrgus = (((((pikad) andmed) [1] * (pikk) 65536) + (andmed [2] * 256) + (andmed [3] ja 0xF0)) / 16);

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

kõrgus = tKõrgus / 16,0;

cTemp = (temp / 16,0);

fTemp = cTemp * 1,8 + 32;

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige juhtregister

Wire.write (0x26);

// Aktiivne režiim, OSR = 128, baromeetri režiim

Wire.write (0x39);

// Peata I2C edastamine

Wire.endTransmission ();

// Alusta I2C edastamist

Wire.beginTransmission (Addr);

// Valige andmeregister

Wire.write (0x00);

// Peata I2C edastamine

Wire.endTransmission ();

viivitus (1000);

// Taotle 4 baiti andmeid

Wire.requestFrom (Addr, 4);

// Loe 4 baiti andmeid

// olek, pres msb1, pres msb, pres lsb

kui (Wire.available () == 4)

{

andmed [0] = Wire.read ();

andmed [1] = Wire.read ();

andmed [2] = Wire.read ();

andmed [3] = Wire.read ();

}

// Teisendage andmed 20-bitisteks

pres = (((pikad) andmed [1] * (pikk) 65536) + (andmed [2] * 256) + (andmed [3] ja 0xF0)) / 16;

rõhk = (pres / 4,0) / 1000,0;

// Andmete väljastamine armatuurlauale

Particle.publish ("Kõrgus:", String (kõrgus));

Particle.publish ("Rõhk:", String (rõhk));

Particle.publish ("Temperatuur Celsiuse järgi:", String (cTemp));

Particle.publish ("Temperatuur Fahrenheiti järgi:", String (fTemp));

viivitus (1000);

}

4. samm: rakendused:

MPL3115A2 mitmesugused rakendused hõlmavad suure täpsusega kõrguse mõõtmist, nutitelefoni/tahvelarvutit, isikliku elektroonika kõrguse mõõtmist jne. Seda saab lisada ka GPS -i surnud arvestusse, hädaabiteenuste GPS -i täiustamisse, kaardiabi, navigeerimisseadmesse ja ilmajaama seadmetesse.

Soovitan: