Taula de continguts:
Vídeo: Arduino Nano - Tutorial del sensor d’altímetre de precisió MPL3115A2: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
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..
1. Arduino Nano
2. MPL3115A2
3. Cable I²C
4. Escut I²C per a Arduino Nano
Pas 2: 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:
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:
Pingo: un llançador de boles de ping-pong amb detecció de moviment i alta precisió: 8 passos
Pingo: un llançador de boles de ping-pong amb detecció de moviment i alta precisió: Kevin Nitiema, Esteban Poveda, Anthony Mattacchione, Raphael Kay
Rellotge de precisió: 3 passos
Rellotge de precisió: tots necessitem rellotges, així que, per què no els feu vostres en aquest instructiu? Vaig a mostrar-vos com fer un rellotge de precisió un cop hàgiu configurat, farà un seguiment automàtic de l’hora actual al fons de tot. Tot i que només necessita molt poc
Registre remot de dades d'alta precisió mitjançant el multímetre / Arduino / pfodApp: 10 passos (amb imatges)
Registre de dades remot d’alta precisió mitjançant l’aplicació Multimeter / Arduino / pfod: actualitzat el 26 d’abril de 2017 Circuit i placa revisats per utilitzar-los amb comptadors USB 4000ZC. No es necessita codificació d’Android. per a registre i
Un experiment de rectificació de precisió: 11 passos
Un experiment de rectificació de precisió: recentment he fet un experiment sobre un circuit de rectificació de precisió i he obtingut algunes conclusions aproximades. Tenint en compte que el circuit de rectificació de precisió és un circuit comú, els resultats d’aquest experiment poden proporcionar una certa informació de referència
Oxímetre de pols amb una precisió molt millorada: 6 passos (amb imatges)
Polsímetre amb una precisió molt millorada: si heu visitat recentment un metge, és probable que una infermera hagi examinat els vostres signes vitals bàsics. Pes, alçada, pressió arterial i freqüència cardíaca (FC) i saturació d’oxigen a la sang perifèrica (SpO2). Potser, els dos últims es van obtenir de