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

כלי מדידת קצב הזנה CNC עשוי גרוטאות: 5 שלבים
כלי מדידת קצב הזנה CNC עשוי גרוטאות: 5 שלבים

וִידֵאוֹ: כלי מדידת קצב הזנה CNC עשוי גרוטאות: 5 שלבים

וִידֵאוֹ: כלי מדידת קצב הזנה CNC עשוי גרוטאות: 5 שלבים
וִידֵאוֹ: Our BIGGEST Machine for The Workshop! | Huron LU Milling Machine 2024, יולי
Anonim
כלי מדידת קצב הזנה CNC עשוי גרוטאות
כלי מדידת קצב הזנה CNC עשוי גרוטאות

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

שלב 1: חומרים, כלים, מכשירים המשמשים להפעלת הפרויקט

כשהתחלתי לעבוד על זה, חשבתי רשימה קצרה של הדברים שנצטרך:

  • מנגנון עגלת מדפסת מפורק
  • כלי יד כדי לשנות את זה
  • מלחם, הלחמה, חוטים
  • מולטימטר
  • אוסצילוסקופ או מנתח לוגי - אין זה הכרחי לחלוטין
  • ספק כוח
  • מִיקרוֹסקוֹפּ
  • Arduino nano + pinout
  • מחשב עם Arduino IDE, Visual Studio 2008 Express + כלי מיפוי MS מותקנים
  • (MPU6050 - בסופו של דבר לא השתמשתי בזה)
  • מוכן לחפש כל מה שאתה לא יודע איך לעשות

בהתחלה חשבתי שלוח MPU6050 יאפשר לי למדוד את קצב ההזנה על כל שלושת הצירים בבת אחת. כשהייתי עם מד התאוצה בתוכו, הייתי בטוח שסיכום נתוני מד התאוצה ייתן לי את הערך הרצוי - המהירות בכל ציר. לאחר הורדה ושינוי קטע Arduino שהציג נתונים גולמיים על הצג הסדרתי, כתבתי תוכנת מחשב קטנה ב- Visual Studio שעיבדה את הנתונים ושרטטתי אותם על תרשים לצורך פירוש קל יותר. הייתי צריך להוריד הן את Visual Studio C# Express 2008 והן את כלי התרשימים לשם כך.

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

שלב 2: דברים שצריך לבצע

דברים שצריך לעשות
דברים שצריך לעשות
דברים שצריך לעשות
דברים שצריך לעשות
דברים שצריך לעשות
דברים שצריך לעשות
דברים שצריך לעשות
דברים שצריך לעשות

הנדסה הפוכה

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

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

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

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

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

חיבור הארדואינו

חיבור ה'חיישן 'החדש הזה קל מאוד. פשוט חבר את יציאות החיישן ל- D2 ו- D3 (סיכות בעלות הפרעות!), ואת קווי אספקת החשמל והקידוד יכול להתחיל.

שלב 3: קידוד Arduino

קידוד Arduino
קידוד Arduino

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

  • בכיוון אחד שלב A הוא הגיון גבוה בכל שלב B עולה קצה
  • בשלב השני כיוון A נמוך בהגיון בכל שלב B עולה

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

בקיצור, הקושחה עושה את הדבר הבא בפונקציית הלולאה:

  1. בודק את מאגר הקבלה הטורי אם יש נתונים נכנסים
  2. אם יש נתונים נכנסים, בדוק אם זה '1' או לא
  3. אם זה '1', המשמעות היא שתוכנת המחשב האישי מבקשת את ערך הנגד
  4. לשלוח את ערך הנגד למחשב באמצעות סידורי
  5. להתחיל מחדש ב 1.

עם זאת, הכדור נמצא כעת במגרש של תוכנת ה- PC. בואו ניכנס לזה!

שלב 4: תוכנת Visual Studio C#

מטרת התוכנית VS C# הייתה להעביר את נטל החישוב מהארדואינו למחשב האישי. תוכנה זו מקבלת את הנתונים ש- Arduino מספקת, מחשבת ומציגה את המהירות בצורה של גרף.

מה שעשיתי לראשונה היה לחפש בגוגל כיצד לבצע תקשורת טורית ב- C#. מצאתי הרבה מידע טוב ב- MSDN.com יחד עם דוגמה טובה, ואז פשוט זרקתי את מה שאני לא צריך - בעצם הכל חוץ מקטע הקריאה. הגדרתי את יציאת ה- COM ואת המהירות המתאימה לזו של הארדואינו, ואז פשוט ניסיתי כמה ניסיונות והזרקתי את כל מה שנכנס ליציאה הטורית לתיבת טקסט מרובת שורות.

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

אם אינך יכול לראות את פקד התרשים בארגז הכלים שלך VS, תוכל לחפש בגוגל את הבעיה ולמצוא את הפתרון כאן (חפש תשובה מס '1): קישור

עקרון המדידה

כדי למצוא את הקשר בין מספר הספירות והמרחק שהראש עובר, אפסנו את ערך הספירה, הזזנו את ראש המדפסת 100 מ"מ ביד, וראינו את השינוי בספירות. לבסוף הגענו לפרופורציה הבאה: ספירה אחת = 0.17094 מ"מ.

מכיוון שאנו יכולים לבדוק את המרחק ונוכל למדוד את הזמן בין הדגימות, אנו יכולים לחשב את הקצב שבו מתרחשת שינוי המיקום - אנו יכולים לחשב את המהירות!

יש תזמון תוכנה גס של 50ms הודות ל- TMR0, אך שמנו לב כי תזמונים אלה אינם מדויקים מדי. למעשה, לאחר כמה מדידות מהירות תוכנה, גילינו ש- 50ms בזמן אינו 50ms כלל. המשמעות היא שהדגימות לא נלקחו במרווח קבוע, כך שגם בחישוב המהירות לא ניתן היה להשתמש בבסיס זמן קבוע. ברגע שמצאנו את הבעיה הזו, היה קל להמשיך הלאה: לקחנו את ההבדל במרחק והפרש הזמן וחישבנו את המהירות כ- D_distance/D_time (במקום D-distance/50ms).

כמו כן, מכיוון שהמשוואה שלנו תחזיר את המהירות ביחידות של mm/50ms, עלינו להכפיל זאת ב- 1200 כדי לקבל את המרחק שהראש יגיע תוך דקה אחת, ב- [mm/minute].

הערה: תוכנת השליטה בטחנת CNC של Mach 3 מגדירה את קצבי ההזנה ביחידות [mm/דקה]

סִנוּן

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

התאמות עדינות לתוכנה

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

שלב 5: תוצאות

תוצאות
תוצאות
תוצאות
תוצאות
תוצאות
תוצאות
תוצאות
תוצאות

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

עם זאת, נראה כי מאך 3 מטפל בהגדרות המהירות הללו בצורה מדויקת למדי, אך כעת אנו יודעים בוודאות:)

אני מקווה שנהנית מההנחיה הקצרה הזו בנושא הנדסה לאחור והפיכת מים ליין!

לחיים!

מוּמלָץ: