Kazalo:
Video: Arduino Nano - Vadnica za natančni senzor višinomera MPL3115A2: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
MPL3115A2 uporablja senzor tlaka MEMS z vmesnikom I2C za zagotavljanje točnih podatkov o tlaku/nadmorski višini in temperaturi. Izhode senzorjev digitalizira 24-bitni ADC z visoko ločljivostjo. Notranja obdelava odstrani kompenzacijske naloge iz gostiteljskega sistema MCU. Sposoben je zaznati spremembo le 0,05 kPa, kar pomeni 0,3 m višinske spremembe. Tukaj je njegova predstavitev z Arduino Nano.
Korak: Kaj potrebujete.. !
1. Arduino Nano
2. MPL3115A2
3. Kabel I²C
4. I²C ščit za Arduino Nano
2. korak: Povezave:
Vzemite ščit I2C za Arduino Nano in ga nežno potisnite čez zatiče Nano.
Nato en konec kabla I2C priključite na senzor MPL3115A2, drugi konec pa na ščit I2C.
Povezave so prikazane na zgornji sliki.
3. korak: Koda:
Kodo arduino za MPL3115A2 lahko prenesete iz našega skladišča github-DCUBE Store.
Tukaj je povezava za isto:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
Vključujemo knjižnico Wire.h za olajšanje komunikacije senzorja I2c s ploščo Arduino.
Kodo lahko tudi kopirate od tu, podana je na naslednji način:
// Razdeljeno z licenco za svobodno voljo.
// Uporabljajte ga kakor koli želite, dobičkonosno ali brezplačno, pod pogojem, da ustreza licencam povezanih del.
// MPL3115A2
// Ta koda je zasnovana za delo z mini modulom MPL3115A2_I2CS I2C
#vključi
// Naslov I2C MPL3115A2 je 0x60 (96)
#define Addr 0x60
void setup ()
{
// Inicializirajte komunikacijo I2C
Wire.begin ();
// Začetek serijske komunikacije, nastavljena hitrost prenosa = 9600
Serial.begin (9600);
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite kontrolni register
Wire.write (0x26);
// Aktivni način, OSR = 128, način višinomera
Wire.write (0xB9);
// Ustavi prenos I2C
Wire.endTransmission ();
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite register konfiguracije podatkov
Wire.write (0x13);
// Omogočen dogodek pripravljenih podatkov za nadmorsko višino, tlak, temperaturo
Wire.write (0x07);
// Ustavi prenos I2C
Wire.endTransmission ();
zamuda (300);
}
void loop ()
{
podpisani int podatki [6];
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite kontrolni register
Wire.write (0x26);
// Aktivni način, OSR = 128, način višinomera
Wire.write (0xB9);
// Ustavi prenos I2C
Wire.endTransmission ();
zamuda (1000);
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite register podatkov
Wire.write (0x00);
// Ustavi prenos I2C
Wire.endTransmission ();
// Zahtevajte 6 bajtov podatkov
Wire.requestFrom (Addr, 6);
// prebere 6 bajtov podatkov z naslova 0x00 (00)
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
če (Wire.available () == 6)
{
podatki [0] = Wire.read ();
podatki [1] = Wire.read ();
podatki [2] = Wire.read ();
podatki [3] = Wire.read ();
podatki [4] = Wire.read ();
podatki [5] = Wire.read ();
}
// Pretvorimo podatke v 20-bitne
int tHeight = (((dolga) (podatki [1] * (dolga) 65536) + (podatki [2] * 256) + (podatki [3] & 0xF0)) / 16);
int temp = ((podatki [4] * 256) + (podatki [5] & 0xF0)) / 16;
plavajoča nadmorska višina = tHeight / 16,0;
float cTemp = (temp / 16,0);
float fTemp = cTemp * 1,8 + 32;
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite kontrolni register
Wire.write (0x26);
// Aktivni način, OSR = 128, način barometra
Wire.write (0x39);
// Ustavi prenos I2C
Wire.endTransmission ();
zamuda (1000);
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite register podatkov
Wire.write (0x00);
// Ustavi prenos I2C
Wire.endTransmission ();
// Zahtevajte 4 bajte podatkov
Wire.requestFrom (Addr, 4);
// Branje 4 bajtov podatkov
// stanje, pres msb1, pres msb, pres lsb
če (Wire.available () == 4)
{
podatki [0] = Wire.read ();
podatki [1] = Wire.read ();
podatki [2] = Wire.read ();
podatki [3] = Wire.read ();
}
// Pretvorimo podatke v 20-bitne
dolga pres = (((dolgi) podatki [1] * (dolgi) 65536) + (podatki [2] * 256) + (podatki [3] & 0xF0)) / 16;
tlak plovca = (pres / 4.0) / 1000.0;
// Izhodni podatki na serijski monitor
Serial.print ("Nadmorska višina:");
Serial.print (nadmorska višina);
Serial.println ("m");
Serial.print ("Tlak:");
Serijski.tisk (tlak);
Serial.println ("kPa");
Serial.print ("Temperatura v Celzijusi:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("Temperatura v Fahrenheitu:");
Serial.print (fTemp);
Serial.println ("F");
zamuda (500);
}
4. korak: Aplikacije:
Različne aplikacije MPL3115A2 vključujejo visoko natančnost altimetrije, pametne telefone/tablične računalnike, višino osebne elektronike itd. Lahko se vključijo tudi v GPS mrtve obračune, izboljšavo GPS za službe v sili, pomoč pri zemljevidih, navigacijo in opremo vremenskih postaj.
Priporočena:
DIY senzor dihanja z Arduinom (prevodni pleteni senzor raztezanja): 7 korakov (s slikami)
DIY senzor dihanja z Arduinom (prevodni pleteni senzor za raztezanje): Ta DIY senzor bo v obliki prevodnega pletenega senzorja raztezanja. Ovil se bo okrog prsnega koša/želodca in ko se bodo prsi/želodec razširili in skrčili, se bo senzor in posledično vhodni podatki, ki se vnesejo v Arduino. Torej
Vmesni senzor SPS-30, senzor trdnih delcev z Arduino Duemilanove v načinu I2C: 5 korakov
Vmesni senzor SPS-30, senzor trdnih delcev z Arduinom Duemilanovem v načinu I2C: Ko sem iskal vmesnike senzorjev SPS30, sem spoznal, da je večina virov za Raspberry Pi, ne pa toliko za Arduino. Nekaj časa sem porabil, da je senzor deloval z Arduinom, in odločil sem se, da bom svojo izkušnjo objavil tukaj, da bo lahko
Arduino senzor temperature in vlažnosti na sončno energijo kot 433mhz Oregonski senzor: 6 korakov
Arduino senzor temperature in vlažnosti na sončno energijo kot senzor Oregon 433 mhz: To je sestavljen iz senzorja temperature in vlažnosti na sončno energijo. Senzor posnema senzor Oregon s 433 mhz in je viden v prehodu Telldus Net. Kaj potrebujete: 1x " 10-LED Senzor gibanja sončne energije " z Ebaya. Prepričajte se, da piše 3.7V baterija
Senzor na dotik in senzor zvoka Nadzor AC/DC luči: 5 korakov
Senzor na dotik in senzor zvoka za nadzor AC/DC luči: To je moj prvi projekt, ki deluje na podlagi dveh osnovnih senzorjev, enega senzorja na dotik in drugega senzorja zvoka, ko pritisnete sledilno ploščico na senzorju na dotik, se bo lučka AC preklopila VKLOPLJENO, če ga spustite, lučka ugasne in isto
Natančni odstranjevalec žice - nove video povezave: 3 koraki
Natančni odstranjevalec žice - nove video povezave: ročni rotacijski odstranjevalec žice iz peresa Bic, izvijača in britvice. Pred kratkim sem kupil tuljavo iz teflonske žice 30AWG. Mislil sem, da bi bilo super za izdelavo prototipov, ker vroč spajkalnik ne bo stopil izolacije. No, nekako ni