Spisu treści:
Wideo: Arduino Nano - samouczek dotyczący precyzyjnego czujnika wysokościomierza MPL3115A2: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
MPL3115A2 wykorzystuje czujnik ciśnienia MEMS z interfejsem I2C w celu zapewnienia dokładnych danych dotyczących ciśnienia/wysokości i temperatury. Wyjścia czujnika są digitalizowane przez 24-bitowy przetwornik ADC o wysokiej rozdzielczości. Przetwarzanie wewnętrzne usuwa zadania dotyczące wynagrodzeń z systemu hosta MCU. Jest w stanie wykryć zmianę tylko o 0,05 kPa, co odpowiada zmianie wysokości o 0,3 m. Oto jego demonstracja z Arduino Nano.
Krok 1: Czego potrzebujesz.
1. Arduino Nano
2. MPL3115A2
3. Kabel I²C
4. Tarcza I²C dla Arduino Nano
Krok 2: Połączenia:
Weź nakładkę I2C dla Arduino Nano i delikatnie wepchnij ją na piny Nano.
Następnie podłącz jeden koniec kabla I2C do czujnika MPL3115A2, a drugi koniec do ekranu I2C.
Połączenia prezentuje powyższy obrazek.
Krok 3: Kod:
Kod arduino dla MPL3115A2 można pobrać z naszego repozytorium github-DCUBE Store.
Oto link do tego samego:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
Dołączamy bibliotekę Wire.h ułatwiającą komunikację I2c czujnika z płytką Arduino.
Możesz również skopiować kod stąd, jest on podany w następujący sposób:
// Rozprowadzane z wolną licencją.
// Używaj go w dowolny sposób, z zyskiem lub za darmo, pod warunkiem, że pasuje do licencji powiązanych z nim dzieł.
// MPL3115A2
// Ten kod jest przeznaczony do pracy z MPL3115A2_I2CS I2C Mini Module
#włączać
// Adres MPL3115A2 I2C to 0x60(96)
#define Addr 0x60
pusta konfiguracja()
{
// Zainicjuj komunikację I2C
Wire.początek();
// Zainicjuj komunikację szeregową, ustaw szybkość transmisji = 9600
Serial.początek(9600);
// Rozpocznij transmisję I2C
Wire.beginTransmisja(Addr);
// Wybierz rejestr kontrolny
Wire.write(0x26);
// Tryb aktywny, OSR = 128, tryb wysokościomierza
Wire.write(0xB9);
// Zatrzymaj transmisję I2C
Wire.endTransmission();
// Rozpocznij transmisję I2C
Wire.beginTransmisja(Addr);
// Wybierz rejestr konfiguracji danych
Wire.write(0x13);
// Zdarzenie gotowości danych włączone dla wysokości, ciśnienia, temperatury
Wire.write(0x07);
// Zatrzymaj transmisję I2C
Wire.endTransmission();
opóźnienie(300);
}
pusta pętla()
{
dane int bez znaku[6];
// Rozpocznij transmisję I2C
Wire.beginTransmisja(Addr);
// Wybierz rejestr kontrolny
Wire.write(0x26);
// Tryb aktywny, OSR = 128, tryb wysokościomierza
Wire.write(0xB9);
// Zatrzymaj transmisję I2C
Wire.endTransmission();
opóźnienie (1000);
// Rozpocznij transmisję I2C
Wire.beginTransmisja(Addr);
// Wybierz rejestr danych
Wire.write(0x00);
// Zatrzymaj transmisję I2C
Wire.endTransmission();
// Żądaj 6 bajtów danych
Wire.requestFrom(Addr, 6);
// Odczytaj 6 bajtów danych z adresu 0x00(00)
// stan, wysokość msb1, wysokość msb, wysokość msb, temp msb, temp lsb
jeśli (Wire.available() == 6)
{
dane[0] = Przewód.odczyt();
dane[1] = Drut.odczyt();
dane[2] = Przewód.odczyt();
dane[3] = Przewód.odczyt();
dane[4] = Przewód.odczyt();
dane[5] = Wire.read();
}
// Konwertuj dane na 20-bitowe
int tHeight = (((long)(data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16);
int temp = ((dane[4] * 256) + (dane[5] i 0xF0)) / 16;
wysokość pływania = wysokość / 16,0;
pływak cTemp = (temp / 16,0);
pływak fTemp = cTemp * 1,8 + 32;
// Rozpocznij transmisję I2C
Wire.beginTransmisja(Addr);
// Wybierz rejestr kontrolny
Wire.write(0x26);
// Tryb aktywny, OSR = 128, tryb barometru
Wire.write(0x39);
// Zatrzymaj transmisję I2C
Wire.endTransmission();
opóźnienie (1000);
// Rozpocznij transmisję I2C
Wire.beginTransmisja(Addr);
// Wybierz rejestr danych
Wire.write(0x00);
// Zatrzymaj transmisję I2C
Wire.endTransmission();
// Żądaj 4 bajtów danych
Wire.requestFrom(Addr, 4);
// Odczytaj 4 bajty danych
// status, naciśnij msb1, naciśnij msb, naciśnij lsb
jeśli (Wire.available() == 4)
{
dane[0] = Przewód.odczyt();
dane[1] = Drut.odczyt();
dane[2] = Przewód.odczyt();
dane[3] = Przewód.odczyt();
}
// Konwertuj dane na 20-bitowe
długie naciśnięcie = (((long)data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16;
ciśnienie pływakowe = (pres / 4.0) / 1000.0;
// Dane wyjściowe do monitora szeregowego
Serial.print("Wysokość: ");
Serial.print(wysokość);
Serial.println(" m");
Serial.print("Ciśnienie: ");
druk.seryjny(ciśnienie);
Serial.println("kPa");
Serial.print("Temperatura w stopniach Celsjusza: ");
druk.seryjny(cTemp);
Serial.println("C");
Serial.print("Temperatura w stopniach Fahrenheita: ");
Serial.print(fTemp);
Serial.println(" F");
opóźnienie (500);
}
Krok 4: Aplikacje:
Różne zastosowania MPL3115A2 obejmują wysokościomierze o wysokiej dokładności, smartfony/tablety, wysokościomierze elektroniki osobistej itp. Można go również włączyć do systemu GPS Dead Reckoning, ulepszeń GPS dla służb ratunkowych, asystenta mapy, nawigacji, a także wyposażenia stacji pogodowej.
Zalecana:
Łączenie czujnika gazu z Arduino: 4 kroki
Połączenie czujnika gazu z Arduino: Czujnik dymu MQ-2 jest czuły na dym i następujące palne gazy: LPG, butan, propan, metan, alkohol, wodór. Rezystancja czujnika jest różna w zależności od rodzaju gazu. Czujnik dymu posiada wbudowany potencjometr
KALIBRACJA CZUJNIKA ORP ARDUINO: 3 kroki
KALIBRACJA CZUJNIKA ORP ARDUINO: W tym samouczku będziemy kalibrować czujnik EZO ORP (potencjał oksydacyjno-redukcyjny) firmy Atlas Scientific za pomocą Arduino Uno. TEORIA KALIBRACJI Najważniejszą częścią kalibracji jest obserwowanie odczytów podczas procesu kalibracji. To jest łatwe
KALIBRACJA CZUJNIKA TLENU ROZPUSZCZONEGO ARDUINO: 4 kroki
KALIBRACJA CZUJNIKA ROZPUSZCZONEGO TLENU ARDUINO: W tym samouczku kalibrujemy czujnik EZO rozpuszczonego tlenu (D.O) firmy Atlas Scientific za pomocą Arduino Uno. TEORIA KALIBRACJI Najważniejszą częścią kalibracji jest obserwowanie odczytów podczas procesu kalibracji. Najłatwiej jest skalibrować
Kto jest w Moich Drzwiach? Projekt czujnika ruchu PIR/czujnika zasięgu: 5 kroków
Kto jest w Moich Drzwiach? Projekt czujnika ruchu PIR/czujnika zasięgu: Nasz projekt ma na celu wykrywanie ruchu za pomocą czujników PIR i czujników odległości. Kod Arduino wyśle sygnał wizualny i dźwiękowy, aby poinformować użytkownika, że ktoś jest w pobliżu. Kod MATLAB wyśle sygnał e-mail, aby powiadomić użytkownika, że ktoś jest w pobliżu.To urządzenie
Metody wykrywania poziomu wody Arduino za pomocą czujnika ultradźwiękowego i czujnika wody Funduino: 4 kroki
Metody wykrywania poziomu wody Arduino za pomocą czujnika ultradźwiękowego i czujnika wody Funduino: W tym projekcie pokażę, jak stworzyć niedrogi wykrywacz wody za pomocą dwóch metod:1. Czujnik ultradźwiękowy (HC-SR04).2. Czujnik wody Funduino