Obsah:

Výukový program pre presný výškomer Arduino Nano - MPL3115A2: 4 kroky
Výukový program pre presný výškomer Arduino Nano - MPL3115A2: 4 kroky

Video: Výukový program pre presný výškomer Arduino Nano - MPL3115A2: 4 kroky

Video: Výukový program pre presný výškomer Arduino Nano - MPL3115A2: 4 kroky
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Júl
Anonim
Image
Image

MPL3115A2 využíva snímač tlaku MEMS s rozhraním I2C, ktorý poskytuje presné údaje o tlaku/nadmorskej výške a teplote. Výstupy senzorov sú digitalizované 24-bitovým ADC s vysokým rozlíšením. Interné spracovanie odstráni úlohy kompenzácie z hostiteľského systému MCU. Je schopný detekovať zmenu iba o 0,05 kPa, čo sa rovná zmene výšky 0,3 m. Tu je jeho ukážka s Arduino Nano.

Krok 1: Čo potrebujete.. !

Čo potrebuješ..!!
Čo potrebuješ..!!

1. Arduino Nano

2. MPL3115A2

3. Kábel I²C

4. I²C štít pre Arduino Nano

Krok 2: Pripojenia:

Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia

Vezmite štít I2C pre Arduino Nano a jemne ho zatlačte cez kolíky Nano.

Potom pripojte jeden koniec kábla I2C k senzoru MPL3115A2 a druhý koniec k štítu I2C.

Pripojenia sú znázornené na obrázku vyššie.

Krok 3: Kód:

Kód
Kód

Arduino kód pre MPL3115A2 je možné stiahnuť z nášho úložiska github-DCUBE Store.

Tu je odkaz na to isté:

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

Ponúkame knižnicu Wire.h na uľahčenie komunikácie senzora I2c s doskou Arduino.

Odtiaľto môžete tiež skopírovať kód, ktorý je nasledujúci:

// Distribuované s licenciou slobodnej vôle.

// Používajte ho akýmkoľvek spôsobom chcete, so ziskom alebo zadarmo, za predpokladu, že sa zmestí do licencií k ním pridruženým dielam.

// MPL3115A2

// Tento kód je navrhnutý tak, aby pracoval s mini modulom MPL3115A2_I2CS I2C

#zahrnúť

// Adresa MPL3115A2 I2C je 0x60 (96)

#define Addr 0x60

neplatné nastavenie ()

{

// Inicializácia komunikácie I2C

Wire.begin ();

// Inicializujte sériovú komunikáciu, nastavte prenosovú rýchlosť = 9600

Serial.begin (9600);

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte riadiaci register

Wire.write (0x26);

// Aktívny režim, OSR = 128, režim výškomeru

Wire.write (0xB9);

// Zastavte prenos I2C

Wire.endTransmission ();

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte register konfigurácie údajov

Wire.write (0x13);

// Udalosť pripravená na údaje je povolená pre nadmorskú výšku, tlak, teplotu

Wire.write (0x07);

// Zastavte prenos I2C

Wire.endTransmission ();

oneskorenie (300);

}

prázdna slučka ()

{

nepodpísané int údaje [6];

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte riadiaci register

Wire.write (0x26);

// Aktívny režim, OSR = 128, režim výškomeru

Wire.write (0xB9);

// Zastavte prenos I2C

Wire.endTransmission ();

oneskorenie (1000);

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte dátový register

Wire.write (0x00);

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 6 bajtov údajov

Wire.requestFrom (Addr, 6);

// Prečítajte 6 bajtov údajov z adresy 0x00 (00)

// stav, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

ak (Wire.available () == 6)

{

data [0] = Wire.read ();

údaje [1] = Wire.read ();

údaje [2] = Wire.read ();

údaje [3] = Wire.read ();

údaje [4] = Wire.read ();

údaje [5] = Wire.read ();

}

// Previesť údaje na 20-bitové

int tHeight = (((long) (data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);

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

plávajúca výška = tVýška / 16,0;

float cTemp = (teplota / 16,0);

float fTemp = cTemp * 1,8 + 32;

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte riadiaci register

Wire.write (0x26);

// Aktívny režim, OSR = 128, režim barometra

Wire.write (0x39);

// Zastavte prenos I2C

Wire.endTransmission ();

oneskorenie (1000);

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte dátový register

Wire.write (0x00);

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 4 bajty údajov

Wire.requestFrom (Addr, 4);

// Prečítajte 4 bajty údajov

// stav, pres msb1, pres msb, pres lsb

ak (Wire.available () == 4)

{

data [0] = Wire.read ();

údaje [1] = Wire.read ();

údaje [2] = Wire.read ();

údaje [3] = Wire.read ();

}

// Previesť údaje na 20-bitové

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

plavákový tlak = (prez / 4,0) / 1000,0;

// Výstup údajov na sériový monitor

Serial.print ("Nadmorská výška:");

Serial.print (nadmorská výška);

Serial.println ("m");

Serial.print ("Tlak:");

Sériový tlač (tlak);

Serial.println ("kPa");

Serial.print ("Teplota v stupňoch Celzia:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Teplota vo Fahrenheite:");

Serial.print (fTemp);

Serial.println ("F");

oneskorenie (500);

}

Krok 4: Aplikácie:

Rôzne aplikácie MPL3115A2 zahŕňajú vysoko presnú výškomer, smartphony/tablety, osobnú elektronickú výškomer atď. Môže byť tiež začlenený do systému GPS Dead Reckoning, GPS Enhancement for Emergency Services, Map Assist, Navigation, rovnako ako vybavenie meteorologickej stanice.

Odporúča: