- חיישן גירוסקופי ומאיץ MPU6050
- חיישן להגמיש
- הכנת ה- ARM הרובוטי המודפס בתלת מימד:
- רכיבים נדרשים:
- תרשים מעגל:
- הרכבה MPU6050 וגמיש חיישן לכפפות
- תכנות ארדואינו ננו לזרוע רובוטית
- עבודה של מחווה נשלטת על זרוע רובוטית באמצעות ארדואינו
נשק רובוטי הוא אחד היצירות ההנדסיות המרתקות וזה תמיד מרתק לראות את הדברים האלה נוטים ומתניידים כדי לבצע דברים מורכבים בדיוק כמו שזרוע אנושית הייתה עושה. זרועות רובוטיות אלו ניתן למצוא בדרך כלל בתעשיות בקו ההרכבה המבצעות עבודות מכניות אינטנסיביות כמו ריתוך, קידוח, צביעה וכו ', לאחרונה פותחות גם זרועות רובוטיות מתקדמות עם דיוק גבוה לביצוע פעולות כירורגיות מורכבות. בעבר הדפסנו תלת מימד זרוע רובוטית ובנינו זרוע רובוטית של Pick and Place DIY באמצעות מיקרו-בקר ARM7. אנו נשתמש שוב באותה זרוע רובוטית מודפסת בתלת-ממד כדי ליצור זרוע רובוטית מבוקרת באמצעות תנועות ידיים באמצעות Arduino Nano, MPU6050 Gyroscope ו- Flex חיישן.
תנוחת הזרוע הרובוטית המודפסת בתלת ממד זו נשלטת באמצעות כפפת יד המחוברת עם גירוסקופ MPU6050 וחיישן פלקס. חיישן ה- Flex משמש לבקרת סרוו האחיזה של זרוע רובוטית ו- MPU6050 משמש לתנועה של רובוטים בציר X ו- Y. אם אין לך מדפסת, אתה יכול גם לבנות את היד שלך מקרטון פשוט כפי שבנינו לפרויקט הזרוע הרובוטית שלנו Arduino. לקבלת השראה, אתה יכול גם להתייחס לזרוע הרובוטית Record and Play שבנינו קודם באמצעות Arduino.
לפני שנפרט לפרטים, ראשית, בואו ללמוד על חיישן MPU6050 וחיישן flex.
חיישן גירוסקופי ומאיץ MPU6050
MPU6050 מבוסס על טכנולוגיות מערכות מיקרו-מכניות (MEMS). לחיישן זה מד תאוצה בעל 3 צירים, גירוסקופ בעל 3 צירים וחיישן טמפרטורה מובנה. ניתן להשתמש בו למדידת פרמטרים כמו תאוצה, מהירות, כיוון, תזוזה וכו '. בעבר התממשקנו MPU6050 עם Arduino ו- Raspberry pi ובנינו גם כמה פרויקטים המשתמשים בו כמו- Robot Balancing Self, Arduino Digital Protector, ו- Arduino Inclinometer.
תכונות בחיישן MPU6050:
- תקשורת: פרוטוקול I2C עם כתובת I2C הניתנת להגדרה
- ספק כוח קלט: 3-5 וולט
- ADC מובנה של 16 סיביות מספק דיוק גבוה
- DMP מובנה מספק כוח חישובי גבוה
- יכול לשמש לממשק עם מכשירי I2C אחרים כמו מגנומטר
- חיישן טמפרטורה מובנה
פרטי הצמדה של MPU6050:
פִּין | נוֹהָג |
Vcc | מספק כוח למודול, יכול להיות + 3 וולט + 5 וולט. בדרך כלל משתמשים ב- + 5V |
קרקע, אדמה | מחובר לקרקע המערכת |
שעון סידורי (SCL) | משמש לאספקת דופק שעון לתקשורת I2C |
נתונים סידוריים (SDA) | משמש להעברת נתונים באמצעות תקשורת I2C |
נתוני סידור עזר (XDA) | יכול לשמש לממשק מודולי I2C אחרים עם MPU6050 |
שעון עזר עזר (XCL) | יכול לשמש לממשק מודולי I2C אחרים עם MPU6050 |
AD0 | אם משתמשים ביותר מ MPU6050 אחד ב- MCU יחיד, ניתן להשתמש בסיכה זו כדי לשנות את הכתובת |
להפריע (INT) | הפסק סיכה כדי לציין כי נתונים זמינים לקריאת MCU |
חיישן להגמיש
חיישני פלקס אינם אלא נגד משתנה. התנגדות חיישן הגמישות משתנה כאשר החיישן מכופף. הם זמינים בדרך כלל בשני גדלים 2.2 אינץ ' ו 4.5 אינץ'.
מדוע אנו משתמשים בחיישני פלקס בפרויקט שלנו?
בזרוע רובוטית זו הנשלטת על ידי מחווה, נעשה שימוש בחיישן גמיש לשליטה על אחיזת הזרוע הרובוטית. כאשר חיישן הגמיש בכפפת היד כפוף, מנוע הסרוו המחובר לאחיזה מסתובב והאוחז נפתח.
חיישני Flex יכולים להיות שימושיים ביישומים רבים ובנינו כמה פרויקטים המשתמשים בחיישן Flex כמו בקר משחק, מחולל טונים וכו '.
הכנת ה- ARM הרובוטי המודפס בתלת מימד:
הזרוע הרובוטית המודפסת בתלת ממד המשמשת במדריך זה נעשתה על ידי ביצוע התכנון שניתן על ידי EEZYbotARM אשר זמין ב Thingiverse. ההליך המלא להכנת הזרוע הרובוטית המודפסת בתלת ממד ופרט ההרכבה עם הווידיאו נמצא בקישור Thingiverse, המשותף לעיל.
מעל התמונה של הזרוע הרובוטית המודפסת בתלת מימד שלי לאחר הרכבה עם 4 מנועי סרוו.
רכיבים נדרשים:
- ארדואינו ננו
- חיישן להגמיש
- נגד 10k
- MPU6050
- כפפות ידיים
- חוטי חיבור
- קרש לחם
תרשים מעגל:
התמונה הבאה מציגה את חיבורי המעגל לזרוע רובוטית המבוססת על מחוות המבוסס על Arduino .
חיבור מעגל בין MPU6050 לארדואינו ננו:
MPU6050 |
ארדואינו ננו |
VCC |
+ 5 וולט |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
חיבור מעגל בין סרוו מנועים לארדואינו ננו:
ארדואינו ננו |
מנוע סרבו |
מתאם מתח |
D2 |
סרוו 1 תפוז (פין PWM) |
- |
D3 |
סרוו 2 תפוז (סיכת PWM) |
- |
D4 |
סרוו 3 תפוז (סיכת PWM) |
- |
D5 |
סרוו 4 תפוז (סיכת PWM) |
- |
GND |
סרוו 1,2,3,4 חום (פין GND) |
GND |
- |
סרוו 1,2,3,4 אדום (+ פין 5V) |
+ 5 וולט |
חיישן Flex מכיל שתי סיכות. הוא אינו מכיל מסופים מקוטבים. אז סיכה אחת P1 מחוברת לסיכה האנלוגית של Arduino Nano A0 עם נגע משיכה של 10k והסיכה השנייה P2 מקורקעת לארדואינו.
הרכבה MPU6050 וגמיש חיישן לכפפות
הרכבנו את MPU6050 ו- Flex Sensor על כפפת יד. כאן נעשה שימוש בחיבור קווי לחיבור כפפה וזרוע רובוטית, אך ניתן לבצע אותו באמצעות חיבור RF או חיבור Bluetooth.
לאחר כל חיבור, ההתקנה הסופית לזרוע רובוטית הנשלטת על ידי המחווה נראית כמו התמונה למטה:
תכנות ארדואינו ננו לזרוע רובוטית
כרגיל, קוד מלא יחד עם סרטון עבודה ניתן בסוף הדרכה זו. כאן מוסברים כמה שורות קוד חשובות.
1. ראשית, כלול את קבצי הספרייה הדרושים. ספריית Wire.h משמשת לתקשורת I2C בין Arduino Nano ו- MPU6050 לבין servo.h לשליטה במנוע סרוו.
#לִכלוֹל
2. לאחר מכן מוכרזים האובייקטים של סרוו הכיתה. כאשר אנו משתמשים בארבעה מנועי סרוו, נוצרים ארבעה אובייקטים כגון servo_1, servo_2, servo_3, servo_4.
סרוו סרוו_1; סרוו סרוו_2; סרוו סרוו_3; סרוו סרוו_4;
3. לאחר מכן, הוכרז כתובת I2C של MPU6050 והמשתנים שיש להשתמש בהם.
const int MPU_addr = 0x68; // MPU6050 I2C כתובת int16_t axis_X, axis_Y, axis_Z; int minVal = 265; int maxVal = 402; כפול x; כפול y; z כפול;
4. לאחר מכן בהגדרת הריק , נקבע קצב שידור של 9600 לתקשורת טורית.
Serial.begin (9600);
ותקשורת I2C בין Arduino Nano ו- MPU6050 נוצרה:
Wire.begin (); // אתחל את I2C תקשורת Wire.beginTransmission (MPU_addr); // התחל תקשורת עם MPU6050 Wire.write (0x6B); // כותב לרישום 6B Wire.write (0); // כותב 0 ל- 6B הירשם לאיפוס Wire.endTransmission (נכון); // מסיים שידור I2C
כמו כן, ארבעה סיכות PWM מוגדרות לחיבורי מנוע סרוו.
servo_1. לצרף (2); // קדימה / Reverse_Motor servo_2.attach (3); // Up / Down_Motor servo_3.attach (4); // Gripper_Motor servo_4.attach (5); // שמאל / ימין_מנוע
5. לאחר מכן בפונקציית הלולאה הריקנית, קבע שוב את חיבור I2C בין MPU6050 לבין Arduino Nano ואז התחל לקרוא את נתוני ציר ה- X, Y, Z מהמרשם של MPU6050 ולאחסן אותם במשתנים המתאימים.
Wire.beginTransmission (MPU_addr); Wire.write (0x3B); // התחל עם regsiter 0x3B Wire.endTransmission (false); Wire.requestFrom (MPU_addr, 14, נכון); // קרא 14 רושמים axis_X = Wire.read () << 8-Wire.read (); axis_Y = Wire.read () << 8-Wire.read (); axis_Z = Wire.read () << 8-Wire.read ();
לאחר מכן, למפות את הערך המינימלי והמקסימלי של נתוני הציר מחיישן MPU6050 בטווח של -90 עד 90.
int xAng = מפה (axis_X, minVal, maxVal, -90,90); int yAng = מפה (axis_Y, minVal, maxVal, -90,90); int zAng = מפה (axis_Z, minVal, maxVal, -90,90);
לאחר מכן השתמש בנוסחה הבאה כדי לחשב את ערכי x, y, z במונחים של 0 עד 360.
x = RAD_TO_DEG * (atan2 (-yAng, -zAng) + PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng) + PI);
לאחר מכן קרא את חיישן הגמישות נתוני פלט אנלוגיים בסיכת A0 של Arduino Nano ובהתאם לערך הדיגיטלי של חיישן הגמיש הגדר את זווית הסרוו של האחיזה. כך שאם נתוני חיישן הגמישות גדולים מ- 750 זווית המנוע הסרו של האחיזה היא 0 מעלות ואם פחות מ- 750 היא 180 מעלות.
תפסן int; int flex_sensorip = analogRead (A0); אם (flex_sensorip> 750) { gripper = 0; } אחר { גריפר = 180; } servo_3.write (gripper);
לאחר מכן ממופה התנועה של MPU6050 על ציר ה- X מ- 0 ל- 60 במונחים של 0 עד 90 מעלות לתנועת קדימה / אחורה של מנוע הסרוו את הזרוע הרובוטית.
אם (x> = 0 && x <= 60) { int mov1 = מפה (x, 0,60,0,90); Serial.print ("תנועה ב- F / R ="); Serial.print (mov1); Serial.println ((char) 176); servo_1.write (mov1); }
וגם התנועה של MPU6050 על ציר ה- X מן 250 כדי 360 ממופה במונחים של 0 עד 90 מעלות עבור זרוע רובוטית UP של מנועי סרוו / DOWN תנועה.
אחרת אם (x> = 300 && x <= 360) { int mov2 = מפה (x, 360,250,0,90); Serial.print ("תנועה למעלה / למטה ="); Serial.print (mov2); Serial.println ((char) 176); servo_2.write (mov2); }
תנועת MPU6050 על ציר Y מ- 0 ל- 60 ממופה במונחים של 90 עד 180 מעלות לתנועה שמאלית של זרוע הרובוטית של מנוע הסרוו.
אם (y> = 0 && y <= 60) { int mov3 = מפה (y, 0,60,90,180); Serial.print ("תנועה משמאל ="); Serial.print (mov3); Serial.println ((char) 176); servo_4.write (mov3); }
תנועת MPU6050 בציר Y מ -300 ל -360 ממופה במונחים של 0 עד 90 מעלות לתנועה ימנית של מנוע הסרוו של הזרוע הרובוטית.
אחרת אם (y> = 300 && y <= 360) { int mov3 = מפה (y, 360,300,90,0); Serial.print ("תנועה מימין ="); Serial.print (mov3); Serial.println ((char) 176); servo_4.write (mov3); }
עבודה של מחווה נשלטת על זרוע רובוטית באמצעות ארדואינו
לבסוף, העלה את הקוד ל- Arduino Nano ולבש את כפפת היד המותקנת עם חיישן ה- MPU6050 & Flex.
1. עכשיו הזז את היד מטה כדי להזיז את הזרוע הרובוטית קדימה והעלה למעלה כדי להזיז את הזרוע הרובוטית למעלה.
2. ואז הטו את היד שמאלה או ימינה כדי להפוך את הזרוע הרובוטית שמאלה או ימינה.
3. כופף את כבל הגמיש המחובר באצבע כפפת היד כדי לפתוח את האחיזה ואז שחרר אותו כדי לסגור אותו.
העבודה המלאה מודגמת בסרטון הבא.