- רכיבים נדרשים
- הכנת ה- ARM הרובוטי המודפס בתלת מימד
- תרשים מעגל
- צעדים המעורבים בתכנות LPC2148 לזרוע רובוטית
- הסבר קידוד
- בחירת מנוע סרוו לסיבוב באמצעות לחצני כפתור
- עבודת זרוע רובוטית פיק אנד פלייס
נשק רובוטי, הם אחד היצירות ההנדסיות המרתקות וזה תמיד מרתק לראות את הדברים האלה נוטים ומתניידים כדי לעשות דברים מורכבים בדיוק כמו שזרוע אנושית הייתה עושה. זרועות רובוטיות אלו ניתן למצוא בדרך כלל בתעשיות בקו ההרכבה המבצעות עבודות מכניות אינטנסיביות כמו ריתוך, קידוח, צביעה וכו '. לאחרונה פותחים גם זרועות רובוטיות מתקדמות בדיוק גבוה לביצוע פעולות כירורגיות מורכבות. אז במדריך זה בואו לבנות זרוע רובוטית פשוטה באמצעות מיקרו-בקר ARM7-LPC2148 לבחירה והצבת אובייקט על ידי שליטה ידנית בכמה פוטנציומטרים.
במדריך זה נשתמש ב- ARM רובוטי מודפס בתלת מימד שנבנה על ידי ביצוע ההליך ב- thingiverse. ה- ARM משתמש במנוע סרוו 4 לתנועת ARM רובוטית. אם אין לך מדפסת, אתה יכול גם לבנות את היד שלך באמצעות קרטונים פשוטים כמו שבנינו עבור פרויקט הזרוע הרובוטית שלנו Arduino. לקבלת השראה ניתן גם להתייחס לזרוע הרובוטית Record and Play שבנינו קודם באמצעות Arduino.
אז בואו נעשה את הדברים מוכנים לפרויקט שלנו
רכיבים נדרשים
- ARM רובוטי מדפסת תלת מימד
- ARM7-LPC2148
- מנוע סרוו SG-90 (4)
- פוטנציומטר 10k (4)
- לחצן לחצן (4)
- נורת LED (4)
- מתאם מתח DC 5V (1A)
- נגדים (10k (4), 2.2k (4))
- קרש לחם
- חוטי חיבור
הכנת ה- ARM הרובוטי המודפס בתלת מימד
הזרוע הרובוטית המודפסת בתלת ממד המשמשת במדריך זה נעשתה על ידי ביצוע התכנון שניתן על ידי EEZYbotARM אשר זמין ב Thingiverse. ההליך המלא להכנת הזרוע הרובוטית המודפסת בתלת-ממד ופרט ההרכבה עם הווידיאו נמצאים בקישור thingiverse, המשותף לעיל.
זוהי התמונה של הזרוע הרובוטית המודפסת בתלת מימד לאחר הרכבה עם 4 מנועי סרוו.
תרשים מעגל
התמונה הבאה מציגה את חיבורי המעגל של זרוע רובוטית מבוססת ARM.
חיבורי המעגל לפרויקט הם פשוטים. דאג להפעיל את מנועי הסרוו באמצעות מתאם מתח 5 וולט DC. לפוטנציומטרים ולחצני לחיצה נוכל להשתמש ב -3.3 וולט הזמינים ממיקרו-בקר LPC2148.
כאן אנו משתמשים ב -4 סיכות ADC של LPC2148 עם 4 פוטנציומטרים. וגם 4 סיכות PWM של LPC2148 המחוברות לסיכות PWM של מנוע הסרוו. חיברנו גם 4 לחצני כפתור כדי לבחור איזה מנוע לפעול. לכן, לאחר לחיצה על הכפתור פוטנציומטר מכובד משתנה כדי לשנות את מיקום מנוע הסרוו.
לחצני הלחיצה בקצה אחד המחובר ל- GPIO של LPC2148 נמתחים באמצעות נגר של 10k וקצה אחר מחובר עם 3.3V. כמו כן מחוברות 4 נוריות כדי לציין איזה מנוע סרוו נבחר לשנות את המיקום.
חיבורי מעגלים בין 4 מנוע סרוו ו- LPC2148:
LPC2148 | מנוע סרוו |
P0.1 | SERVO1 (PWM- כתום) |
P0.7 | SERVO2 (PWM- כתום) |
P0.8 | SERVO3 (PWM- כתום) |
P0.21 | SERVO4 (PWM- כתום) |
חיבורי מעגלים בין 4 פוטנציומטר ל- LPC2148:
LPC2148 | פוטנציומטר סיכה מרכזית שמאל - 0V GND של LPC2148 סיכה ימנית - 3.3V של LPC2148 |
P0.25 | פוטנציומטר 1 |
P0.28 | פוטנציומטר 2 |
P0.29 | פוטנציומטר 3 |
P0.30 | פוטנציומטר 4 |
חיבורי מעגל של 4 נוריות עם LPC2148:
LPC2148 | אנודת LED (קתודה של כל LED היא GND) |
P1.28 | LED1 (אנודה) |
P1.29 | LED2 (אנודה) |
P1.30 | LED3 (אנודה) |
P1.31 | LED4 (אנודה) |
חיבורי מעגל של 4 לחצני כפתור עם LPC2148:
LPC2148 | לחצן כפתור (עם נגר נפתח 10k) |
P1.17 | לחצן 1 |
P1.18 | לחצן 2 |
P1.19 | לחצן 3 |
P1.20 | לחצן 4 |
צעדים המעורבים בתכנות LPC2148 לזרוע רובוטית
לפני שתכנת עבור זרוע רובוטית זו, עלינו לדעת על יצירת PWM ב- LPC2148 ושימוש ב- ADC ב- ARM7-LPC2148. לשם כך, עיין בפרויקטים הקודמים שלנו בנושא ממשק סרוו עם LPC2148 וכיצד להשתמש ב- ADC ב- LPC2148.
המרת ADC באמצעות LPC2148
מכיוון שאנו צריכים לספק ערכי ADC לקביעת ערך מחזור חובה ליצירת פלט PWM לבקרת מיקום מנוע סרוו. עלינו למצוא ערכי ADC של הפוטנציומטר. מכיוון שיש לנו ארבעה פוטנציומטרים לשליטה בארבעה מנוע סרוו, אנו זקוקים ל -4 ערוצי ADC של LPC2148. כאן במדריך זה אנו משתמשים בסיכות ADC (P0.25, P0.28, P0.29, P0.30) של ערוצי ADC של 4,1,2,3 בהתאמה קיימים ב- LPC2148.
יצירת אותות PWM עבור מנוע סרוו באמצעות LPC2148
כשאנחנו צריכים ליצור אותות PWM לשליטה במיקום מנוע סרוו. עלינו לקבוע את מחזור החובה של PWM. יש לנו ארבעה מנועי סרוו המחוברים לזרוע הרובוטית ולכן אנו זקוקים לערוץ 4 PWM של LPC2148. כאן במדריך זה אנו משתמשים בסיכות PWM (P0.1, P0.7, P0.8, P0.21) של ערוצי PWM של 3,2,4,5 בהתאמה קיימים ב- LPC2148.
תכנות והבהוב של קובץ Hex ל- LPC2148
כדי לתכנת ARM7-LPC2148 אנו זקוקים ל uVision שלל ומבזק קוד HEX לכלי LPC2148 Flash Magic. כאן משתמשים בכבל USB לתכנות ARM7 סטיק דרך יציאת מיקרו USB. אנו כותבים קוד באמצעות Keil ויוצרים קובץ hex ואז קובץ HEX מהבהב למקל ARM7 באמצעות Flash Magic. למידע נוסף על התקנת keVision ו- Flash Magic וכיצד להשתמש בהם, עקוב אחר הקישור תחילת העבודה עם ARM7 LPC2148 Microcontroller ותכנת אותו באמצעות Keil uVision.
הסבר קידוד
התוכנית המלאה לפרויקט זרוע רובוטית זו ניתנת בסוף ההדרכה. עכשיו בואו נראה את התכנות בפירוט.
קביעת תצורה של PORT של LPC2148 לשימוש ב- GPIO, PWM ו- ADC:
באמצעות רישום PINSEL1 כדי לאפשר את ערוצי ADC- ADC0.4, ADC0.1, ADC0.2, ADC0.3 עבור הסיכות P0.25, P0.28, P0.29, P0.30. וגם, עבור PWM5 לסיכה P0.21 (1 << 10).
# הגדר AD04 (1 << 18) // בחר פונקציה AD0.4 עבור P0.25 # הגדר AD01 (1 << 24) // בחר פונקציה AD0.1 עבור P0.28 # הגדר AD02 (1 << 26) / / בחר פונקציה AD0.2 עבור P0.29 # הגדר AD03 (1 << 28) // בחר פונקציה AD0.3 עבור P0.30 PINSEL1 - = AD04 - AD01 - AD02 - AD03 - (1 << 10);
שימוש ברישום PINSEL0 להפעלת ערוצי PWM PWM3, PWM2, PWM4 לסיכות P0.1, P0.7, P0.8 של LPC2148.
PINSEL0 = 0x000A800A;
באמצעות רישום ה- PINSEL2 כדי לאפשר את פונקציית הסיכה GPIO עבור כל הפינים ב- PORT1 המשמשים לחיבור נורית הלחצן והלחצן.
PINSEL2 = 0x00000000;
כדי להפוך את סיכות LED לפלט וסיכות כפתור כקלט, נעשה שימוש במרשם IODIR1. (0 עבור INPUT ו- 1 עבור OUTPUT)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30) - (1 << 31));
בעוד שמספרי הסיכה מוגדרים כ-
#define SwitchPinNumber1 17 // (מחובר עם P1.17) #define SwitchPinNumber2 18 // (מחובר עם P1.18) #define SwitchPinNumber3 19 // (מחובר עם P1.19) #define SwitchPinNumber4 20 // (מחובר עם P1. 20) #define LedPinNumber1 28 // (מחובר עם P1.28) #define LedPinNumber2 29 // (מחובר עם P1.29) #define LedPinNumber3 30 // (מחובר עם P1.30) #define LedPinNumber4 31 // (מחובר עם P1.31)
קביעת תצורה של הגדרת המרה של ADC
בשלב הבא מוגדר מצב ההמרה של ADC והשעון עבור ADC באמצעות הרישום AD0CR_setup.
AD0CR_setup ארוך ולא חתום = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // הגדרת מצב ADC
בעוד ש- CLCKDIV, מצב פרץ ו- PowerUP מוגדרים כ-
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 on and 0 for off #define PowerUP (1 << 21)
הגדרת השעון להמרת ADC (CLKDIV)
זה משמש לייצור השעון עבור ADC. 4Mhz ADC שעון (ADC_CLOCK = PCLK / CLKDIV) שבו "CLKDIV-1" משמש בפועל, במקרה שלנו PCLK = 60mhz
מצב פרץ (Bit-16): ביט זה משמש להמרת BURST. אם סיבית זו מוגדרת, מודול ה- ADC יבצע את ההמרה עבור כל הערוצים שנבחרו (SET) בסיביות SEL. הגדרת 0 בסיבית זו תשבית את המרת BURST.
מצב כיבוי (Bit-21): זה משמש להפעלת או כיבוי ADC. הגדרה (1) בסיבית זו מוציאה את ADC ממצב כיבוי והופכת אותו לפעולה. ניקוי סיבית זה יכבה את ה- ADC.
קביעת תצורה של הגדרת המרה של PWM
ראשית אפס והשבית דלפק עבור PWM באמצעות PWMTCR הרשמה והגדר את PWM Timer Prescale Register עם ערך prescaler.
PWMTCR = 0x02; PWMPR = 0x1D;
לאחר מכן קבע את המספר המרבי של ספירות במחזור אחד. זה נעשה ברישום התאמות 0 (PWMMR0). כיוון שיש לנו 20000 שכן זהו גל PWM של 20msecs
PWMMR0 = 20000;
אחרי זה קבע את הערך למחזור חובה ברשומות ההתאמה, אנו משתמשים ב- PWMMR4, PWMMR2, PWMMR3, PWMMR5. כאן אנו קובעים ערכים ראשוניים של 0 אלפיות שנייה (Toff)
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
לאחר מכן הגדירו את רישום בקרת ההתאמה של PWM לגרום לאיפוס נגד כאשר מתרחש רישום ההתאמה.
PWMMCR = 0x00000002; // אפס במשחק MR0
לאחר מכן, תפס PWM Enable Register כדי לאפשר שימוש בערך ההתאמה (PWMLER)
PWMLER = 0x7C; // הפעלת תפס עבור PWM2, PWM4, PWM4 ו- PWM5
אפס את מונה הטיימר באמצעות מעט בקובץ PWM Timer Control (PWMTCR) וגם הוא מאפשר את ה- PWM.
PWMTCR = 0x09; // אפשר PWM ומונה
לאחר מכן הפעל את יציאות ה- PWM והגדר את ה- PWM במצב מבוקר קצה יחיד במרשם בקרת PWM (PWMPCR).
PWMPCR = 0x7C00; // אפשר PWM2, PWM4, PWM4 ו- PWM5, PWM מבוקר בקצה יחיד
בחירת מנוע סרוו לסיבוב באמצעות לחצני כפתור
יש לנו ארבעה כפתורי לחיצה המשמשים לסיבוב ארבעה מנועי סרוו שונים. על ידי בחירת כפתור לחיצה אחד ושינוי הפוטנציומטר המתאים, ערך ADC מגדיר את מחזור החובה ומנוע הסרוו המקביל משנה את מיקומו. לקבלת הסטטוס של מתג הלחיצה
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
לכן, על פי תלות בערך המתג שהוא HIGH המרת ADC תופסת מקומות ולאחר המרה מוצלחת של ערך ADC (0 עד 1023), היא ממופה במונחים של (0 עד 2045) ואז ערך מחזור החובה נכתב ל (PWMMRx) סיכת PWM המחוברת למנוע סרוו. כמו כן, נורית LED מופעלת HIGH כדי לציין איזה מתג נלחץ. להלן דוגמא ללחצן הלחיצה הראשון
אם (switchStatus1 == 1) { IOPIN1 = (1 <
עבודת זרוע רובוטית פיק אנד פלייס
לאחר העלאת קוד ל- LPC2148, לחץ על כל מתג וגוון את הפוטנציומטר המתאים כדי לשנות את מיקום הזרוע הרובוטית.
כל מתג ופוטנציומטר שולטים בכל תנועת סרוו שהיא תנועת שמאל או ימין בסיס, תנועה למעלה או למטה, קדימה או אחורה ואז האחיזה כדי להחזיק ולשחרר תנועה. הקוד המלא עם סרטון עבודה מפורט ניתן להלן.