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

Arduino Uno עם ציר ומנוע: 19 שלבים
Arduino Uno עם ציר ומנוע: 19 שלבים

וִידֵאוֹ: Arduino Uno עם ציר ומנוע: 19 שלבים

וִידֵאוֹ: Arduino Uno עם ציר ומנוע: 19 שלבים
וִידֵאוֹ: 30 лучших советов и рекомендаций по Windows 10 на 2020 год 2024, יולי
Anonim
Image
Image
משאבים בשימוש
משאבים בשימוש

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

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

שלב 1: שימוש במשאבים

  • ציר טרפז בקוטר 8 מ"מ ובמגרש 2 מ"מ
  • ציר טרפז בקוטר 8 מ"מ ובמגרש 8 מ"מ
  • ערמון בציר 8x2
  • ערמון בציר 8x8
  • מסבים לצירים בקוטר 8 מ"מ
  • מדריך גלילי לינארי בקוטר 10 מ"מ
  • מסבי גלילה גליליים למדריכי 10 מ"מ
  • סוגריים למדריכים גליליים 10 מ"מ
  • מנועי NEMA 17
  • צימוד פיר
  • ארדואינו אונו
  • נהג DRV8825
  • מקלדת מטריצה 4x4
  • הצג את נוקיה 5110
  • חלקי פלסטיק שונים
  • ברגים ואומים
  • בסיס עץ
  • ספק כוח חיצוני 12V

שלב 2: אודות צירים - מה הם?

על צירים - מה הם?
על צירים - מה הם?

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

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

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

שלב 3: אודות צירים - חוטים בודדים וכדורים

אודות צירים - חוטי יחיד וכדור
אודות צירים - חוטי יחיד וכדור

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

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

שלב 4: אודות צירים - יישומים

אודות צירים - יישומים
אודות צירים - יישומים

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

חלק מהיישומים כוללים:

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

שלב 5: אודות צירים - פרמטרים

אודות צירים - פרמטרים
אודות צירים - פרמטרים

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

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

בואו להכיר טובות משותפות. נתחיל ב- STEP.

שלב 6: אודות צירים - שלב (עקירה ומהירות)

אודות צירים - שלב (עקירה ומהירות)
אודות צירים - שלב (עקירה ומהירות)

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

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

אם סיבוב של 2 מ"מ לכל סיבוב מסתובב ב -60 סל"ד (סיבוב אחד לשנייה), האום יזוז ב -2 מ"מ לשנייה.

שלב 7: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

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

F1: סהר - פוסו עובר מהמיקום הנוכחי למיקום שאני קובע

F2: יורד - פנה

F3: מהירות - האם אוכל לשנות את רוחב הדופק

F4: ESC

שלב 8: הרכבה - חומרים

הרכבה - חומרים
הרכבה - חומרים

A - 10 מ מ קווים ליניאריים

B - צירים טרפזיים שלבים 2 ו -8 מ מ

C - בסיס קידוחים

D - מסבים לצירים

E - מחזיקי מדריך

F - ערמונים

G - מסבים

H - זיווגים

אני - מנועים

J - חלקי פלסטיק שונים (סמנים, סוגרי מנוע, טריזים, תמיכה במקלדת ותצוגה

שלב 9: הרכבה - שלב 01

הרכבה - שלב 01
הרכבה - שלב 01

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

שלב 10: הרכבה - שלב 02

הרכבה - שלב 02
הרכבה - שלב 02

עדיין בעקבות קידוח הבסיס (C), מקמו את מסילות ההנחה (E) ואת המסבים (D). פירוט עבור משטח הפלסטיק (J) המשמש להתאמת גובה המיסבים.

שלב 11: הרכבה - שלב 03

הרכבה - שלב 03
הרכבה - שלב 03

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

שלב 12: הרכבה - שלב 04

הרכבה - שלב 04
הרכבה - שלב 04
הרכבה - שלב 04
הרכבה - שלב 04

הכנס את המנחה (A) והציר (B) במיסב (D) והתמיכה (E) שלהם, מול המנוע, ולאחר מכן הכנס את המדריך והציר במיסב (G) ובערמון (F) ובמפתח קצה הציר אנו מכניסים גם את המצמד (H). אנו לוקחים את שניהם עד שהם מגיעים לנקודות הסופיות שלהם (תמיכה ומנועים מנוגדים).

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

שלב 13: הרכבה - אלקטרוניקה

הרכבה - אלקטרוניקה
הרכבה - אלקטרוניקה
הרכבה - אלקטרוניקה
הרכבה - אלקטרוניקה
הרכבה - אלקטרוניקה
הרכבה - אלקטרוניקה

באמצעות מחזיק פלסטיק מודפס, הבטחנו את תצוגת נוקיה 5110 ומקלדת מטריקס 4x4. בחלל התחתון של המעמד יושב ה- Arduino Uno, הנהג DRV8825.

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

שלב 14: תוכנית חשמלית

תוכנית חשמלית
תוכנית חשמלית

תרשים החיווט פשוט. יש לנו את DRV8825 ואותן 17 מראות, כלומר אותו צעד שאנו שולחים לאחת עובר לשנייה. מה שמשתנה הוא שבאחד המנועים יש לי ציר 8 מ"מ ובשני ציר 2 מ"מ. ברור אם כן שהראשון, עם ציר 8 מ"מ, עובר מהר יותר. עדיין בתרשים נמצאים התצוגה ומקלדת 4x4, שצריכה להיות מטריצה.

שלב 15: קוד המקור

הכללת ספריות ויצירת אובייקטים

יש לנו כאן Lib שעשיתי, שהוא StepDriver.h. הוא מוכן לנהגים 8825, 4988 וגם לנהגי TB6600. אני יוצר בשלב זה את האובייקט DRV8825, d1.

// Biblioteca responsável por capturar a tecla que foi pressionada no teclado #include // Biblioteca responsável pelos graficos do display #include // Biblioteca responsável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - שעון סידורי (SCLK) // סיכה 5 - יציאת נתונים סידוריים (DIN) // סיכה 4 - בחירת נתונים/פקודה (D/C) // סיכה 3 - בחירת שבבי LCD (CS/CE) // סיכה 2 - איפוס LCD (RST) תצוגה Adafruit_PCD8544 = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

קבועים ומשתנים גלובליים

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

const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // define uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; בתים PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // pinos que indicam as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // pinos que indicam as colunas do teclado // instancia de Keypad, responsável por capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis por armazenar o valor digitado char customKey; מרחק ארוך לא חתום = 0; velocidade ארוך ללא סימן = 2000;

פונקציית קריאת מקלדת

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

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- לא חתום ארוך lerValor () {// Escreve בתפריט משנה של coleta os valores ללא תצוגה display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (לבן); display.print ("VALOR"); display.setTextColor (שחור); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (לבן); display.print ("CLR"); display.setTextColor (שחור); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (לבן); display.print ("F4"); display.setTextColor (שחור); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); אומץ מחרוזת = ""; char tecla = false;

לולאה מחכה ללחיצה על המקש

כאן אנו מסבירים תכנות לולאה, כלומר, היכן אתה מזין את הערכים.

// Loop infinito enquanto nao chamar o return while (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': מקרה '7': מקרה '8': מקרה '9': מקרה '0': אומץ += טקלה; display.print (tecla); display.display (); לשבור; // Se tecla CLR foi pressionada case 'c': // Limpa a string valor valor = ""; // Apaga o valor do display display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); לשבור; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); לשבור; // Se tecla F4 (ESC) foi pressionada case 'D': return -1; ברירת מחדל: הפסקה; }}} // Limpa o char tecla tecla = false; }}

פונקציית כונן מנוע

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

// Funcao responsavel por mover o motor -------------------------------------- מוביל חלל (לא חתום pulsos long, bool direcao) {for (i signed long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

להכין ()

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

הגדרת חלל () {// תצורה ניתן להציג ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (שחור); // תצורת מנהל התקן DRV8825 ----------------------------------------- // סיכה GND - אפשר (ENA) // סיכה 13 - M0 // סיכה 12 - M1 // סיכה 11 - M2 // סיכה 10 - איפוס (RST) // סיכה 9 - שינה (SLP) // סיכה 8 - שלב (STP) // סיכה 7 - כיוון (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sleep (LOW); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

לולאה () - חלק ראשון - תפריט ציור

לולאת void () {// Escreve o תפריט אין תוכנה ללא תצוגה ----------------------------------- תצוגה.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (לבן); display.print ("F1"); display.setTextColor (שחור); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (לבן); display.print ("F2"); display.setTextColor (שחור); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (לבן); display.print ("F3"); display.setTextColor (שחור); display.setCursor (17, 26); display.print ("VELOCIDADE");

לולאה () - חלק 2 - תפריט ציור

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (לבן); display.print ("F4"); display.setTextColor (שחור); display.setCursor (17, 38); display.print ("ESC"); display.display (); בול esc = false;

לולאה () - חלק 3 - ריצה

// Loop enquanto a tecla F4 (ESC) nao for pressionada while (! Esc) {// captura a tecla pressionada do teclado customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {// Trata a tecla apertada switch (customKey) {// Se tecla F1 foi pressionada case 'A': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } אחר {// רשום "Movendo" ללא תצוגה display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (לבן); display.print ("MOVENDO"); display.setTextColor (שחור); display.setCursor (2, 14); display.print (distancia); display.print ("פאסוס"); display.display ();

לולאה () - חלק 4 - ריצה

// Move o motor mover (distancia, LOW); // תפריט Volta ao esc = true; } לשבור; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } אחר {// רשום "Movendo" ללא תצוגה display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (לבן); display.print ("MOVENDO"); display.setTextColor (שחור); display.setCursor (2, 14); display.print (distancia); display.print ("פאסוס"); display.display ();

לולאה () - חלק 5 - ריצה

// Move o motor mover (distancia, HIGH); // תפריט Volta ao esc = true; } לשבור; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); אם (velocidade == -1) {esc = true; } אחר {// רשום "Velocidade" ללא תצוגה display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (לבן); display.print ("VELOCIDADE"); display.setTextColor (שחור); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");

לולאה () - חלק 6 - ריצה

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (לבן); display.println ("בסדר!"); display.setTextColor (שחור); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); עיכוב (2000); // תפריט Volta ao esc = true; } לשבור; // Se tecla F4 (ESC) foi pressionada case 'D': // Se tecla CLR foi pressionada case 'c': // Se tecla ENT foi pressionada case 'e': // Volta ao menu esc = true; ברירת מחדל: הפסקה; }}} // Limpa o char customKey customKey = false; }}

שלב 16: אודות צירים - תצורות מכונה

אודות צירים - תצורות מכונה
אודות צירים - תצורות מכונה

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

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

לדוגמה, אם מנוע 200 שלבים לכל סיבוב מחובר לנהג המוגדר ל- 1/16, אז יידרשו 16 x 200 פולסים למהפכה אחת של הציר, כלומר 3200 פולסים לכל סיבוב. אם לציר זה יש גובה של 2 מ"מ לכל סיבוב, יידרשו 3200 פולסים במנהג כדי שהאגוז יזוז 2 מ"מ.

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

שלב 17: מרלין

מרלין
מרלין

במארלין, למשל, אנו רואים בקטע @section motion:

/ **

* שלבי ציר ברירת מחדל ליחידה (צעדים / מ מ)

* דריסה עם M92

* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]

* /

#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}

בדוגמה זו, אנו יכולים להסיק כי לציר X ו- Y יש דיוק של 80 פולסים לזוז 1 מ מ, בעוד שה- Z זקוק ל 3200 פולסים וה- extruder E0 צריך 100.

שלב 18: GRBL

GRBL
GRBL

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

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

ניתן להגדיר את צירי Y ו- Z בהתאמה 101 $ ו- 102 $.

מוּמלָץ: