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

חלקיק פוטון - מדריך חיישן מד גובה MPL3115A2 מדריך: 4 שלבים
חלקיק פוטון - מדריך חיישן מד גובה MPL3115A2 מדריך: 4 שלבים

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

וִידֵאוֹ: חלקיק פוטון - מדריך חיישן מד גובה MPL3115A2 מדריך: 4 שלבים
וִידֵאוֹ: פיזיקה - פוטון זה חלקיק או גל #shorts 2024, יוני
Anonim
Image
Image

ה- 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 לשירותי חירום, מפת עזרה, ניווט וכן ציוד תחנת מזג אוויר.

מוּמלָץ: