תוכן עניינים:

Arduino Nano - מדריך חיישן מד גובה MPL3115A2 מדריך: 4 שלבים
Arduino Nano - מדריך חיישן מד גובה MPL3115A2 מדריך: 4 שלבים

וִידֵאוֹ: Arduino Nano - מדריך חיישן מד גובה MPL3115A2 מדריך: 4 שלבים

וִידֵאוֹ: Arduino Nano - מדריך חיישן מד גובה MPL3115A2 מדריך: 4 שלבים
וִידֵאוֹ: פרויקט ארדואינו בקרה לגן ילדים 1 מסך מגע גרפי LCD I2C SMS לוח מקשים טביעת אצבע מנעול לדלת עמל חדרה 2024, נוֹבֶמבֶּר
Anonim
Image
Image

ה- MPL3115A2 משתמש בחיישן לחץ MEMS עם ממשק I2C כדי לספק נתוני לחץ/גובה וטמפרטורה מדויקים. יציאות החיישן ממוגנות באמצעות ADC ברזולוציה גבוהה של 24 סיביות. עיבוד פנימי מסיר משימות פיצוי ממערכת ה- MCU המארחת. הוא מסוגל לזהות שינוי ב- 0.05 kPa בלבד שמשווה לשינוי של 0.3 מ 'גובה. הנה ההדגמה שלו עם Arduino Nano.

שלב 1: מה שאתה צריך..

מה אתה צריך..!!
מה אתה צריך..!!

1. ארדואינו ננו

2. MPL3115A2

3. כבל I²C

4. מגן I²C עבור Arduino Nano

שלב 2: חיבורים:

חיבורים
חיבורים
חיבורים
חיבורים
חיבורים
חיבורים
חיבורים
חיבורים

קח מגן I2C עבור Arduino Nano ודחוף אותו בעדינות מעל סיכות הננו.

לאחר מכן חבר את הקצה האחד של כבל I2C לחיישן MPL3115A2 והקצה השני למגן I2C.

חיבורים מוצגים בתמונה למעלה.

שלב 3: קוד:

קוד
קוד

ניתן להוריד את קוד הארדואינו ל- MPL3115A2 מחנות ה- github-DCUBE.

להלן הקישור לאותו דבר:

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

אנו כוללים את ספריית Wire.h כדי להקל על תקשורת I2c של החיישן עם לוח Arduino.

אתה יכול גם להעתיק את הקוד מכאן, הוא ניתן כדלקמן:

// מופץ ברישיון רצון חופשי.

// השתמש בו בכל דרך שתרצה, ברווח או בחינם, בתנאי שהוא מתאים לרישיונות של העבודות הקשורות בו.

// MPL3115A2

// קוד זה נועד לעבוד עם מודול מיני MPL3115A2_I2CS I2C

#לִכלוֹל

// כתובת MPL3115A2 I2C היא 0x60 (96)

#define Addr 0x60

הגדרת חלל ()

{

// אתחול תקשורת I2C

Wire.begin ();

// אתחל תקשורת סדרתית, הגדר קצב שידור = 9600

Serial.begin (9600);

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר רשום בקרה

Wire.write (0x26);

// מצב פעיל, OSR = 128, מצב מד גובה

Wire.write (0xB9);

// עצור את שידור I2C

Wire.endTransmission ();

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר את רשימת תצורת הנתונים

Wire.write (0x13);

// אירוע מוכן לנתונים מופעל לגובה, לחץ, טמפרטורה

Wire.write (0x07);

// עצור את שידור I2C

Wire.endTransmission ();

עיכוב (300);

}

לולאת חלל ()

{

נתוני int ללא חתום [6];

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר רשום בקרה

Wire.write (0x26);

// מצב פעיל, OSR = 128, מצב מד גובה

Wire.write (0xB9);

// עצור את שידור I2C

Wire.endTransmission ();

עיכוב (1000);

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר רישום נתונים

Wire.write (0x00);

// עצור את שידור I2C

Wire.endTransmission ();

// בקש 6 בתים של נתונים

Wire.requestFrom (Addr, 6);

// קרא 6 בתים של נתונים מהכתובת 0x00 (00)

// סטטוס, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

אם (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

// המר את הנתונים ל- 20 סיביות

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

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

גובה צף = tHeight / 16.0;

צף cTemp = (טמפ ' / 16.0);

צף fTemp = cTemp * 1.8 + 32;

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר רשום בקרה

Wire.write (0x26);

// מצב פעיל, OSR = 128, מצב ברומטר

Wire.write (0x39);

// עצור את שידור I2C

Wire.endTransmission ();

עיכוב (1000);

// התחל את שידור I2C

Wire.beginTransmission (Addr);

// בחר רישום נתונים

Wire.write (0x00);

// עצור את שידור I2C

Wire.endTransmission ();

// בקש 4 בתים של נתונים

Wire.requestFrom (אדר, 4);

// קרא 4 בתים של נתונים

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

אם (Wire.available () == 4)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

}

// המר את הנתונים ל- 20 סיביות

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

לחץ צף = (pres / 4.0) / 1000.0;

// נתוני פלט לצג הסדרתי

Serial.print ("גובה:");

Serial.print (גובה);

Serial.println ("m");

Serial.print ("לחץ:");

Serial.print (לחץ);

Serial.println ("kPa");

Serial.print ("טמפרטורה בצלזיוס:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("טמפרטורה בפרנהייט:");

Serial.print (fTemp);

Serial.println ("F");

עיכוב (500);

}

שלב 4: יישומים:

יישומים שונים של MPL3115A2 כוללים מדדי דיוק גבוהים, סמארטפונים/טאבלטים, אלטימטריה של אלקטרוניקה אישית וכו '. ניתן לשלב אותה גם בחישוב מתים GPS, שיפור GPS לשירותי חירום, מפת עזרה, ניווט וכן ציוד תחנת מזג אוויר.

מוּמלָץ: