תוכן עניינים:
- אספקה
- שלב 1: הדפס את כל רכיבי התלת מימד
- שלב 2: (אופציונלי) צרף קרש עץ לתחתית התיבה שלך כדי לחזק אותו
- שלב 3: מדוד וחתך קרש עץ כך שיתאים לקופסה
- שלב 4: סמן את העמדות של המנועים
- שלב 5: סמן את המיקומים של הסוגריים והצינור
- שלב 6: קדוח חור לכבלים היוצאים מהקופסה שלך (USB והספק)
- שלב 7: מקדחה וראו את כל החורים המסומנים
- שלב 8: חבר את המנועים והצינור ללוח
- שלב 9: צרף את הקרש לקופסה בעזרת סוגריים ה- L
- שלב 10: קח את בלוקי הטרמינל שלך והלחם את החוטים יחד
- שלב 11: חותכים את קצה כבל החשמל של המתאם ומפשיטים את החוטים
- שלב 12: זהה וסמן את חוטי הפלוס והמינוס
- שלב 13: חבר את החוטים לבלוקי הטרמינל כך שכל חוטי + סרוו וחוטי + מחוט החשמל מחוברים, אותו הדבר לגבי החוטים -
- שלב 14: חתכו את הראש מחוט קרש
- שלב 15: קדוח שלושה חורים בתחתית התיבה לחוטים שיוצאים מהזרוע שלך
- שלב 16: חבר את מחבר הבסיס לקופסה
- שלב 17: השתמש בסכין או בקובץ מסמר כדי להפוך את חריצי החוט לעומקים יותר
- שלב 18: בנה את הזרוע
- שלב 19: התקן את עיבוד וארדואינו
- שלב 20: הדבק את תוכניות הקוד
- שלב 21: חבר את סיכות הבקרה של סרוו ל- Arduino
- שלב 22: לחץ על לחצן איפוס בעיבוד, זה יגדיר את כל הזרועות ל -90 מעלות
- שלב 23: קבע את זרועות סרוו למנוע אופקית
- שלב 24: השחילו את החוטים בזרועות כך שלא יהיה רפיון
- שלב 25: בדוק את הזרוע והדק או שחרר את החוטים לפי הצורך
- שלב 26: הדבק חם את החוטים בזרועות הסרוו כדי להפוך אותו לצמיתות
- שלב 27: הערות
- שלב 28: פתרון בעיות
- שלב 29: קישורים
- שלב 30: קוד
- שלב 31: תמונות נוספות
וִידֵאוֹ: זרוע רובוט נשלטת על חוטים: 31 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
זו הדרכה כיצד לייצר זרוע רובוט הנשלטת על ידי חוטים. היתרון בשימוש בחוטים הוא בכך שהזרוע שלך קלה יותר ותוכל לקבל את כל המנועים שלך בחלק התחתון של היד, מה שהופך את הבנייה והתחזוקה לקלה יותר. לפניכם סרטון של הזרוע בפעולה. אני מתכוון להוסיף טופר בעתיד כדי שהוא יוכל להרים דברים ולא רק לדחוף אותם.
ניתן להדפיס תלת מימד:
כאן וכאן
אספקה
6 מנועי סרוו (MG995)
ארדואינו אונו
כ- 6 מטרים של חוט פלדה מצופה פלסטיק (0.5 מ מ)
קופסה 23x33x10 (עשויה להיות צרה יותר, בהחלט לא אמורה להיות קצרה יותר)
קרש עץ 33x10
ברגים ואומים
צינור 14 ס מ (יש צורך בהנחיית המיתרים)
4 סוגרי L
מתאם 5 וולט
2 אבני מסוף בעלות 7 כיוונים
חוטי לוח
רכיבים מודפסים בתלת מימד (לא תוכנן על ידי, קישורים לאלמנטים בתיאור):
3 "ברגים"
2 "אלמנט 1"
1 "אלמנט 2"
2 "אלמנט 3"
1 מחבר בסיס
שלב 1: הדפס את כל רכיבי התלת מימד
ייתכן שתזדקק לתמיכה בחורי הבריח והקשתות אך הקפד לא להוסיף תמיכה לגוף הרכיבים שלך; זה יסגור את חורי התיל הקטנים ותצטרך ליצור חורים חדשים
שלב 2: (אופציונלי) צרף קרש עץ לתחתית התיבה שלך כדי לחזק אותו
הקופסה שלי הייתה די חלשה, יכול להיות שלך
שלב 3: מדוד וחתך קרש עץ כך שיתאים לקופסה
שלב 4: סמן את העמדות של המנועים
וודא שאף אחת מהזרועות לא נוגעת זו בזו
שלב 5: סמן את המיקומים של הסוגריים והצינור
הצינור צריך להיות ממוקם בסביבות סנטימטר אחד מול החור
שלב 6: קדוח חור לכבלים היוצאים מהקופסה שלך (USB והספק)
שלב 7: מקדחה וראו את כל החורים המסומנים
שלב 8: חבר את המנועים והצינור ללוח
שלב 9: צרף את הקרש לקופסה בעזרת סוגריים ה- L
שלב 10: קח את בלוקי הטרמינל שלך והלחם את החוטים יחד
שלב 11: חותכים את קצה כבל החשמל של המתאם ומפשיטים את החוטים
שלב 12: זהה וסמן את חוטי הפלוס והמינוס
שלב 13: חבר את החוטים לבלוקי הטרמינל כך שכל חוטי + סרוו וחוטי + מחוט החשמל מחוברים, אותו הדבר לגבי החוטים -
שלב 14: חתכו את הראש מחוט קרש
חבר את הקצה המופשט של חוט הלוח אל בלוק הטרמינוס מינוס ואת קצה הסיכה לסיכה הקרקע בארדואינו שלך. אם לא תעשה זאת המנועים ינועו בצורה לא יציבה ללא כל קלט.
שלב 15: קדוח שלושה חורים בתחתית התיבה לחוטים שיוצאים מהזרוע שלך
החורים צריכים להתאים לחורים במחבר הבסיס.
שלב 16: חבר את מחבר הבסיס לקופסה
שלב 17: השתמש בסכין או בקובץ מסמר כדי להפוך את חריצי החוט לעומקים יותר
חריצי החוטים לאלמנטים 2 ו -3 רדודים מדי.
שלב 18: בנה את הזרוע
בנה את הזרוע בהתאם להוראות כאן ייתכן שיהיה עליך לרשום את החלקים כך שיתאימו
שלב 19: התקן את עיבוד וארדואינו
עיבוד וארדואינו
שלב 20: הדבק את תוכניות הקוד
הקוד נמצא בתחתית דף זה
שלב 21: חבר את סיכות הבקרה של סרוו ל- Arduino
חיברתי את המנוע הראשון לסיכה הדיגיטלית השלישית, המנוע השני לסיכה הדיגיטלית הרביעית וכן הלאה. וודא שסיכת הארקה עדיין מחוברת לבלוק המסוף -.
שלב 22: לחץ על לחצן איפוס בעיבוד, זה יגדיר את כל הזרועות ל -90 מעלות
שלב 23: קבע את זרועות סרוו למנוע אופקית
שלב 24: השחילו את החוטים בזרועות כך שלא יהיה רפיון
הקפד להשחיל את החוט דרך חורים רבים ככל שתוכל, הדבר יחזיק אותו באופן זמני ויהיה קל להסרה.
שלב 25: בדוק את הזרוע והדק או שחרר את החוטים לפי הצורך
שלב 26: הדבק חם את החוטים בזרועות הסרוו כדי להפוך אותו לצמיתות
שלב 27: הערות
השתמשתי בחוט תכשיטים 0.5 מ"מ אבל 0.4 מ"מ אמור להיות בסדר. העיצוב המקורי השתמש בחוט PVC אך הוא נשבר בקלות רבה מדי והיה קשה לעבוד איתו.
אם אתה עומד להזיז את הזרוע במכונית או באופניים, עטוף את מפרקי הזרוע בקלטת כדי לוודא שהם לא יוצאים החוצה. זה חשוב במיוחד עבור אלמנט 1.
כשהתחלתי את הפרויקט הזה תהיתי מדוע אני יכול למצוא רק הדרכה אחת כיצד לייצר זרוע הנשלטת על ידי חוטים. עכשיו אני מבין מדוע זו לא הדרך הנפוצה ביותר לייצר זרוע רובוט תחביב. החוטים לפעמים נופלים מהחריצים שלהם וכל העניין דקיק. אני לא יודע אם הבעיות הן בגלל שאין לי הרבה ניסיון או אם כל הרעיון בעייתי למרות שאני בטוח שזה יהיה יותר מוצק אם הייתי יודע מה אני עושה.
שלב 28: פתרון בעיות
חורי החוט סגורים באלמנטים המודפסים בתלת מימד:
הוספת תמיכה לכל האלמנט במקום רק את חורי הבריח. או הדפס מחדש את האלמנט או פתח את החורים בעזרת מחט חמה ממש.
יציאת ה- COM סגורה, אינך יכול לתקשר עם הארדואינו:
ייתכן שהארדואינו שלך לא יקבל יציאות USB 3 (שלי לא), אתה יכול לקנות כבל מאריך USB 2 או להשתמש במחשב בעל יציאות USB 2
הקוד לא עובד:
עקוב אחר מדריך זה ושנה אותו ליצירת קוד משלך
חלק מהזרוע אינו זז:
החוטים עשויים להסתבך, כדי לבדוק זאת הורידו את זרוע הסרוו מהסרוו ונסו למשוך את החוטים ביד. נתק את החוטים ואם עדיין קשה למשוך את החוטים נסה להשתמש בכמה WD-40 או בחומר סיכה כדי להקל על התנועה.
שלב 29: קישורים
זרוע לא רובוטית:
זמינות 3D להדפסה:
ניתן להדפיס את הזרוע שלי בתלת מימד:
Arduino ועיבוד:
שלב 30: קוד
שונה מהקוד הזה
קוד ארדואינו:
#include // הצהירו על המנועים Servo myservo1; סרוו myservo2; סרוו myservo3; סרוו myservo4; סרוו myservo5; סרוו myservo6; // כל המנועים מוגדרים על 90 מעלות כברירת מחדל int current1 = 90; int current2 = 90; int current3 = 90; int current4 = 90; int current5 = 90; int current6 = 90; // מינימום ומקסימום המנועים יכולים להגיע int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // מעלות שיש להוסיף או להפחית מהמיקום הנוכחי int degreesFoward = 5; // עיכוב כך ששתי פונקציות לא יקרו בסדר הלא נכון int delayBetweenSteps = 100; הגדרת void () {// הגדר סיכות שליטה לכל מנוע myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // הגדר את כל המנועים להגדרת ברירת המחדל myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // התחל תקשורת טורית @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// אם נתונים זמינים לקריאה char val = Serial.read (); // הכנס אותו לתו הזה // בקרת מנוע אם (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); current1 = current1 - degreesFoward; עיכוב (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - degreesFoward); current2 = current2 - degreesFoward; עיכוב (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - degreesFoward); current3 = current3 - degreesFoward; עיכוב (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - degreesFoward); current4 = current4 - degreesFoward; עיכוב (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - degreesFoward); current5 = current5 - degreesFoward; עיכוב (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - degreesFoward); current6 = current6 - degreesFoward; עיכוב (delayBetweenSteps); } // בקרות מהירות אם (val == 'w') {// אם כפתור מהירות 1 נלחץ מעלות Foward = 1; עיכוב (delayBetweenSteps); } if (val == 'x') {// אם כפתור המהירות 5 נלחץ מעלות מעלות = 5; עיכוב (delayBetweenSteps); } if (val == 'y') {// אם כפתור מהירות 10 נלחץ מעלות ° 10 =; עיכוב (delayBetweenSteps); } if (val == 'z') {// אם כפתור מהירות 20 נלחץ מעלות ° 20 =; עיכוב (delayBetweenSteps); } if (val == 'r') {// אם לחצן מהירות 20 לחץ על myservo1.write (90); הנוכחי 1 = 90; myservo2.write (90); הנוכחי 2 = 90; myservo3.write (90); הנוכחי 3 = 90; myservo4.write (90); הנוכחי 4 = 90; myservo5.write (90); הנוכחי 5 = 90; myservo6.write (90); זרם 6 = 90; עיכוב (delayBetweenSteps); }}}
קוד עיבוד:
ייבוא עיבוד. סדרה.*; בקרת יבוא P5.*; // ייבוא יציאה טורית של ספריית ControlP5; ControlP5 cp5; // צור גופן PFont אובייקט ControlP5; הגדרת void () {// זהה לגודל התוכנית של arduino (300, 700); // גודל חלון, (רוחב, גובה) printArray (Serial.list ()); // מדפיס את כל היציאות הטורקיות הזמינות // אם יש לך בעיה זה כנראה מגיע מכאן String portName = Serial.list () [0]; port = סידורי חדש (זה, portName, 9600); // חיברתי את arduino ל- com3, זה יהיה שונה בלינוקס וב- mac os // מאפשר להוסיף בוטון לחלון ריק cp5 = new ControlP5 (זה); font = createFont ("Arial", 13); // גופנים מותאמים אישית לכפתורים וכותרת // לחצני בקרת מהירות cp5.addButton ("אחד") // "אחד" הוא שם הכפתור.setPosition (50, 50) // קואורדינטות x ו- y של הפינה השמאלית העליונה של הכפתור.setSize (55, 25) // (רוחב, גובה).setFont (גופן); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (פונט); cp5.addButton ("עשר").setPosition (170, 50).setSize (55, 25).setFont (פונט); cp5.addButton ("עשרים").setPosition (230, 50).setSize (55, 25).setFont (פונט); cp5.addButton ("איפוס").setPosition (110, 2).setSize (55, 25).setFont (פונט); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (פונט); // לחצני בקרת מנוע cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (רוחב, גובה).setFont (פונט); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (רוחב, גובה).setFont (פונט); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (פונט); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (פונט); } צייר חלל () {// זהה ללולאה ברקע ארדואינו (192, 215, 249); // צבע רקע של החלון (r, g, b) או (0 עד 255) // הוסף טקסט שאומר שליטת מהירות היא מילוי בקרת מהירות (0, 10, 25); // צבע טקסט (r, g, b) textFont (פונט); טקסט ("בקרת מהירות", 50, 40); // ("טקסט", x קואורדינטות, y קואורדינטות)} // מאפשר להוסיף כמה פונקציות לכפתורים שלנו // כך שכאשר אתה לוחץ על כפתור כלשהו, הוא שולח צ'ר מסוים על יציאה טורית // אני בטוח שאפשר לשלוח מחרוזות במקום תווים, זה יהיה יותר הגיוני אבל אני לא יודע איך לעשות את זה // פקודות בקרת מהירות void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // פקודות בקרת המנוע חלות על Servo_1_Foward () {port.write ('a'); } בטל Servo_1_Back () {port.write ('b'); } בטל Servo_2_Foward () {port.write ('c'); } בטל Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } בטל Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } בטל Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } בטל Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } בטל Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }
שלב 31: תמונות נוספות
מוּמלָץ:
זרוע רובוטית נשלטת על ידי Arduino עם 6 דרגות חופש: 5 שלבים (עם תמונות)
זרוע רובוטית נשלטת על ידי ארדואינו עם 6 דרגות חופש: אני חבר בקבוצת רובוטיקה ובכל שנה הקבוצה שלנו משתתפת בפייר מיני-מייקר שנתי. החל משנת 2014, החלטתי לבנות פרויקט חדש לאירוע של כל שנה. באותו זמן, היה לי כחודש לפני האירוע להכין משהו
כיצד להרכיב זרוע רובוט מעצימה (חלק 3: זרוע רובוט) - מבוססת על המיקרו: BITN: 8 שלבים
כיצד להרכיב זרוע רובוט מעצימה (חלק 3: זרוע רובוט) - מבוססת על המיקרו: BITN: תהליך ההתקנה הבא מבוסס על השלמת מצב המכשולים הימנעות. תהליך ההתקנה בחלק הקודם זהה לתהליך ההתקנה במצב מעקב אחר קווים. אז בואו נסתכל על הצורה הסופית של A
כיצד להרכיב זרוע רובוט מעצימה (חלק 2: רובוט למניעת מכשול) - מבוסס על המיקרו: ביס: 3 שלבים
כיצד להרכיב זרוע רובוט מעצימה (חלק 2: רובוט למניעת מכשול)-מבוסס על המיקרו: ביס: בעבר הצגנו את ארמביט במצב מעקב אחר קווים. לאחר מכן, אנו מציגים כיצד להתקין את ארמביט במניעת מצב מכשולים
כיצד להרכיב זרוע רובוט מעץ מרשים (חלק 1: רובוט למעקב אחר קווים)-מבוסס על המיקרו: ביט: 9 שלבים
כיצד להרכיב זרוע רובוט מעץ מרשים (חלק 1: רובוט למעקב אחר קווים)-מבוסס על המיקרו: ביט: לבחור העץ הזה יש שלוש צורות, הוא שונה ומרשים מאוד. אז בואו ניכנס לזה אחד אחד
זרוע רובוטית נשלטת מארדואינו מסופת הלגו: 6 שלבים
זרוע רובוטית נשלטת מארדואינו מסוף הלגו של Lego: תכננו מחדש שני מנועי לגו מיינדסטור ישנים לזרוע אוחזת הנשלטת על ידי Arduino Uno. זהו פרויקט Hack Sioux Falls שבו אתגרנו ילדים לבנות משהו מגניב עם Arduino