Taula de continguts:

Fotó de partícules - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos
Fotó de partícules - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos

Vídeo: Fotó de partícules - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos

Vídeo: Fotó de partícules - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos
Vídeo: SENSOR CLEANING | Cleaning a Full Frame Camera Sensor With Sensor Cleaning Swabs | Altura Photo® 2024, Juny
Anonim
Image
Image

El MPL3115A2 utilitza un sensor de pressió MEMS amb una interfície I2C per proporcionar dades de pressió / altitud i temperatura precises. Les sortides del sensor es digitalitzen mitjançant un ADC de 24 bits d'alta resolució. El processament intern elimina les tasques de compensació del sistema MCU amfitrió. És capaç de detectar un canvi de només 0,05 kPa que equival a un canvi d’altitud de 0,3 m. Aquí teniu la seva demostració amb el fotó de partícules.

Pas 1: el que necessiteu..

Què necessites..!!
Què necessites..!!

1. Fotó de partícules

2. MPL3115A2

3. Cable I²C

4. Escut I²C per a fotó de partícules

Pas 2: connexions:

Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions

Agafeu un escut I2C per al fotó de partícules i empenyeu-lo suaument sobre els pins del fotó de partícules.

A continuació, connecteu l'extrem del cable I2C al sensor MPL3115A2 i l'altre extrem a l'escut I2C.

Les connexions es mostren a la imatge superior.

Pas 3: Codi:

Codi
Codi

El codi de partícules per a MPL3115A2 es pot descarregar des del nostre dipòsit Github-DCUBE Store.

Aquí teniu l’enllaç.

Hem utilitzat dues biblioteques per al codi de partícules, que són application.h i spark_wiring_i2c.h. Es necessita una biblioteca Spark_wiring_i2c per facilitar la comunicació I2C amb el sensor.

També podeu copiar el codi des d’aquí, es dóna de la següent manera:

// Distribuïda amb llicència de lliure voluntat.

// Utilitzeu-lo de la manera que vulgueu, sense ànim de lucre o de franc, sempre que encaixi en les llicències de les obres associades.

// MPL3115A2

// Aquest codi està dissenyat per funcionar amb el mini mòdul MPL3115A2_I2CS I2C

#incloure

#incloure

// L’adreça I2C MPL3115A2 és 0x60 (96)

#define Addr 0x60

flotador cTemp = 0,0, fTemp = 0,0, pressió = 0,0, altitud = 0,0;

int temp = 0, tHight = 0; pres long = 0;

configuració nul·la ()

{

// Estableix la variable

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

Particle.variable ("cTemp", cTemp);

Particle.variable ("pressió", pressió);

Particle.variable ("altitud", altitud);

// Inicialitzar la comunicació I2C

Wire.begin ();

// Inicialitzar la comunicació en sèrie, establir la velocitat de transmissió = 9600

Serial.begin (9600);

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu el registre de control

Wire.write (0x26);

// Mode actiu, OSR = 128, mode altímetre

Wire.write (0xB9);

// Atura la transmissió I2C

Wire.endTransmission ();

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu el registre de configuració de dades

Wire.write (0x13);

// Esdeveniment preparat per a dades habilitat per a altitud, pressió i temperatura

Wire.write (0x07);

// Atura la transmissió I2C

Wire.endTransmission ();

retard (300);

}

bucle buit ()

{

dades int sense signar [6];

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu el registre de control

Wire.write (0x26);

// Mode actiu, OSR = 128, mode altímetre

Wire.write (0xB9);

// Atura la transmissió I2C

Wire.endTransmission ();

retard (1000);

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Selecciona el registre de dades

Wire.write (0x00);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 6 bytes de dades

Wire.requestFrom (Addr, 6);

// Llegir 6 bytes de dades de l'adreça 0x00 (00)

// estat, tHeight msb1, tHeight msb, tHight lsb, temp msb, temp lsb

if (Wire.available () == 6)

{

dades [0] = Wire.read ();

dades [1] = Wire.read ();

dades [2] = Wire.read ();

dades [3] = Wire.read ();

dades [4] = Wire.read ();

dades [5] = Wire.read ();

}

// Converteix les dades a 20 bits

tAltura = (((((llarga) dades [1] * (llarga) 65536) + (dades [2] * 256) + (dades [3] i 0xF0)) / 16);

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

altitud = tAltura / 16,0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1,8 + 32;

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu el registre de control

Wire.write (0x26);

// Mode actiu, OSR = 128, mode baròmetre

Wire.write (0x39);

// Atura la transmissió I2C

Wire.endTransmission ();

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Selecciona el registre de dades

Wire.write (0x00);

// Atura la transmissió I2C

Wire.endTransmission ();

retard (1000);

// Sol·liciteu 4 bytes de dades

Wire.requestFrom (Addr, 4);

// Llegiu 4 bytes de dades

// estat, pres msb1, pres msb, pres lsb

if (Wire.available () == 4)

{

dades [0] = Wire.read ();

dades [1] = Wire.read ();

dades [2] = Wire.read ();

dades [3] = Wire.read ();

}

// Converteix les dades a 20 bits

pres = (((llarg) dades [1] * (llarg) 65536) + (dades [2] * 256) + (dades [3] i 0xF0)) / 16;

pressió = (pres / 4.0) / 1000.0;

// Data de sortida al tauler

Particle.publish ("Altitud:", String (altitud));

Particle.publish ("Pressió", String (pressió));

Particle.publish ("Temperatura en centígrads", String (cTemp));

Particle.publish ("Temperatura en Fahrenheit:", String (fTemp));

retard (1000);

}

Pas 4: aplicacions:

Diverses aplicacions de MPL3115A2 inclouen altimetria d’alta precisió, telèfons intel·ligents / tauletes, altimetria electrònica personal, etc. També es pot incorporar a GPS Dead Reckoning, millora GPS per a serveis d’emergència, assistència de mapes, navegació i equips d’estacions meteorològiques.

Recomanat: