Taula de continguts:

Arduino Nano - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos
Arduino Nano - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos

Vídeo: Arduino Nano - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos

Vídeo: Arduino Nano - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos
Vídeo: Учебное пособие по Python для барометра и высотомера Raspberry Pi HP206C 2024, Desembre
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 Arduino Nano.

Pas 1: el que necessiteu..

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

1. Arduino Nano

2. MPL3115A2

3. Cable I²C

4. Escut I²C per a Arduino Nano

Pas 2: connexions:

Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions

Agafeu un escut I2C per a Arduino Nano i empenyeu-lo suaument sobre els passadors de Nano.

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 arduino per a MPL3115A2 es pot descarregar des del nostre dipòsit github-DCUBE Store.

Aquí teniu l’enllaç per al mateix:

github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino

Incloem la biblioteca Wire.h per facilitar la comunicació I2c del sensor amb la placa Arduino.

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

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

#define Addr 0x60

configuració nul·la ()

{

// 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

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

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

altitud de flotació = tAltura / 16,0;

float cTemp = (temp / 16.0);

float 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 ();

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 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 = (((llarg) dades [1] * (llarg) 65536) + (dades [2] * 256) + (dades [3] i 0xF0)) / 16;

pressió de flotació = (pres / 4.0) / 1000.0;

// Sortida de dades al monitor sèrie

Serial.print ("Altitud:");

Serial.print (altitud);

Serial.println ("m");

Serial.print ("Pressió");

Serial.print (pressió);

Serial.println ("kPa");

Serial.print ("Temperatura en centígrads");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Temperatura en Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

retard (500);

}

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: