Obsah:
Video: Arduino Nano - Výukový senzor přesného výškoměru MPL3115A2: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
MPL3115A2 využívá tlakový senzor MEMS s rozhraním I2C, který poskytuje přesné údaje o tlaku/nadmořské výšce a teplotě. Výstupy senzorů jsou digitalizovány 24bitovým ADC s vysokým rozlišením. Interní zpracování odstraní úlohy kompenzace z hostitelského systému MCU. Je schopen detekovat změnu pouze o 0,05 kPa, což odpovídá změně výšky o 0,3 m. Zde je jeho ukázka s Arduino Nano.
Krok 1: Co potřebujete..
1. Arduino Nano
2. MPL3115A2
3. I²C kabel
4. I²C štít pro Arduino Nano
Krok 2: Připojení:
Vezměte štít I2C pro Arduino Nano a jemně jej zatlačte přes kolíky Nano.
Poté připojte jeden konec kabelu I2C k senzoru MPL3115A2 a druhý konec ke stínění I2C.
Připojení jsou znázorněna na obrázku výše.
Krok 3: Kód:
Arduino kód pro MPL3115A2 lze stáhnout z našeho úložiště github-DCUBE Store.
Zde je odkaz na totéž:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
Zahrnujeme knihovnu Wire.h pro usnadnění I2c komunikace senzoru s deskou Arduino.
Odtud můžete také zkopírovat kód, který je uveden následovně:
// Distribuováno s licencí svobodné vůle.
// Používejte jej jakýmkoli způsobem, ať už ziskem nebo zdarma, za předpokladu, že se vejde do licencí souvisejících děl.
// MPL3115A2
// Tento kód je navržen tak, aby fungoval s mini modulem MPL3115A2_I2CS I2C
#zahrnout
// Adresa MPL3115A2 I2C je 0x60 (96)
#define Addr 0x60
neplatné nastavení ()
{
// Inicializace komunikace I2C
Wire.begin ();
// Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600
Serial.begin (9600);
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte řídicí registr
Wire.write (0x26);
// Aktivní režim, OSR = 128, režim výškoměru
Wire.write (0xB9);
// Zastavte přenos I2C
Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte registr konfigurace dat
Wire.write (0x13);
// Událost připravenosti dat povolena pro nadmořskou výšku, tlak, teplotu
Wire.write (0x07);
// Zastavte přenos I2C
Wire.endTransmission ();
zpoždění (300);
}
prázdná smyčka ()
{
nepodepsaná int data [6];
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte řídicí registr
Wire.write (0x26);
// Aktivní režim, OSR = 128, režim výškoměru
Wire.write (0xB9);
// Zastavte přenos I2C
Wire.endTransmission ();
zpoždění (1000);
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte datový registr
Wire.write (0x00);
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 6 bajtů dat
Wire.requestFrom (Addr, 6);
// Přečíst 6 bajtů dat z adresy 0x00 (00)
// stav, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
pokud (Wire.available () == 6)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
data [4] = Wire.read ();
data [5] = Wire.read ();
}
// Převod dat na 20 bitů
int tHeight = (((long) (data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);
int temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;
plovoucí výška = tVýška / 16,0;
float cTemp = (temp / 16.0);
float fTemp = cTemp * 1,8 + 32;
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte řídicí registr
Wire.write (0x26);
// Aktivní režim, OSR = 128, režim barometru
Wire.write (0x39);
// Zastavte přenos I2C
Wire.endTransmission ();
zpoždění (1000);
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte datový registr
Wire.write (0x00);
// Zastavte přenos I2C
Wire.endTransmission ();
// Vyžádejte si 4 bajty dat
Wire.requestFrom (Addr, 4);
// Přečíst 4 bajty dat
// stav, pres msb1, pres msb, pres lsb
pokud (Wire.available () == 4)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
}
// Převod dat na 20 bitů
long pres = ((((long) data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;
plovoucí tlak = (pres / 4,0) / 1000,0;
// Výstup dat na sériový monitor
Serial.print ("Nadmořská výška:");
Sériový tisk (nadmořská výška);
Serial.println ("m");
Serial.print ("Tlak:");
Sériový tisk (tlak);
Serial.println ("kPa");
Serial.print ("Teplota ve stupních Celsia:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("Teplota ve stupních Fahrenheita:");
Serial.print (fTemp);
Serial.println ("F");
zpoždění (500);
}
Krok 4: Aplikace:
Různé aplikace MPL3115A2 zahrnují vysoce přesnou výškoměr, smartphony/tablety, osobní elektronickou výškoměr atd. Lze jej také začlenit do systému GPS Dead Reckoning, GPS Enhancement pro záchranné služby, Map Assist, Navigation a vybavení meteorologické stanice.
Doporučuje:
DIY dechový senzor s Arduino (vodivý pletený strečový senzor): 7 kroků (s obrázky)
DIY dechový senzor s Arduino (vodivý pletený strečový senzor): Tento DIY senzor bude mít formu vodivého pleteného strečového senzoru. Omotá se kolem vašeho hrudníku/žaludku, a když se váš hrudník/žaludek roztahuje a smršťuje, rozšíří se senzor a následně i vstupní data, která jsou přiváděna do Arduina. Tak
Raspberry Pi - MPL3115A2 Přesný snímač výškoměru Python Výuka: 4 kroky
Raspberry Pi - MPL3115A2 Přesný snímač výškoměru Python Výuka: MPL3115A2 využívá tlakový senzor MEMS s rozhraním I2C, který poskytuje přesné údaje o tlaku/nadmořské výšce a teplotě. Výstupy senzorů jsou digitalizovány 24bitovým ADC s vysokým rozlišením. Interní zpracování odstraňuje úkoly kompenzace z
Nadmořská výška, tlak a teplota pomocí Raspberry Pi s MPL3115A2: 6 kroků
Nadmořská výška, tlak a teplota pomocí Raspberry Pi s MPL3115A2: Zní to zajímavě. V této době, kdy všichni přecházíme do generace IoT, je to docela možné. Jako elektronický šílenec jsme si hráli s Raspberry Pi a rozhodli jsme se pomocí těchto znalostí dělat zajímavé projekty. V tomto projektu budeme
Dotykový senzor a zvukový senzor ovládající světla AC/DC: 5 kroků
Dotykový senzor a zvukový senzor ovládající světla AC/DC: Toto je můj první projekt, který funguje na základě dvou základních senzorů, jeden je dotykový senzor a druhý je zvukový senzor, když stisknete dotykovou podložku na dotykovém senzoru, přepne se světlo AC ZAPNUTO, pokud jej uvolníte, Světlo bude VYPNUTO a totéž
Arduino Nano: akcelerometr Gyroscope Compass MPU9250 I2C senzor s Visuino: 11 kroků
Arduino Nano: Akcelerometr Gyroscope Compass MPU9250 I2C senzor s Visuino: MPU9250 je jedním z nejpokročilejších kombinovaných snímačů akcelerometru, gyroskopu a kompasu, který je v současné době k dispozici. Mají mnoho pokročilých funkcí, včetně filtrování dolní propusti, detekce pohybu a dokonce i programovatelný specializovaný procesor