Turinys:

„Arduino Nano“- MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: 4 žingsniai
„Arduino Nano“- MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: 4 žingsniai

Video: „Arduino Nano“- MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: 4 žingsniai

Video: „Arduino Nano“- MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: 4 žingsniai
Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial 2024, Liepa
Anonim
Image
Image

MPL3115A2 naudojamas MEMS slėgio jutiklis su I2C sąsaja, kad būtų gauti tikslūs slėgio/aukščio ir temperatūros duomenys. Jutiklių išėjimai yra skaitmeninami didelės skiriamosios gebos 24 bitų ADC. Vidinis apdorojimas pašalina kompensavimo užduotis iš pagrindinės MCU sistemos. Jis gali aptikti tik 0,05 kPa pokytį, o tai prilygsta 0,3 m aukščio pokyčiui. Štai jo demonstracija su „Arduino Nano“.

1 žingsnis: ko jums reikia..

Ko tau reikia..!!
Ko tau reikia..!!

1. „Arduino Nano“

2. MPL3115A2

3. I²C kabelis

4. „I²C Shield“, skirtas „Arduino Nano“

2 žingsnis: jungtys:

Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai
Sujungimai

Paimkite „Arduino Nano“I2C skydą ir švelniai stumkite jį per „Nano“kaiščius.

Tada vieną I2C kabelio galą prijunkite prie MPL3115A2 jutiklio, o kitą - prie I2C skydo.

Sujungimai parodyti aukščiau esančiame paveikslėlyje.

3 žingsnis: kodas:

Kodas
Kodas

MPL3115A2 arduino kodą galite atsisiųsti iš mūsų „github“saugyklos-DCUBE parduotuvės.

Čia yra nuoroda į tą patį:

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

Įtraukiame „Wire.h“biblioteką, kad palengvintume jutiklio I2c ryšį su „Arduino“plokšte.

Taip pat galite nukopijuoti kodą iš čia, jis pateikiamas taip:

// Platinama su laisvos valios licencija.

// Naudokite bet kokiu būdu, pelningai ar nemokamai, jei jis atitinka susijusių darbų licencijas.

// MPL3115A2

// Šis kodas skirtas dirbti su MPL3115A2_I2CS I2C mini moduliu

#įtraukti

// MPL3115A2 I2C adresas yra 0x60 (96)

#define Addr 0x60

negaliojanti sąranka ()

{

// Inicijuoti I2C komunikaciją

Wire.begin ();

// Inicijuoti serijinį ryšį, nustatyti duomenų perdavimo spartą = 9600

Serial.begin (9600);

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite valdymo registrą

Wire.write (0x26);

// Aktyvusis režimas, OSR = 128, altimetro režimas

Wire.write (0xB9);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite duomenų konfigūracijos registrą

Wire.write (0x13);

// Įgalintas duomenų paruošimo įvykis aukščiui, slėgiui, temperatūrai

Wire.write (0x07);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

vėlavimas (300);

}

tuštumos kilpa ()

{

nepasirašyti int duomenys [6];

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite valdymo registrą

Wire.write (0x26);

// Aktyvusis režimas, OSR = 128, altimetro režimas

Wire.write (0xB9);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

vėlavimas (1000);

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite duomenų registrą

Wire.write (0x00);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 6 baitų duomenų

Wire.requestFrom (Addr, 6);

// Perskaitykite 6 baitus duomenų iš adreso 0x00 (00)

// būsena, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

jei (Wire.available () == 6)

{

duomenys [0] = Wire.read ();

duomenys [1] = Wire.read ();

duomenys [2] = Wire.read ();

duomenys [3] = Wire.read ();

duomenys [4] = Wire.read ();

duomenys [5] = Wire.read ();

}

// Konvertuokite duomenis į 20 bitų

int tHeight = (((ilgas) (duomenys [1] * (ilgas) 65536) + (duomenys [2] * 256) + (duomenys [3] ir 0xF0)) / 16);

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

plūdės aukštis = tAukštis / 16,0;

plūdė cTemp = (temp / 16,0);

plūdė fTemp = cTemp * 1,8 + 32;

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite valdymo registrą

Wire.write (0x26);

// Aktyvusis režimas, OSR = 128, barometro režimas

Wire.write (0x39);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

vėlavimas (1000);

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite duomenų registrą

Wire.write (0x00);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 4 baitų duomenų

Wire.requestFrom (Addr, 4);

// Perskaitykite 4 baitus duomenų

// status, pres msb1, pres msb, pres lsb

jei (Wire.available () == 4)

{

duomenys [0] = Wire.read ();

duomenys [1] = Wire.read ();

duomenys [2] = Wire.read ();

duomenys [3] = Wire.read ();

}

// Konvertuokite duomenis į 20 bitų

ilgas presas = (((ilgi) duomenys [1] * (ilgas) 65536) + (duomenys [2] * 256) + (duomenys [3] ir 0xF0)) / 16;

plūdės slėgis = (pres / 4,0) / 1000,0;

// Duomenų išvedimas į serijinį monitorių

Serial.print ("Aukščio aukštis:");

Serijinis atspaudas (aukštis);

Serial.println ("m");

Serial.print ("Slėgis:");

Serijinis atspaudas (slėgis);

Serial.println ("kPa");

Serial.print ("Temperatūra Celsijaus laipsniais:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Temperatūra Farenheitu:");

Serial.print (fTemp);

Serial.println ("F");

vėlavimas (500);

}

4 žingsnis: programos:

Įvairios MPL3115A2 programos apima didelio tikslumo altimetriją, išmaniuosius telefonus/planšetinius kompiuterius, asmeninės elektronikos aukščio matavimus ir tt. Jis taip pat gali būti įtrauktas į GPS mirusiųjų skaičiavimą, GPS gerinimą skubios pagalbos tarnyboms, žemėlapio pagalbinę įrangą, navigaciją ir orų stoties įrangą.

Rekomenduojamas: