Tabla de contenido:

Fotón de partículas - Tutorial del sensor de altímetro de precisión MPL3115A2: 4 pasos
Fotón de partículas - Tutorial del sensor de altímetro de precisión MPL3115A2: 4 pasos

Video: Fotón de partículas - Tutorial del sensor de altímetro de precisión MPL3115A2: 4 pasos

Video: Fotón de partículas - Tutorial del sensor de altímetro de precisión MPL3115A2: 4 pasos
Video: Photon particle ft sensor SHT11 CONSOLE parte_1 2024, Junio
Anonim
Image
Image

El MPL3115A2 emplea un sensor de presión MEMS con una interfaz I2C para proporcionar datos precisos de presión / altitud y temperatura. Las salidas del sensor están digitalizadas por un ADC de alta resolución de 24 bits. El procesamiento interno elimina las tareas de compensación del sistema MCU anfitrión. Es capaz de detectar un cambio de solo 0,05 kPa, lo que equivale a un cambio de altitud de 0,3 m. Aquí está su demostración con fotón de partículas.

Paso 1: ¡¡Lo que necesitas …

Que necesitas..!!
Que necesitas..!!

1. Fotón de partículas

2. MPL3115A2

3. Cable I²C

4. Escudo I²C para fotones de partículas

Paso 2: Conexiones:

Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones
Conexiones

Tome un escudo I2C para fotones de partículas y empújelo suavemente sobre los pines del fotón de partículas.

Luego, conecte un extremo del cable I2C al sensor MPL3115A2 y el otro extremo al blindaje I2C.

Las conexiones se muestran en la imagen de arriba.

Paso 3: Código:

Código
Código

El código de partículas para MPL3115A2 se puede descargar desde nuestro repositorio Github-DCUBE Store.

Aqui esta el link.

Hemos utilizado dos bibliotecas para código de partículas, que son application.hy spark_wiring_i2c.h. Se requiere la biblioteca Spark_wiring_i2c para facilitar la comunicación I2C con el sensor.

También puede copiar el código desde aquí, se proporciona de la siguiente manera:

// Distribuido con licencia de libre albedrío.

// Úselo de la forma que desee, lucrativa o gratuita, siempre que encaje en las licencias de sus obras asociadas.

// MPL3115A2

// Este código está diseñado para funcionar con el mini módulo MPL3115A2_I2CS I2C

#incluir

#incluir

// La dirección MPL3115A2 I2C es 0x60 (96)

#define Addr 0x60

float cTemp = 0.0, fTemp = 0.0, presión = 0.0, altitud = 0.0;

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

configuración vacía ()

{

// Establecer variable

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

Particle.variable ("cTemp", cTemp);

Particle.variable ("presión", presión);

Particle.variable ("altitud", altitud);

// Inicializar la comunicación I2C

Wire.begin ();

// Inicializar la comunicación en serie, configurar la velocidad en baudios = 9600

Serial.begin (9600);

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de control

Wire.write (0x26);

// Modo activo, OSR = 128, modo altímetro

Wire.write (0xB9);

// Detener la transmisión I2C

Wire.endTransmission ();

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de configuración de datos

Wire.write (0x13);

// Evento de datos listos habilitado para altitud, presión, temperatura

Wire.write (0x07);

// Detener la transmisión I2C

Wire.endTransmission ();

retraso (300);

}

bucle vacío ()

{

datos int sin firmar [6];

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de control

Wire.write (0x26);

// Modo activo, OSR = 128, modo altímetro

Wire.write (0xB9);

// Detener la transmisión I2C

Wire.endTransmission ();

retraso (1000);

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de datos

Wire.write (0x00);

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicita 6 bytes de datos

Wire.requestFrom (Dirección, 6);

// Leer 6 bytes de datos de la dirección 0x00 (00)

// estado, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

if (Cable disponible () == 6)

{

datos [0] = Wire.read ();

datos [1] = Wire.read ();

datos [2] = Wire.read ();

datos [3] = Wire.read ();

datos [4] = Wire.read ();

datos [5] = Wire.read ();

}

// Convierte los datos a 20 bits

tHeight = (((((largo) datos [1] * (largo) 65536) + (datos [2] * 256) + (datos [3] & 0xF0)) / 16);

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

altitud = tHeight / 16.0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1.8 + 32;

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de control

Wire.write (0x26);

// Modo activo, OSR = 128, modo barómetro

Wire.write (0x39);

// Detener la transmisión I2C

Wire.endTransmission ();

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de datos

Wire.write (0x00);

// Detener la transmisión I2C

Wire.endTransmission ();

retraso (1000);

// Solicitar 4 bytes de datos

Wire.requestFrom (Addr, 4);

// Leer 4 bytes de datos

// estado, pres msb1, pres msb, pres lsb

if (Cable disponible () == 4)

{

datos [0] = Wire.read ();

datos [1] = Wire.read ();

datos [2] = Wire.read ();

datos [3] = Wire.read ();

}

// Convierte los datos a 20 bits

pres = (((largo) datos [1] * (largo) 65536) + (datos [2] * 256) + (datos [3] & 0xF0)) / 16;

presión = (pres / 4.0) / 1000.0;

// Salida de datos al tablero

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

Particle.publish ("Presión:", Cadena (presión));

Particle.publish ("Temperatura en grados Celsius:", String (cTemp));

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

retraso (1000);

}

Paso 4: Aplicaciones:

Varias aplicaciones de MPL3115A2 incluyen altímetro de alta precisión, teléfonos inteligentes / tabletas, altímetro de electrónica personal, etc. También se puede incorporar en GPS Dead Reckoning, mejora de GPS para servicios de emergencia, asistencia de mapas, navegación y equipo de estación meteorológica.

Recomendado: