תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
ה- MMA8452Q הוא מד תאוצה חכם, בעל הספק נמוך, תלת ציר, קיבולי, מיקרומכני עם 12 סיביות רזולוציה. אפשרויות לתכנות גמישות למשתמש ניתנות בעזרת פונקציות מוטבעות במד התאוצה, הניתנות להגדרה לשני סיכות הפסקה. יש לו קנה מידה מלא לבחירה של ± 2g/± 4g/± 8g עם נתונים מסוננים במעבר גבוה כמו גם נתונים שאינם מסוננים בזמן אמת. הנה ההדגמה שלו עם ננו Arduino.
שלב 1: מה שאתה צריך..
1. ארדואינו ננו
2. MMA8452Q
3. כבל I²C
4. מגן I²C עבור Arduino Nano
שלב 2: חיבור:
קח מגן I2C עבור Arduino Nano ודחוף אותו בעדינות מעל סיכות הננו.
לאחר מכן חבר את הקצה האחד של כבל I2C לחיישן MMA8452Q והקצה השני למגן I2C.
חיבורים מוצגים בתמונה למעלה.
שלב 3: קוד:
ניתן להוריד את קוד הארדואינו ל- MMMA8452Q ממאגר github שלנו- חנות DCUBE.
הנה הקישור.
אנו כוללים את ספריית Wire.h כדי להקל על תקשורת I2c של החיישן עם לוח Arduino.
אתה יכול גם להעתיק את הקוד מכאן, הוא ניתן כדלקמן:
// מופץ ברישיון רצון חופשי.
// השתמש בו בכל דרך שתרצה, ברווח או בחינם, בתנאי שהוא מתאים לרישיונות של העבודות הקשורות בו.
// MMA8452Q
// קוד זה נועד לעבוד עם מודול מיני MMA8452Q_I2CS I2C.
#לִכלוֹל
// כתובת MMA8452Q I2C היא 0x1C (28)
#define Addr 0x1C
הגדרת חלל ()
{
// אתחל תקשורת I2C כ- MASTER
Wire.begin ();
// אתחל תקשורת סדרתית, הגדר קצב שידור = 9600
Serial.begin (9600);
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// בחר רשום בקרה
Wire.write (0x2A);
// מצב המתנה
Wire.write (0x00);
// עצור את שידור I2C
Wire.endTransmission ();
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// בחר רשום בקרה
Wire.write (0x2A);
// מצב פעיל
Wire.write (0x01);
// עצור את שידור I2C
Wire.endTransmission ();
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// בחר רשום בקרה
Wire.write (0x0E);
// הגדר את הטווח ל- +/- 2g
Wire.write (0x00);
// עצור את שידור I2C
Wire.endTransmission ();
עיכוב (300);
}
לולאת חלל ()
{
נתוני int ללא חתום [7];
// בקש 7 בתים של נתונים
Wire.requestFrom (אדר, 7);
// קראו 7 בתים של נתונים
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
אם (Wire.available () == 7)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
data [4] = Wire.read ();
data [5] = Wire.read ();
data [6] = Wire.read ();
}
// המר את הנתונים ל -12 סיביות
int xAccl = ((נתונים [1] * 256) + נתונים [2]) / 16;
אם (xAccl> 2047)
{
xAccl -= 4096;
}
int yAccl = ((נתונים [3] * 256) + נתונים [4]) / 16;
אם (yAccl> 2047)
{
yAccl -= 4096;
}
int zAccl = ((נתונים [5] * 256) + נתונים [6]) / 16;
אם (zAccl> 2047)
{
zAccl -= 4096;
}
// נתוני פלט לצג הסדרתי
Serial.print ("האצה בציר X:");
Serial.println (xAccl);
Serial.print ("האצה בציר Y:");
Serial.println (yAccl);
Serial.print ("האצה בציר Z:");
Serial.println (zAccl);
עיכוב (500);
}
שלב 4: יישומים:
ל- MMA8452Q יש יישומים שונים הכוללים יישומי E-Compass, זיהוי כיוון סטטי הכולל דיוקן/נוף, מעלה/מטה, שמאל/ימין, זיהוי מיקום אחורי/קדמי, מחברת, קורא אלקטרוני וגילוי נפילות ונפילה של מחשב נייד, בזמן אמת. זיהוי אוריינטציה כולל מציאות מדומה ומשוב משוב על מיקום המשתמש בתלת מימד, ניתוח פעילויות בזמן אמת כגון ספירת צעדים מד צעדים, זיהוי נפילה חופשית ל- HDD, גיבוי GPS מתחשב ועוד ועוד.