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

מודול היגוי לייזר DIY עבור Arduino: 14 שלבים (עם תמונות)
מודול היגוי לייזר DIY עבור Arduino: 14 שלבים (עם תמונות)

וִידֵאוֹ: מודול היגוי לייזר DIY עבור Arduino: 14 שלבים (עם תמונות)

וִידֵאוֹ: מודול היגוי לייזר DIY עבור Arduino: 14 שלבים (עם תמונות)
וִידֵאוֹ: VL53L1X Лазерный дистанционный датчик времени полета 400 см 2024, יולי
Anonim
Image
Image

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

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

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

שלב 1: אסוף את החלקים שאינם מודפסים בתלת-מימד

מכלול הלייזר מורכב מהחלקים הבאים:

  • 4 מיקרו סולנואידים
  • מראה אחת בגודל 1/2 אינץ '
  • ארבעה ברגים מסוג M3

הסולנואידים הספציפיים בהם השתמשתי נרכשו ב- eBay תמורת 1.45 $ כל אחד. המראה העגולה נמצאה במעבר מלאכה ב- HobbyLobby - חבילה של 25 עלתה לי פחות מ -3 דולר. אתה יכול גם למצוא מראות ב- eBay.

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

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

תזדקק ל- Arduino (השתמשתי ב- Arduino Nano) ודרך להניע את הסולנואידים. כפי שציין VajkF בתגובות, תוכל להשתמש בגשר H הוכן מראש, כגון אלה המבוססים על L298 או L9110. אלה זמינים בקלות ב- eBay תמורת כמה דולרים ויכולים לשמש גם להנעת מנועים ופרויקטים של רובוטיקה.

מכיוון שלא היה לי גשר H, בניתי דרייבר משלי מתוך רכיבים נפרדים:

  • ארבעה טרנזיסטורים דו קוטביים של NPN (השתמשתי ב- MPS3704)
  • ארבעה נגדים (השתמשתי בנגד 1.2k אוהם)
  • ארבע דיודות (השתמשתי ב- 1N4004)
  • סוללה 9V ומחבר סוללה

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

שלב 2: הדפס תלת מימד את מודול ההיגוי למראה

הדפס תלת מימד את מודול ההיגוי למראה
הדפס תלת מימד את מודול ההיגוי למראה
הדפס תלת מימד את מודול ההיגוי למראה
הדפס תלת מימד את מודול ההיגוי למראה

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

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

שלב 3: הרכיב את מודול הלייזר

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

שלב 4: הדפס את צווארון מצביע הלייזר

הדפס את צווארון מצביע הלייזר
הדפס את צווארון מצביע הלייזר
הדפס את צווארון מצביע הלייזר
הדפס את צווארון מצביע הלייזר

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

שלב 5: הרכבת מעגל הנהיגה

הרכיב את מעגל הנהיגה
הרכיב את מעגל הנהיגה

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

כל מעגל יתחבר לסיכת ארדואינו, שניים לשליטה בסולנואיד השמאלי והימני, ושניים עבור הסולנואידים למעלה ולמטה. אלה יצטרכו להיות מחוברים לסיכות בעלות יכולת PWM, כך:

  • פין 9: סולנואיד למעלה
  • פין 3: סולנואיד למטה
  • פין 11: סולנואיד שמאלי
  • פין 10: סולנואיד ימני

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

שלב 6: העלה את קוד המדגם

העלה את קוד המדגם
העלה את קוד המדגם

הקוד לדוגמא עודכן עם התכונות הבאות:

  • מתאים את תדר ה- PWM כך שהמנגנון כמעט שקט במהירויות נמוכות. הזמזום במבחן התנועה 1 נעלם לגמרי!
  • מוסיף כמשוואות מתח המבוססות על הנייר של Schimpf על מנת "ליינארי" את התגובה הלא לינארית של הסולנואידים.

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

נאמנות התוצאות משאירה לא מעט לבקש, אבל אני עדיין עובד על זה!:)

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

שלב 7: הורדת עוצמת הקול

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

כדי לפתור בעיה זו הגדלתי את תדירות ה- PWM בקוד:

#define PWM_FREQ_31372Hz 0x01 // מגדיר את תדר ה- PWM ל- 31372.55 Hz #מגדיר PWM_FREQ_3921Hz 0x02 // מגדיר את תדר PWM ל 3921.16 הרץ #מגדיר PWM_FREQ_980Hz 0x03 // מגדיר את תדר ה- PWM (TCR1_TWQTQ (TCR1_TQ1) & 0b11111000) | תדירות; // הגדר טיימר 1 (סיכות 9 ו -10) תדר TCCR2B = (TCCR2B & 0b11111000) | תדירות; // הגדר תדר טיימר 2 (סיכות 3 ו -11)}

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

שלב 8: כוונון המתחים להפחתת עיוות

כוונון המתחים להפחתת עיוות
כוונון המתחים להפחתת עיוות

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

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

