תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
ה- MPL3115A2 משתמש בחיישן לחץ MEMS עם ממשק I2C כדי לספק נתוני לחץ/גובה וטמפרטורה מדויקים. יציאות החיישן ממוגנות באמצעות ADC ברזולוציה גבוהה של 24 סיביות. עיבוד פנימי מסיר משימות פיצוי ממערכת ה- MCU המארחת. הוא מסוגל לזהות שינוי ב- 0.05 kPa בלבד שמשווה לשינוי של 0.3 מ 'גובה. להלן ההדגמה שלה עם פוטון חלקיקים.
שלב 1: מה שאתה צריך..
1. פוטון חלקיקים
2. MPL3115A2
3. כבל I²C
4. מגן I²C לפוטון חלקיקים
שלב 2: חיבורים:
קח מגן I2C עבור פוטון חלקיקים ודחוף אותו בעדינות על סיכות פוטון החלקיקים.
לאחר מכן חבר את הקצה האחד של כבל I2C לחיישן MPL3115A2 והקצה השני למגן I2C.
חיבורים מוצגים בתמונה למעלה.
שלב 3: קוד:
ניתן להוריד את קוד החלקיקים עבור MPL3115A2 מחנות Github-DCUBE שלנו.
הנה הקישור.
השתמשנו בשתי ספריות לקוד חלקיקים, שהם application.h ו- spark_wiring_i2c.h. ספריית Spark_wiring_i2c נדרשת על מנת להקל על תקשורת I2C עם החיישן.
אתה יכול גם להעתיק את הקוד מכאן, הוא ניתן כדלקמן:
// מופץ ברישיון רצון חופשי.
// השתמש בו בכל דרך שתרצה, ברווח או בחינם, בתנאי שהוא מתאים לרישיונות של העבודות הקשורות בו.
// MPL3115A2
// קוד זה נועד לעבוד עם מודול מיני MPL3115A2_I2CS I2C
#לִכלוֹל
#לִכלוֹל
// כתובת MPL3115A2 I2C היא 0x60 (96)
#define Addr 0x60
צף cTemp = 0.0, fTemp = 0.0, לחץ = 0.0, גובה = 0.0;
int temp = 0, tHeight = 0; pres long = 0;
הגדרת חלל ()
{
// הגדר משתנה
Particle.variable ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Particle.variable ("לחץ", לחץ);
Particle.variable ("גובה", גובה);
// אתחול תקשורת 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 סיביות
tHeight = ((((()) נתונים [1] * (ארוך) 65536) + (נתונים [2] * 256) + (נתונים [3] & 0xF0)) / 16);
temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;
גובה = גובה / 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 ();
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// בחר רישום נתונים
Wire.write (0x00);
// עצור את שידור I2C
Wire.endTransmission ();
עיכוב (1000);
// בקש 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 סיביות
pres = (((ארוך) נתונים [1] * (ארוך) 65536) + (נתונים [2] * 256) + (נתונים [3] & 0xF0)) / 16;
לחץ = (pres / 4.0) / 1000.0;
// נתוני פלט ללוח המחוונים
Particle.publish ("גובה:", מחרוזת (גובה));
פרסום Particle.publish ("לחץ:", מחרוזת (לחץ));
Particle.publish ("טמפרטורה בסלסיוס:", מחרוזת (cTemp));
Particle.publish ("טמפרטורה בפרנהייט:", מחרוזת (fTemp));
עיכוב (1000);
}
שלב 4: יישומים:
יישומים שונים של MPL3115A2 כוללים מדדי דיוק גבוהים, סמארטפונים/טאבלטים, אלטימטריה של אלקטרוניקה אישית וכו '. ניתן לשלב אותה גם בחישוב מתים GPS, שיפור GPS לשירותי חירום, מפת עזרה, ניווט וכן ציוד תחנת מזג אוויר.