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

מייצב מצלמה כף יד: 13 שלבים (עם תמונות)
מייצב מצלמה כף יד: 13 שלבים (עם תמונות)

וִידֵאוֹ: מייצב מצלמה כף יד: 13 שלבים (עם תמונות)

וִידֵאוֹ: מייצב מצלמה כף יד: 13 שלבים (עם תמונות)
וִידֵאוֹ: 13 טיפים לעיצוב שמניע לפעולה | זומליינר #13 2024, יולי
Anonim
מייצב מצלמה כף יד
מייצב מצלמה כף יד

מבוא

זהו מדריך ליצירת אסדת ייצוב מצלמות כף יד בעלת 3 צירים עבור GoPro באמצעות לוח פיתוח של Digilent Zybo Zynq-7000. פרויקט זה פותח עבור מחלקת מערכות הפעלה בזמן אמת (CPE 439). המייצב משתמש בשלושה סרוו ו IMU כדי לתקן את תנועת המשתמש כדי לשמור על המצלמה ברמה.

דרושים חלקים לפרויקט

  • מועצת הפיתוח של Digilent Zybo Zynq-7000
  • פריצת IMU של Sparkfun - MPU 9250
  • 2 סרוואות HiTec HS-5485HB (קנה תנועה של 180 מעלות או תכנית מ -190 עד 180 מעלות)
  • 1 סרוו HiTec HS-5685MH (קנה תנועה של 180 מעלות או תכנית מ -190 עד 180 מעלות)
  • 2 סוגרי סרוו סטנדרטיים
  • לוח אחד
  • 15 חוטי מגשר זכר לזכר
  • 4 חוטי מגשר זכר לנקבה
  • דבק חם
  • אחיזה או ידית
  • דיבל עץ בקוטר 5 מ"מ
  • GoPro או מצלמה אחרת וחומרת הרכבה
  • ספק כוח המסוגל להוציא 5V.
  • גישה למדפסת תלת מימד

שלב 1: התקנת חומרה של Vivado

התקנת חומרה של Vivado
התקנת חומרה של Vivado

נתחיל ביצירת עיצוב הבלוק הבסיסי לפרויקט.

  1. פתח את Vivado 2016.2, לחץ על הסמל "צור פרוייקט חדש" ולחץ על "הבא>".
  2. תן שם לפרויקט שלך ולחץ על "הבא>".
  3. בחר את פרויקט RTL ולחץ על "הבא>".
  4. הקלד בשורת החיפוש xc7z010clg400-1 ולאחר מכן בחר את החלק ולחץ על "הבא>" ו"סיום ".

שלב 2: הגדרת עיצוב בלוק

כעת נתחיל ליצור את עיצוב הבלוק על ידי הוספה והגדרה של בלוק ה- IP של Zynq.

  1. בלוח השמאלי, תחת אינטגרטור IP, לחץ על "צור עיצוב בלוק" ולאחר מכן לחץ על "אישור".
  2. לחץ באמצעות לחצן העכבר הימני בכרטיסייה "תרשים" ובחר "הוסף IP …".
  3. הקלד "מערכת עיבוד ZYNQ7" ולחץ על הבחירה.
  4. לחץ פעמיים על בלוק Zynq שמופיע.
  5. לחץ על "ייבא הגדרות XPS" וייבא את הקובץ "ZYBO_zynq_def.xml" המסופק.
  6. עבור אל "תצורת MIO" ובחר "יחידת מעבד יישומים" והפעל את טיימרים 0 ושעוני כלבי השמירה.
  7. באותה כרטיסייה, תחת "ציוד היקפי לקלט/פלט", בחר ENET 0 (ושנה את התפריט הנפתח ל- "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. תחת "GPIO", סמן את GPIO MIO, ENET Reset, USB Reset ו- I2C Reset.
  9. כעת נווט אל "תצורת שעון". בחר FCLK_CLK0 תחת שעוני בד PL. לאחר מכן, לחץ על "אישור".

שלב 3: צור בלוק IP מותאם אישית של PWM

בלוק IP זה מאפשר ללוח לשלוח אות PWM החוצה כדי לשלוט בתנועת הסרווואים. העבודה התבססה במידה רבה על ההדרכה של Digitronix נפאל, שנמצאה כאן. לוגיקה נוספה כדי להאט את השעון כך שהדופק יוצא בקצב הנכון. הבלוק לוקח מספר בין 0 ל -180 וממיר אותו לדופק בין 750-2150 usec.

  1. כעת, בכרטיסייה כלים ליד הפינה השמאלית העליונה, לחץ על "צור וחבילת IP …" ולחץ על הבא.
  2. לאחר מכן בחר "צור היקפי AXI4 חדש" ולחץ על הבא.
  3. תן שם לבלוק ה- IP שלך ב- PWM (קראנו לו pwm_core) ולחץ על הבא ולאחר מכן לחץ על הבא גם בדף הבא.
  4. כעת לחץ על "ערוך IP" ולחץ על סיום. פעולה זו תפתח חלון חדש לעריכת בלוק pwm.
  5. בכרטיסייה "מקורות" ותחת "מקורות עיצוב", הרחב את 'pwm_core_v1_0' (החלף את pwm_core בשם שלך) ופתח את הקובץ שהופך לגלוי.
  6. העתק והדבק את הקוד המסופק תחת 'pwm_core_v1_0_S00_AXI.v' בקובץ ה- zip בתחתית הפרויקט. Ctrl + Shift + R והחלף את 'pwm_core' בשם שלך עבור בלוק ה- ip.
  7. לאחר מכן פתח את 'שם _v1_0' והעתק את הקוד המסופק בקובץ 'pwm_core_v1_0.v'. Ctrl + Shift + R והחלפת 'pwm_core' בשם.
  8. כעת נווט ללשונית 'חבילת IP - שם' ובחר "פרמטרים להתאמה אישית".
  9. בכרטיסייה זו יהיה פס צהוב בחלקו העליון הכולל טקסט מקושר. בחר באפשרות זו ו"פרמטרים מוסתרים "יופיע בתיבה.
  10. כעת עבור אל "GUI התאמה אישית" ולחץ באמצעות לחצן העכבר הימני על Pwm Counter Max ובחר "ערוך פרמטר …".
  11. סמן את התיבות "גלוי בממשק המשתמש להתאמה אישית" ו"ציין טווח ".
  12. שנה את התפריט הנפתח "סוג:" לטווח מספרים שלמים והגדר את המינימום ל- 0 ומקסימום ל 65535 וסמן את התיבה "הצג טווח". כעת לחץ על אישור.
  13. גרור את Pwm Counter Max מתחת לעץ 'עמוד 0'. כעת עבור אל "סקירה וחבילה" ולחץ על הלחצן "חבילה מחדש של IP".

שלב 4: הוסף בלוק PWM IP לעיצוב

הוסף PWM IP Block לעיצוב
הוסף PWM IP Block לעיצוב

נוסיף את בלוק ה- IP לעיצוב הבלוק כדי לאפשר למשתמש גישה לגוש ה- PWM IP באמצעות המעבד.

  1. לחץ באמצעות לחצן העכבר הימני בכרטיסיית התרשים ולחץ על "הגדרות IP …". נווט לכרטיסייה "מנהל מאגר".
  2. לחץ על כפתור הפלוס הירוק ובחר אותו. כעת מצא את ip_repo במנהל הקבצים והוסף זאת לפרויקט. לאחר מכן לחץ על החל ולאחר מכן אישור.
  3. לחץ באמצעות לחצן העכבר הימני בכרטיסיית התרשים ולחץ על "הוסף IP …". הקלד את שם בלוק ה- PWM IP שלך ובחר אותו.
  4. בחלק העליון של המסך צריך להיות פס ירוק, תחילה בחר "הפעל אוטומציה של חיבורים" ולחץ על אישור. לאחר מכן לחץ על "הפעל אוטומציה של בלוק" ולחץ על אישור.
  5. לחץ פעמיים על בלוק PWM ושנה את Pwm Counter Max ל- 1024 מ- 128.
  6. העבר את מצביע העכבר מעל PWM0 בבלוק PWM. צריך להיות עיפרון קטן שמופיע כשאתה עושה זאת. לחץ לחיצה ימנית ובחר "צור יציאה …" ולחץ על אישור כאשר ייפתח חלון. זה יוצר יציאה חיצונית להעביר את האות.
  7. חזור על שלב 6 גם עבור PWM1 ו- PWM2.
  8. מצא את סמל החץ הכפול המעגלי הקטן בסרגל הצד ולחץ על זה. הוא יחזיר את הפריסה ועיצוב הבלוק שלך צריך להיראות כמו בתמונה למעלה.

שלב 5: הגדר את עטיפת HDL והגדר קובץ אילוצים

הגדר את עטיפת HDL והגדר קובץ אילוצים
הגדר את עטיפת HDL והגדר קובץ אילוצים

כעת אנו הולכים לייצר את העיצוב ברמה גבוהה עבור עיצוב הבלוקים שלנו ולאחר מכן למפות את סיכות PWM0, PWM1 ו- PWM2 ל- Pmod בלוח ה- Zybo.

  1. עבור לכרטיסייה "מקורות". לחץ לחיצה ימנית על קובץ עיצוב הבלוק שלך תחת "מקורות עיצוב" ולחץ על "צור עטיפת HDL …". בחר "העתק עטיפה שנוצרה כדי לאפשר עריכות משתמשים" ולחץ על אישור. זה יוצר את העיצוב ברמה גבוהה עבור עיצוב הבלוק שיצרנו.
  2. ה- Pmod שאליו נצא הוא JE.
  3. תחת קובץ, בחר "הוסף מקורות …" ובחר "הוסף או צור אילוצים" ולחץ על הבא.
  4. לחץ על הוסף קבצים ובחר את הקובץ "ZYBO_Master.xdc" הכלול. אם תסתכל בקובץ זה תבחין שהכל אינו מתייחס למעט שש שורות "set_property" תחת "## Pmod Header JE". תבחין כי PWM0, PWM1 ו- PWM2 הם הארגומנטים לשורות אלה. הם ממפים לפין 1, פין 2 ופין 3 של ה- JE Pmod.

שלב 6: יצירת Bitstream

עלינו לייצר את זרם הסיביות כדי שעיצוב החומרה ייצא ל- SDK לפני שנמשיך הלאה.

  1. תחת "תוכנית וניפוי באגים" בסרגל הצד, בחר "צור Bitstream". פעולה זו תריץ סינתזה, ולאחר מכן יישום ולאחר מכן תיצור את זרם הסיביות לעיצוב.
  2. תקן את כל השגיאות שצצות, אך בדרך כלל ניתן להתעלם מאזהרות.
  3. עבור אל קובץ-> הפעל SDK ולחץ על אישור. פעולה זו תפתח את ה- SDK של Xilinx.

שלב 7: הקמת פרויקט ב- SDK

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

  1. התחל בהורדת הגרסה העדכנית ביותר של FreeRTOS כאן.
  2. חלץ הכל מההורדה וייבא את FreeRTOS ל- SDK על ידי לחיצה על קובץ-> ייבוא, ותחת "כללי" לחץ על "פרויקטים קיימים לסביבת עבודה" ולאחר מכן לחץ על הבא.
  3. עבור אל "FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702" בתוך התיקיה FreeRTOS. ייבא רק "RTOSDemo" ממיקום זה.
  4. כעת צור חבילת תמיכת לוח (BSP) על ידי לחיצה על קובץ-> חבילת תמיכה חדשה בלוח.
  5. בחר "ps7_cortexa9_0" ובדוק את "lwip141" ולחץ על אישור.
  6. לחץ לחיצה ימנית על התיקייה הכחולה RTOSDemo ובחר "הפניות לפרויקט".
  7. בטל את הסימון של "RTOSDemo_bsp" ובדוק את ה- BSP החדש שיצרנו זה עתה.

שלב 8: שינויים בקוד FreeRTOS

ניתן להפריד את הקוד שאנו מספקים ל -7 קבצים שונים. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h ו- iic_imu.h. הקוד ב- iic_main_thread.c הותאם מהספרייה של קריס ווינר, שניתן למצוא כאן. בעיקר הפכנו את הקוד שלו כדי לשלב משימות ולגרום לו לעבוד עם לוח ה- Zybo. הוספנו גם פונקציות לחישוב תיקון הכיוון של המצלמה. השארנו בכמה הצהרות הדפסה שימושיות לניפוי באגים. רובם מקבלים הערות אבל אם אתה מרגיש צורך אתה יכול לבטל אותם.

  1. הדרך הקלה ביותר לשנות את קובץ main.c היא להחליף את הקוד בקוד שהועתק מהקובץ main.c הכלול שלנו.
  2. כדי ליצור קובץ חדש, לחץ באמצעות לחצן העכבר הימני על תיקיית src תחת RTOSDemo ובחר קובץ מקור C. תן שם לקובץ הזה "iic_main_thread.c".
  3. העתק את הקוד מה" iic_main_thread.c "הכלול והדבק אותו בקובץ החדש שנוצר.
  4. חזור על שלבים 2 ו -3 עם שאר הקבצים.
  5. דורש הוראת קישור ב- gcc. כדי להוסיף זאת לנתיב הבנייה, לחץ לחיצה ימנית על RTOSDemo ובחר "הגדרות C/C ++ Build".
  6. ייפתח חלון חדש. נווט אל מקשר ARC v7 gcc-> ספריות. בחר את קובץ ההוספה הקטן בפינה השמאלית העליונה והקלד "m". זה יכלול את ספריית המתמטיקה בפרויקט.
  7. בנה פרויקט באמצעות Ctrl + B כדי לאשר שהכל עובד. בדוק את האזהרות שנוצרות אך ייתכן שתוכל להתעלם מהן.
  8. ישנם כמה מקומות שידרשו שינוי, בעיקר הנטייה המגנטית של המיקום הנוכחי שלך. נסביר כיצד לשנות זאת בחלק הכיול של ההדרכה.

שלב 9: הדפסה תלת מימדית למייצב

הדפסה תלת מימדית למייצב
הדפסה תלת מימדית למייצב

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

  1. השתמש בקבצים שסופקו להדפסת סוגר הזרוע והחזקת ה- GoPro.
  2. עליך להוסיף פיגומים לקובץ.stl.
  3. גזרו/נקו חלקים מעודפי הפיגומים לאחר ההדפסה.
  4. אתה יכול להחליף את דיבל העץ בחלק מודפס בתלת מימד אם תרצה בכך.

שלב 10: הרכבת החלקים

הרכבת החלקים
הרכבת החלקים

הם מספר חלקים להרכבת המייצב. הסוגריים שנרכשו מגיעים עם 4 ברגים הקשה עצמית ו -4 ברגים עם אגוזים. מכיוון שיש 3 סרוו, יש להקדים את אחת מקרני הסרו כדי לאפשר ל -2 מהברגים להיכנס.

  1. הלחמה 8 סיכות לפריצת ה- IMU, 4 מכל צד.
  2. ה- IMU מחובר לתושבת ההחזקה המודפסת בתלת -ממד עבור ה- GoPro במרכז התושבת.
  3. כוון את התושבת כך שחורי ההרכבה של סרוו יהיו בצד שמאל שלך. הנח את ה- IMU בקצה הקרוב אליך, כשהסיכות תלויות מהקצה. לאחר מכן, הנח את תושבת ה- GoPro על גבי ה- IMU, הדבק את ה- IMU ואת התושבת במקום על התושבת.
  4. חבר HS-5485HB לתושבת הסרוו המשולבת בזרוע המודפסת בתלת-ממד.
  5. הברג את סוגר ה- GoPro בסרוו המחובר לזרוע, וודא שהסרוו מוגדר כך שהוא נמצא באמצע טווח התנועה שלו.
  6. לאחר מכן, חבר את סרוו HS-5685MH לתושבת סרוו. לאחר מכן הקש על קרן סרוו עם אחד הברגים. כעת חבר את הסרוו לתחתית סוגר הסרוו האחרון.
  7. כעת צרף את הסרוו האחרון לתושבת אליה מוברג סרוו HS-5685MH. לאחר מכן, הברג את הזרוע בסרוו זה, וודא שהזרוע דפוקה כך שתוכל לנוע 90 מעלות לכל כיוון.
  8. לסיום בניית הג'ימבל, הוסיפו חתיכה קטנה של מקלון העץ לחיבור בין סוגר ה- GoPro לבין הזרוע המודפסת בתלת -ממד. הרכבת כעת את המייצב.
  9. לבסוף, אתה יכול להוסיף ידית המחוברת לתושבת השרוול התחתונה.

שלב 11: חיבור Zybo למייצב

חיבור זיבו למייצב
חיבור זיבו למייצב

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

  1. כדי לחבר את ה- Zybo למייצב, תזדקקו ל -15 מגשרים מגברים עד גברים ו -4 קופצים מגברים עד נקבות.
  2. ראשית, חבר שני מגשרים לאספקת החשמל 5V שלך לאורך מסילות + וה - של לוח הלחם. אלה יספקו את הכוח לסרוווס.
  3. לאחר מכן, חבר 3 זוגות מגשרים למסילות + ו - של לוח הלחם. אלה יהיו הכוח של כל אחד מהשרווסים.
  4. חבר את הקצה השני של מגשרים + ו- - לכל אחד מהשרווסים.
  5. חבר מגשר בין המסילה - של לוח הלחם לאחד מסיכות ה- GND ב- Zybo JE Pmod (ראה תמונה שלב 5). זה ייצור בסיס משותף בין לוח ה- Zybo לבין ספק הכוח.
  6. לאחר מכן חבר את חוט האות לסיכה 1, סיכה 2 וסיכה 3 של ה- JE Pmod. פין 1 מפות לסרוו התחתון, סיכות 2 מפות לסרוו שבקצה הזרוע, וסיכות 3 מפות לסרוו האמצעי.
  7. חבר את 4 חוטי הנקבה לסיכות GND, VDD, SDA ו- SCL של התפרצות ה- IMU. GND ו- VDD מתחברים ל- GND ו- 3V3 בסיכות JF. חבר את סיכת ה- SDA לסיכה 8 ואת ה- SCL לסיכה 7 ב- JF (ראה תמונה שלב 5).
  8. לבסוף, חבר את המחשב ללוח באמצעות כבל מיקרו USB. זה יאפשר תקשורת uart ויאפשר לך לתכנת את לוח ה- Zybo.

שלב 12: תיקון צפון אמיתי

תיקון צפון אמיתי
תיקון צפון אמיתי

כיול המגנומטר ב- IMU חשוב לפעולה הנכונה של המכשיר. הנטייה המגנטית, המתקנת את הצפון המגנטי לצפון האמיתי.

  1. כדי לתקן את ההבדל מהצפון המגנטי והאמיתי, עליך להשתמש בשילוב של שני שירותים, מפות Google ומחשבון השדות המגנטי של NOAA.
  2. השתמש במפות Google כדי למצוא את קו הרוחב והאורך של המיקום הנוכחי שלך.
  3. קח את קו האורך והרוחב הנוכחי שלך וחבר אותו למחשבון השדה המגנטי.
  4. מה שמוחזר הוא הנטייה המגנטית. חבר את החישוב הזה לקוד בשורה 378 של "iic_main_thread.c". אם הנטייה שלך היא מזרחה, לאחר מכן חיסור מערך הפיה, אם מערבה, הוסף לערך הפה.

*התמונה צולמה מתוך מדריך החיבור MPU 9250 של Sparkfun, שנמצא כאן.

שלב 13: הפעלת התוכנית

הפעלת התוכנית
הפעלת התוכנית

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

  1. ראשית, בנה הכל ב- SDK, ניתן לעשות זאת על ידי הקשה על Ctrl + B.
  2. וודא שספק החשמל מופעל והגדר אותו ל- 5V. בדוק שוב שכל החוטים הולכים למקומם הנכון.
  3. לאחר מכן, כדי להריץ את התוכנית, לחץ על המשולש הירוק במרכז העליון של שורת המשימות.
  4. כאשר התוכנית פועלת, כל סרוווס יתאפסו למצב 0 שלהם, אז היו מוכנים לזוז האסדה. לאחר האתחול של התוכנית, סרווס יחזרו למיקומם של 90 מעלות.
  5. פונקציית כיול מגנומטר תרוץ ותדפיס כיוונים למסוף UART, שאליו תוכל להתחבר באמצעות צג טורי כגון 'מרק' או הצג הטורי המסופק ב- SDK.
  6. הכיול יגרום לך להזיז את המכשיר באיור 8 למשך כעשר שניות. אתה יכול להסיר את השלב הזה על ידי תגובה לשורה 273 של "iic_main_thread.c". אם אתה מעיר את זה אתה צריך לבטל שורות 323 - 325 "iic_main_thread.c". ערכים אלה נאספו בתחילה מכיול המגנומטר שלמעלה ואז חוברו לערכים.
  7. לאחר הכיול קוד הייצוב יאתחל והמכשיר ישמור על יציבות המצלמה.

מוּמלָץ: