
Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01


De MPL3115A2 maakt gebruik van een MEMS-druksensor met een I2C-interface om nauwkeurige druk-/hoogte- en temperatuurgegevens te leveren. De sensoruitgangen worden gedigitaliseerd door een 24-bits ADC met hoge resolutie. Interne verwerking verwijdert compensatietaken van het host-MCU-systeem. Het is in staat om een verandering van slechts 0,05 kPa te detecteren, wat overeenkomt met een hoogteverandering van 0,3 m. Hier is de demonstratie met Arduino Nano.
Stap 1: Wat je nodig hebt.

1. Arduino Nano
2. MPL3115A2
3. I²C-kabel
4. I²C-schild voor Arduino Nano
Stap 2: Aansluitingen:




Neem een I2C-schild voor Arduino Nano en duw het voorzichtig over de pinnen van Nano.
Sluit vervolgens het ene uiteinde van de I2C-kabel aan op de MPL3115A2-sensor en het andere uiteinde op de I2C-afscherming.
De aansluitingen zijn weergegeven in de afbeelding hierboven.
Stap 3: Coderen:

De arduino-code voor MPL3115A2 kan worden gedownload van onze github-repository-DCUBE Store.
Hier is de link voor hetzelfde:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
We nemen bibliotheek Wire.h op om de I2c-communicatie van de sensor met het Arduino-bord te vergemakkelijken.
U kunt de code ook hier kopiëren, deze wordt als volgt gegeven:
// Gedistribueerd met een vrije wilslicentie.
// Gebruik het zoals je wilt, winst of gratis, op voorwaarde dat het past in de licenties van de bijbehorende werken.
// MPL3115A2
// Deze code is ontworpen om te werken met de MPL3115A2_I2CS I2C Mini Module
#erbij betrekken
// MPL3115A2 I2C-adres is 0x60(96)
#define Addr 0x60
ongeldige setup()
{
// Initialiseer I2C-communicatie
Draad.begin();
// Initialiseer seriële communicatie, stel baudrate in = 9600
Serieel.begin(9600);
// Start I2C-transmissie
Wire.beginTransmission (Addr);
// Selecteer controleregister
Draad.schrijven (0x26);
// Actieve modus, OSR = 128, hoogtemetermodus
Draad.schrijven (0xB9);
// Stop I2C-transmissie
Wire.endTransmission();
// Start I2C-transmissie
Wire.beginTransmission (Addr);
// Selecteer dataconfiguratieregister
Draad.schrijven (0x13);
// Gegevens gereedgebeurtenis ingeschakeld voor hoogte, druk, temperatuur
Draad.schrijven (0x07);
// Stop I2C-transmissie
Wire.endTransmission();
vertraging (300);
}
lege lus()
{
niet-ondertekende int-gegevens[6];
// Start I2C-transmissie
Wire.beginTransmission (Addr);
// Selecteer controleregister
Draad.schrijven (0x26);
// Actieve modus, OSR = 128, hoogtemetermodus
Draad.schrijven (0xB9);
// Stop I2C-transmissie
Wire.endTransmission();
vertraging (1000);
// Start I2C-transmissie
Wire.beginTransmission (Addr);
// Selecteer dataregister
Draad.schrijven (0x00);
// Stop I2C-transmissie
Wire.endTransmission();
// Vraag 6 bytes aan gegevens aan
Wire.requestFrom(Addr, 6);
// Lees 6 bytes aan gegevens van adres 0x00(00)
// status, tHeight msb1, tHeight msb, tHeight lsb, tijdelijke msb, tijdelijke lsb
if (Draad.beschikbaar() == 6)
{
data[0] = Draad.lezen();
data[1] = Draad.lezen();
data[2] = Draad.lezen();
data[3] = Draad.lezen();
data[4] = Draad.lezen();
data[5] = Draad.lezen();
}
// Converteer de gegevens naar 20-bits
int tHeight = (((long)(data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16);
int temp = ((data[4] * 256) + (data[5] & 0xF0)) / 16;
drijfhoogte = tHoogte / 16.0;
float cTemp = (temp / 16.0);
float fTemp = cTemp * 1.8 + 32;
// Start I2C-transmissie
Wire.beginTransmission (Addr);
// Selecteer controleregister
Draad.schrijven (0x26);
// Actieve modus, OSR = 128, barometermodus
Draad.schrijven (0x39);
// Stop I2C-transmissie
Wire.endTransmission();
vertraging (1000);
// Start I2C-transmissie
Wire.beginTransmission (Addr);
// Selecteer dataregister
Draad.schrijven (0x00);
// Stop I2C-transmissie
Wire.endTransmission();
// Vraag 4 bytes aan gegevens aan
Wire.requestFrom(Addr, 4);
// Lees 4 bytes aan gegevens
// status, pres msb1, pres msb, pres lsb
if (Draad.beschikbaar() == 4)
{
data[0] = Draad.lezen();
data[1] = Draad.lezen();
data[2] = Draad.lezen();
data[3] = Draad.lezen();
}
// Converteer de gegevens naar 20-bits
lange pres = (((long)data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16;
vlotterdruk = (druk / 4,0) / 1000,0;
// Gegevens uitvoeren naar seriële monitor
Serial.print("Hoogte: ");
Serial.print(hoogte);
Serieel.println("m");
Serial.print("Druk: ");
Serieafdruk(druk);
Serieel.println ("kPa");
Serial.print ("Temperatuur in Celsius: ");
Serieel.print(cTemp);
Serieel.println("C");
Serial.print("Temperatuur in Fahrenheit: ");
Serieel.print(fTemp);
Serieel.println ("F");
vertraging (500);
}
Stap 4: Toepassingen:
Verschillende toepassingen van de MPL3115A2 omvatten hoogtemeting met hoge nauwkeurigheid, smartphones/tablets, hoogtemeting voor persoonlijke elektronica, enz. Het kan ook worden opgenomen in GPS-geschatte berekeningen, GPS-verbeteringen voor hulpdiensten, kaartassistentie, navigatie en weerstationapparatuur.
Aanbevolen:
AVR Assembler Tutorial 2: 4 stappen

AVR Assembler Tutorial 2: Deze tutorial is een vervolg op "AVR Assembler Tutorial 1" Als je Tutorial 1 nog niet hebt doorlopen, moet je nu stoppen en die eerst doen. In deze tutorial gaan we verder met onze studie van assembler programmeren van de atmega328p u
AVR Assembler Tutorial 1: 5 stappen

AVR Assembler Tutorial 1: Ik heb besloten een reeks tutorials te schrijven over het schrijven van assembleertaalprogramma's voor de Atmega328p, de microcontroller die in de Arduino wordt gebruikt. Als mensen geïnteresseerd blijven, zal ik er een per week of zo blijven uitbrengen totdat ik geen
Tutorial LCD-BMP180 met Arduino: 4 stappen

Tutorial LCD-BMP180 Con Arduino: Bienvenido a este tutorial, en el, aprenderemos a crear un sensor de temperatura de una manera fácil, rápida y eficiente. El tutorial será realiseer je met Arduino, heb een Arduino Uno, een BMP180 en een LCD nodig
Arduino Light Detection Tutorial: 3 stappen (met afbeeldingen)

Arduino Light Detection Tutorial: Na het voltooien van deze tutorial leert u hoe u veranderingen in de lichtniveaus om u heen kunt detecteren. De onderdelen voor dit project zijn geleverd door Kuman. Je kunt ze vinden in hun Arduino UNO Starter Kit
EENVOUDIGE CARBOT -- ARDUINO -- BLUETOOTH-CONTROLE -- TUTORIAL: 10 stappen (met afbeeldingen)

EENVOUDIGE CARBOT || ARDUINO || BLUETOOTH-CONTROLE || TUTORIAL: IN DIT INSTRUCTIEBOEKJE ZAL IK TONEN HOE JE EEN EENVOUDIGE BOT MAAKT DIE WORDT GECONTROLEERD DOOR JE SMARTPHONE VIA NODIGE BLUETOOTH-ONDERDELEN: ARDUINO☻2X GEAR MOTORS ☻HC-05 BLUETOOTH MODULE☻LAPTOP OF PC (VOOR HET UPLOADEN VAN CODEWER NAAR ARDUINO) IK HEB EEN POWERBANK GEBRUIKT