הדברים הבאים מלווים אותך בתהליך שעברתי כדי לכוונן את המערכת ולשפר את מראה העקבות שהתקבלו!

שלב 9: שיפור התוכנה באמצעות מתמטיקה

לשכלל את התוכנה באמצעות מתמטיקה
לשכלל את התוכנה באמצעות מתמטיקה
לשכלל את התוכנה באמצעות מתמטיקה
לשכלל את התוכנה באמצעות מתמטיקה

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

קל למדוד את המונחים הבאים:

  • R - ההתנגדות של הסולנואיד שלי
  • l - אורך הסולנואיד
  • x - תזוזה של הבוכנה בסולנואיד
  • V - המתח על פני הסולנואיד

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

F = -kx

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

הערך של אלפא (α) היה מסובך. למרות שמשוואות 13 ו -14 הראו כיצד לחשב ערכים אלה מאזור הסולנואיד (A), מספר הסיבובים (N) וערכי החדירות המגנטית (μ), לא רציתי לקרוע סולנואיד כדי לספור את מספר סיבובים, וגם לא ידעתי את החומר שממנו עשוי ליבת הסולנואיד שלי.

שלב 10: בודק רכיבים לא יקר מציל את היום

בודק רכיבים לא יקר מציל את היום!
בודק רכיבים לא יקר מציל את היום!
בודק רכיבים לא יקר מציל את היום!
בודק רכיבים לא יקר מציל את היום!
בודק רכיבים לא יקר מציל את היום!
בודק רכיבים לא יקר מציל את היום!

אולם התברר שמשוואה 15 ו -16 נתנו לי את מה שהייתי צריך. היה לי בודק רכיבים זול M328 שרכשתי מאיביי תמורת 10 $. הוא הצליח להשתמש בו כדי למדוד את השראות הסולנואיד שלי ומצאתי שעל ידי לחיצה על האבזור בעומקים שונים נתנה לי ערכי אינדוקציה שונים.

מדידתו עם האבזור מוכנס במלואו נתנה לי את הערך של L (0).

אורך הסולנואיד שלי היה 14 מ מ, אז מדדתי את השראות עם האבזור בחמש עמדות וזה נתן לי ערכים שונים עבור L (x):

  • L (0.0) = 19.8 mH
  • L (3.5) = 17.7 mH
  • L (7.0) = 11.1 mH
  • L (10.5) = 9.3 mH
  • L (14) = 9.1 mH

לאחר מכן השתמשתי בגיליון אלקטרוני כדי לשרטט את הערכים שלי מול הערך של משוואה 15 ו -16, לבחירה מסוימת של מיקרו ואז גיוון את הבחירה שלי עד שמצאתי התאמה טובה. זה קרה כאשר μr היה 2.9, כפי שמוצג בתרשים.

שלב 11: מצא את קבוע האביב ק, פתר את הבעיה

Image
Image
ניתוח בעיות שוטפות ופתרונות אפשריים
ניתוח בעיות שוטפות ופתרונות אפשריים

היחיד שנותר היה K, קבוע האביב. מדדתי זאת על ידי הפעלת 9V לאחד הסולנואידים במכלול הציר הכפול שלי ומדידת המרחק בו הורידה את המראה כלפי מטה. עם ערכים אלה הצלחתי לפתור את המשוואות ל- K, שמצאתי שהיא בסביבות 10.41.

כעת היו לי הערכים הדרושים לי לחישוב משיכת הסולנואיד במיקומים שונים לאורך המכה. על ידי הגדרת F (x) השווה לכוח האביב מחוק הוק, אני יכול לפתור את המתח הנדרש V.

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

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

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

float positionToVoltage (float x) {

// שיקום כוח המופעל על ידי צירים (חוק הוק) ב x הרצוי. const float spring_F = -spring_K * (x - spring_X0); // מתח כזה שכוח המשיכה של הסולנואיד תואם // כוח השחזור של הצירים החוזר sqrt (-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp (-a*x/solenoid_len))); }

זה מוביל לספירלה הרבה יותר מעגלית מאשר במבחן התנועה המקורי שלי. המשימה הושלמה!

שלב 12: שאלות ותשובות אודות מעגל הנהג באמצעות רכיבים נפרדים

למה אני לא יכול לחבר את הסולנואיד ישירות לארדואינו?

זה עניין של כמה זרם Arduino יכול לספק מבלי לסבול נזק. זה בערך 40mA לסיכה. בידיעה כי Arduino פועל על 5V, אנו יכולים להשתמש בחוק אוהם כדי לחשב את ההתנגדות המינימלית הנדרשת של העומס (במקרה זה, הסולנואיד). חלוקת 5 וולט ב -0.040 אמפר נותנת לנו, 125 אוהם. אם לעומס יש התנגדות גדולה יותר, נוכל לחבר אותו ישירות לארדואינו, אחרת לא נוכל. סולנואיד קטן בדרך כלל בעל התנגדות של 50 אוהם, כך שלא נוכל להניע אותו ישירות מהארדואינו. אם היינו עושים זאת, זה היה מושך 100mA, וזה ברור יותר מדי.

מדוע אתה משתמש ב- 9V עבור הסולנואיד, אך ב- 5V עבור Arduino?

ה- Arduino פועל על 5V, אבל זה מעט מדי עבור סולנואיד. שימוש בטרנזיסטור מאפשר לנו לבחור מתח לסולנואיד שאינו תלוי ב- 5V המשמש עבור הארדואינו.

כיצד אוכל לדעת האם טרנזיסטור מתאים לפרויקט זה?

בדיוק כמו הארדואינו, הדרישה העיקרית היא שהזרם הזורם דרך הסולנואיד לא יעלה על הדירוג המרבי של הטרנזיסטור (בפרט, זרם האספן). אנו יכולים בקלות לחשב את התרחיש הגרוע ביותר על ידי מדידת ההתנגדות של הסולנואיד ולאחר מכן חלוקת מתח האספקה בכך. במקרה של זרם אספקת 9V לסולנואידים והתנגדות סולנואידית של 50 אוהם, התרחיש הגרוע ביותר מעמיד אותנו על 180mA. ה- MPS3704, למשל, מדורג עבור זרם אספן מרבי של 600 mA, מה שנותן לנו מרווח של כ -3.

כיצד אוכל לקבוע את הערך המינימלי של ההתנגדות שבין פלט הארדואינו לבסיס הטרנזיסטור?

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

האם יש ערך מקסימלי להתנגדות זו שאסור לי לחרוג ממנה?

מסתבר, כן. לטרנזיסטור יש מה שמכונה רווח זרם. לדוגמה, אם הרווח הוא 100, זה אומר שאם נכניס 1mA לבסיס, אז עד 100mA יזרום דרך העומס שהטרנזיסטור שולט בו. אם נכניס 1.8mA לבסיס, אז עד 180mA יזרום דרך העומס. מכיוון שחשבנו קודם לכן שב- 9V, 180mA זורם דרך הסולנואיד, אז זרם בסיס של 1.8mA הוא "הנקודה המתוקה", ופחות והסולנואיד שלנו לא יופעל לגמרי.

אנו יודעים שהארדואינו מכבה 5V ואנו רוצים ש 1.8mA של זרם יזרום, לכן אנו משתמשים בחוק אוהם (R = V/I) לחישוב ההתנגדות (R = V/I). 5V מחולק ב 1.8mA נותן התנגדות של 2777 אוהם. אז בהתחשב בהנחות שהנחנו, אנו מצפים שההתנגדות צריכה להיות בין 125 ל -2777 - בחירה במשהו כמו 1000 אוהם נותנת לנו מרווח בטיחות די טוב בכל מקרה.

שלב 13: ניתוח בעיות שוטפות ופתרונות אפשריים

ניתוח בעיות שוטפות ופתרונות אפשריים
ניתוח בעיות שוטפות ופתרונות אפשריים

האב טיפוס הנוכחי מראה פוטנציאל, אך נותרו מספר בעיות:

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

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

גיליון 2) נובע מרפיון בצימוד בין בוכנות הנהיגה לפלטפורמת המראה, הדבר גורם למראה לזעזע ולדלג במעברים בין ציר X ו- Y. תנועה פתאומית זו מובילה לפער כהה בצורת X שבו נקודת הלייזר עושה מהלך בלתי נשלט מהר יותר.

בעיה 3) מתרחשת מכיוון שלברירת המחדל של Arduino PWM יש רק 255 רמות ולא מעט כאלה מתבזבזים בגלל צורת עקומת המתח. ניתן לשפר זאת באופן משמעותי על ידי שימוש בטיימר 1, שהוא 16 סיביות ויכול להיות בעל 65536 ערכים ייחודיים.

סוגיה 4) מתרחשת מכיוון שהמראה ואבנית הזזה של הסולנואיד (בוכנות) מהווים כמות ניכרת של מסת זזה.

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

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

  • "מתמטיקה של פרופילי בקרת תנועה", צ'אק לוין (קישור)
  • "מוסברת תנועה מבוקרת מטומטמת", (קישור)

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

שלב 14: עבודה עתידית ויישומים אפשריים

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

  • מופעי לייזר לא יקרים לתקליטנים ו- VJs.
  • תצוגת וקטור אלקטרו-מכני למשחק ארקייד וינטאג 'כגון ה- Vectrex.
  • מדפסת 3D מסוג SLA מסוג שרף, ברוח תנועת RepRap, יכולה להדפיס מודול היגוי לייזר משלה.
  • צילום דיגיטלי או ייצוב תמונה אופטי למצלמות.
תחרות ארדואינו 2017
תחרות ארדואינו 2017
תחרות ארדואינו 2017
תחרות ארדואינו 2017

פרס שני בתחרות ארדואינו 2017

מוּמלָץ: