Tabla de contenido:
Video: Arduino Nano - Tutorial del sensor de altímetro de precisión MPL3115A2: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
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 Arduino Nano.
Paso 1: ¡¡Lo que necesitas …
1. Arduino Nano
2. MPL3115A2
3. Cable I²C
4. Escudo I²C para Arduino Nano
Paso 2: Conexiones:
Tome un protector I2C para Arduino Nano y empújelo suavemente sobre los pines de Nano.
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:
El código arduino para MPL3115A2 se puede descargar desde nuestro repositorio github-DCUBE Store.
Aquí está el enlace para el mismo:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
Incluimos biblioteca Wire.h para facilitar la comunicación I2c del sensor con la placa Arduino.
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
// La dirección MPL3115A2 I2C es 0x60 (96)
#define Addr 0x60
configuración vacía ()
{
// 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
int tHeight = (((long) (data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);
int temp = ((datos [4] * 256) + (datos [5] & 0xF0)) / 16;
altitud de flotación = tHeight / 16.0;
float cTemp = (temp / 16.0);
float 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 ();
retraso (1000);
// Iniciar transmisión I2C
Wire.beginTransmission (Addr);
// Seleccionar registro de datos
Wire.write (0x00);
// Detener la transmisión I2C
Wire.endTransmission ();
// Solicitar 4 bytes de datos
Wire.requestFrom (Addr, 4);
// Leer 4 bytes de datos
// estado, pres msb1, pres msb, pres lsb
si (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
presión larga = (((largo) datos [1] * (largo) 65536) + (datos [2] * 256) + (datos [3] & 0xF0)) / 16;
presión de flotación = (pres / 4.0) / 1000.0;
// Salida de datos al monitor en serie
Serial.print ("Altitud:");
Serial.print (altitud);
Serial.println ("m");
Serial.print ("Presión:");
Serial.print (presión);
Serial.println ("kPa");
Serial.print ("Temperatura en grados Celsius:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("Temperatura en Fahrenheit:");
Serial.print (fTemp);
Serial.println ("F");
retraso (500);
}
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:
Altímetro de avión RC (compatible con telemetría Spektrum): 7 pasos
Altímetro de avión RC (compatible con Spektrum Telemetry): hice este altímetro para que el piloto pudiera saber que están por debajo del límite de 400 pies en aviones RC en los EE. UU. Mi amigo estaba preocupado porque no podía decir con certeza que siempre estaba por debajo de los 400 pies y quería tener la seguridad adicional de que un sensor
Altímetro (medidor de altitud) basado en la presión atmosférica: 7 pasos (con imágenes)
Altímetro (medidor de altitud) basado en la presión atmosférica: [Editar]; Consulte la versión 2 en el paso 6 con entrada manual de altitud de línea base. Esta es la descripción de construcción de un altímetro (medidor de altitud) basado en un Arduino Nano y un sensor de presión atmosférica Bosch BMP180. El diseño es simple pero las mediciones
Dirt Cheap Dirt-O-Meter - Altímetro audible basado en Arduino de $ 9: 4 pasos (con imágenes)
Dirt Cheap Dirt-O-Meter - Altímetro audible basado en Arduino de $ 9: Dytters (AKA Audible Altimeters) salvó la vida de los paracaidistas durante tantos años. Ahora, Audible Abby también les ahorrará dinero. Los Dytters básicos tienen cuatro alarmas, una para subir y tres para bajar. En el viaje en avión, los paracaidistas deben saber cuándo
INSTALACIÓN DE REEMPLAZO DEL BOTÓN TRASERO DEL BOTÓN TRASERO DEL CERRADURA DEL PORTÓN TRASERO DE RENAULT SCENIC / MEGANE: 3 Pasos
INSTALACIÓN DE REEMPLAZO DEL BOTÓN TRASERO DEL BOTÓN DE LA PUERTA TRASERA DE RENAULT SCENIC / MEGANE: La junta tórica de mala calidad que mantiene el botón del maletero en su lugar se desgasta y se pierde el botón del maletero del vehículo. La única solución de Renaults para esto es un mecanismo de bloqueo de arranque de reemplazo completo que solo fallará nuevamente y costará
Altímetro Arduino usando BMP y SPI o I2C OLED: 5 pasos
Altímetro Arduino usando BMP y SPI o I2C OLED: Durante mucho tiempo he estado buscando altímetro y temperatura usando un solo sensor y mostrándolo en OLED basado en SPI. Como no pude encontrar nada preciso, pensé en construir el mío propio usando la biblioteca U8glib. Hay un tutorial en youtub