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

ADXL345 שימוש ב- Arduino Uno R3: 5 שלבים
ADXL345 שימוש ב- Arduino Uno R3: 5 שלבים

וִידֵאוֹ: ADXL345 שימוש ב- Arduino Uno R3: 5 שלבים

וִידֵאוֹ: ADXL345 שימוש ב- Arduino Uno R3: 5 שלבים
וִידֵאוֹ: Lesson 77: Using VL53L0X 200cm Laser Distance Sensor | Arduino Step By Step Course 2024, יולי
Anonim
ADXL345 שימוש ב- Arduino Uno R3
ADXL345 שימוש ב- Arduino Uno R3

בשיעור זה נלמד כיצד להשתמש בחיישן התאוצה ADXL345.

שלב 1: רכיבים

- לוח Arduino Uno * 1

- כבל USB * 1

- ADXL345 *1

- לוח לחם * 1

- חוטי מגשר

שלב 2: עקרון

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

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

ADXL345

ה- ADXL345 הוא מד תאוצה קטן, דק, בעל הספק נמוך, בעל 3 צירים עם מדידה ברזולוציה גבוהה (13 סיביות) עד ± 16 גרם. נתוני הפלט הדיגיטליים מעוצבים כהשלמה של 16 סיביות ונגישים באמצעות ממשק דיגיטלי SPI (3 או 4 חוטים) או I2C. בניסוי זה משתמשים בממשק הדיגיטלי I2C.

היא מתאימה למדידת האצת הכובד הסטטית ביישומי חישת הטיה, כמו גם תאוצה דינאמית הנובעת מתנועה או הלם. הרזולוציה הגבוהה שלו (4 מ ג/LSB) מאפשרת את מדידת שינוי הנטייה בפחות מ -1.0 °. והרגישות המעולה (3.9mg/LSB @2g) מספקת תפוקה דיוק גבוהה של עד 16g ±.

כיצד פועל ADXL345

ה- ADXL345 מזהה את ההאצה עם רכיב החישה בחזית, ואז רכיב חישת האות החשמלי משנה אותו לאות חשמלי שהוא אנלוגי. לאחר מכן, מתאם AD המשולב במודול יהפוך את האות האנלוגי לאחד דיגיטלי.

X_OUT, Y_OUT ו- Z_OUT הם הערכים בציר X, Y ו- Z בהתאמה. מקם את המודול כלפי מעלה: Z_OUT יכול להגיע ל -1 גרם לכל היותר, המינימום של X_OUT הוא -1 גרם לכיוון Ax, והמינימום של Y_OUT הוא -1 גרם לכיוון Ay. מצד שני, הפוך את המודול הפוך: המינימום של Z_OUT הוא -1g, המקסימום של X_OUT הוא +1g לכיוון Ax, והמקסימום של Y_OUT הוא +1g לכיוון Ay., כפי שמוצג מטה. סובב את מודול ADXL345 ותראה את השינוי של שלושה ערכים.

כאשר ערוץ A משתנה מרמה גבוהה לרמה נמוכה, אם ערוץ B הוא ברמה גבוהה, הוא מציין שהמקודד הסיבובי מסתובב עם כיוון השעון (CW); אם באותו זמן ערוץ B הוא ברמה נמוכה, זה אומר סיבובים נגד כיוון השעון (CCW). אז אם נקרא את הערוץ של ערוץ B כאשר ערוץ A ברמה נמוכה, נוכל לדעת לאיזה כיוון המקודד הסיבובי מסתובב.

עקרון: ראה תרשים סכמטי של מודול המקודד הרוטרי להלן. מתוכו אנו יכולים לראות שסיכה 3 של המקודד הסיבובי, כלומר CLK במודול, היא ערוץ B. סיכה 5, שהיא DT, היא ערוץ A. כדי לדעת את כיוון הסיבוב של המקליט, פשוט קרא את הערך של CLK ו- DT.

במעגל יש שבב של ווסת מתח 3.3V, כך שתוכל להפעיל את המודול עם 5V או 3.3V.

מכיוון שמחובר SDO ל- GND, כתובת I2C של ADXL345 היא 0x53, 0xA6 לכתיבה, 0xA7 לקריאה

פונקציית סיכה של מודול ADXL345.

שלב 3: נהלים

שלב 1. בנה את המעגל.

שלב 2:

הורד את הקוד מ-

שלב 3:

העלה את הסקיצה ללוח ה- Arduino Uno

לחץ על סמל ההעלאה כדי להעלות את הקוד ללוח הבקרה.

אם "סיום ההעלאה" מופיע בתחתית החלון, פירוש הדבר שהסקיצה הועלתה בהצלחה.

לאחר ההעלאה, פתח את Monitor Serial, שם תוכל לראות את הנתונים שזוהו. כאשר האצת המודול משתנה, הנתון ישתנה בהתאם לחלון.

שלב 4: קוד

קוד
קוד

// ADXL335

/********************************

ADXL335

הערה: vcc5v, אבל ADXL335 לעומת 3.3V

המעגל:

5V: VCC

אנלוגי 0: ציר x

אנלוגי 1: ציר y

אנלוגי 2: ציר z

לאחר שריפת ה

תוכנית, פתח את חלון איתור באגים של צג טורי, שם תוכל לראות את הנתונים שזוהו מוצגים. כאשר התאוצה משתנה, הנתון ישתנה בהתאם.

*********************************

/אימייל:

// אתר: www.primerobotics.in

const int xpin =

A0; // ציר x של מד התאוצה

const int ypin =

A1; // ציר y

const int zpin =

A2; // ציר z (רק בדגמים עם 3 צירים)

הגדרת חלל ()

{

// לאתחל את התקשורת הסדרתית:

Serial.begin (9600);

}

לולאת חלל ()

{

int x = analogRead (xpin); // לקרוא מ- xpin

עיכוב (1); //

int y = analogRead (ypin); // לקרוא מ ypin

עיכוב (1);

int z = analogRead (zpin); // לקרוא מ- zpin

לצוף zero_G = 338.0; // ספק כוח ADXL335

לפי 3.3V: 3.3V/5V*1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print(y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

לָצוּף

zero_Gx = 331.5; // פלט zero_G של ציר x: (x_max + x_min)/2

לָצוּף

zero_Gy = 329.5; // פלט zero_G של ציר y: (y_max + y_min)/2

לצוף zero_Gz = 340.0; // את

פלט zero_G של ציר z: (z_max + z_min)/2

סולם צף =

67.6; // אספקת חשמל לפי 3.3V: 3.3v/5v *1024/3.3v *330mv/g = 67.6g

צף scale_x =

65; // סולם ציר x: x_max/3.3v*330mv/g

צף scale_y =

68.5; // סולם ציר y: y_max/3.3v*330mv/g

צף scale_z =

68; // סולם ציר z: z_max/3.3v*330mv/g

Serial.print (((float) x

- zero_Gx)/scale_x); // הדפס ערך x על צג טורי

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy)/scale_y); // הדפס ערך y במסך טורי

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/scale_z); // הדפס ערך z במסך טורי

Serial.print ("\ n");

עיכוב (1000); // חכה לשנייה אחת

}

שלב 5: ניתוח קוד

הקוד לניסוי ADXL345 כולל 3 חלקים: אתחל כל יציאה והתקן, רכש ושמור נתונים שנשלחו מהחיישנים והמיר את הנתונים.

מוּמלָץ: