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

סורק נקודות XYZ באמצעות מקודדים סיבוביים מצילים: 5 שלבים
סורק נקודות XYZ באמצעות מקודדים סיבוביים מצילים: 5 שלבים

וִידֵאוֹ: סורק נקודות XYZ באמצעות מקודדים סיבוביים מצילים: 5 שלבים

וִידֵאוֹ: סורק נקודות XYZ באמצעות מקודדים סיבוביים מצילים: 5 שלבים
וִידֵאוֹ: משוואת מישור ב R3 עם נקודת וקטור 2024, יולי
Anonim
סורק נקודות XYZ באמצעות מקודדים סיבוביים מצילים
סורק נקודות XYZ באמצעות מקודדים סיבוביים מצילים

לאחר שרכשתי מספר לא מבוטל של מקודדים אופטיים סיבוביים שהושלכו ממקום העבודה שלי, לבסוף החלטתי לעשות איתם משהו מהנה/שימושי.

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

אספקה

מקודדים אופטיים וחיישנים אופטיים מתאימים

ארדואינו UNO

מגן אב טיפוס אופציונלי

מסילות מוטות פלדה

גישה למדפסת תלת מימד

שלב 1: המקודדים האופטיים

המקודדים האופטיים
המקודדים האופטיים
המקודדים האופטיים
המקודדים האופטיים
המקודדים האופטיים
המקודדים האופטיים

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

השתמשתי במד המשכיות כדי לאתר את תרשים החיווט עבור חיישני הצילום.

שלב 2: חלקים מודפסים בתלת מימד

חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד
חלקים מודפסים בתלת מימד

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

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

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

שלב 3: תרשים חיווט

תרשים חיווט
תרשים חיווט

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

החלטתי על 5mA עבור דיודות הפולטות בסדרה, במקודד המסוים הזה ירידת המתח על פני הדיודות היא 3.65V. אני משתמש באספק 5V מהארדואינו, שמשאיר 1.35V לנגד, ב 5mA זה מסתכם ב -270 אוהם.

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

שלב 4: קוד ארדואינו

קוד ארדואינו
קוד ארדואינו
קוד ארדואינו
קוד ארדואינו
קוד ארדואינו
קוד ארדואינו

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

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

שינויים = ערך_ new_value ^ מאוחסן;

כדי לקבל יותר רזולוציה מהמקודדים שלי הייתי צריך לעבד קצוות עולים ויורדים.

בהגדרה שלי הרזולוציה שלי היא 24 קליקים לכל 1 ס מ.

זה משאיר אותנו עם כמה תרחישים.

S1 קבוע 0 ו- S2 החל מ- 0 ל -1

S1 קבוע 0 ו- S2 עבר מ -1 ל -0

S1 הוא קבוע 1 ו- S2 עובר בין 0 ל -1

S1 הוא קבוע 1 ו- S2 עובר בין 1 ל -0

S2 קבוע 0 ו- S1 עבר מ- 0 ל -1

S2 קבוע 0 ו- S1 עבר מ -1 ל -0

S2 הוא קבוע 1 ו- S1 עובר בין 0 ל -1

S2 הוא קבוע 1 ו- S1 עובר בין 1 ל -0

תנאים אלה מובנים טוב יותר בלוחות האמת לעיל, גם כל תנאי מניב 'כיוון', ששמו שרירותי 0 או 1.

התרשימים נותנים לנו שני רמזים חיוניים:

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

2) התרשים עצמו הוא פשוט ה- XOR של אותות S1 ו- S2. (התרשים השני הוא ה- NOT של זה).

עכשיו הבנת הקוד פשוטה.

// לקרוא ב- PORT במקביל // זכור זוגות סמוכים שייכים לאותו מצב מקודד = PINB & 0x3f; // אילו סיכות השתנו אם יש מצב diff = hold ^; // אותות S1 ו- S2 הסמוכים ל- XOR לקבלת טבלת האמת // הדרך הקלה ביותר היא ליצור עותק של המצב הנוכחי // ולהעביר אותו ימינה בחיפוש סיביות אחד = מצב >> 1; // עכשיו סיביות מיושרות למצב XOR dir = lookup ^ state; // זכור, יש להפוך את הטבלה אם אחת מהקלטות נשארת קבועה, אין צורך בהצהרת IF // לשם כך. נכון לעכשיו סיבי הכיוון הרצויים // הם סיבית יד ימין של כל זוג במשתנה 'dir' // סיביות יד שמאל חסרות משמעות // למשתנה 'diff' יש את הביט ששנה את 'הסט' // כך שיש לנו '01' או '10' // XOR זה עם בייט 'dir' או // יהפוך או לא את החלק המשמעותי. dir ^= diff; // עדכן כעת החזק משתנה החזק = מצב; // אם כל אחד מהביטים השתנה עבור מקודד זה אם (diff & 0x03) {// לקבוע כיוון אם (dir & 0x01) {// בהתבסס על תוכנת הכלי והחיווט שלך ++ או ---z; } אחר {++ ז; }}} // זהה לשאר אם (diff & 0x0c) {if (dir & 0x04) {++ y; } אחר { -y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } אחר {++ x; }}

כאשר לוחצים על הכפתור אנו שולחים את ערך ה- XYZ הנוכחי לתוכנית מסוף.

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

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

שלב 5: סריקה ראשונה

סריקה ראשונה
סריקה ראשונה
סריקה ראשונה
סריקה ראשונה
סריקה ראשונה
סריקה ראשונה
סריקה ראשונה
סריקה ראשונה

איסוף הנקודות הוא תהליך איטי, אני מרצף את החללית בפינה השמאלית העליונה ומאפס את הארדואינו.

זה אפס את העמדה כבית.

לאחר מכן העבר את החללית למיקום על המטרה, החזק אותו יציב ולחץ על כפתור 'תצלום'.

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

שמור את הנתונים בקובץ. PCD והוסף את הכותרת

#. PCD v.7 - פורמט קובץ נתוני ענן גרסה.7 FIELDS x y z SIZE 4 4 4 TYPE F F F COUNT 1 1 1 WIDTH (ספירת הנקודות שלך) HEIGHT 1 VIEWPOINT 0 0 0 1 0 0 0 POINTS (ספירת הנקודות שלך)

שים את ספירת הנקודות בכותרת, זה קל לכל עורך שמספק לך מספרי שורה.

מעל הנקודות ניתן לראות ב- freeCad, לאחר מכן הן מיוצאות מקובץ freeCad כקובץ. PLY.

פתח את. PLY ב- MeshLab והציג את האובייקט. בוצע!!

מוּמלָץ: