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

מונה נימה חכם למדפסת תלת -ממד: 5 שלבים (עם תמונות)
מונה נימה חכם למדפסת תלת -ממד: 5 שלבים (עם תמונות)

וִידֵאוֹ: מונה נימה חכם למדפסת תלת -ממד: 5 שלבים (עם תמונות)

וִידֵאוֹ: מונה נימה חכם למדפסת תלת -ממד: 5 שלבים (עם תמונות)
וִידֵאוֹ: הדף היומי | מסכת בבא קמא דף עט | הרב פנחס יוסף אקרב 2024, נוֹבֶמבֶּר
Anonim
מונה נימה חכם למדפסת תלת מימד
מונה נימה חכם למדפסת תלת מימד

למה לטרוח לספור נימה? כמה סיבות:

הדפסים מוצלחים דורשים מכבש מכויל כראוי: כאשר ה- gcode אומר למכשיר להזיז את נימה 2 מ"מ, הוא צריך לזוז 2 מ"מ בדיוק. דברים רעים קורים אם זה מוחץ או מתחת. מונה מכויל היטב יכול לשמור על מכבש מכובד

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

מדידת תנועת הנימה גם תודיע לי מתי החלה ההדפסה ומתי היא נפסקה

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

זה מגניב

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

אספקה

מקודד רוטרי

לוח dev מבוסס ESP32

צג OLED I2C (יחידת שני צבעים נראית מגניבה במיוחד)

כפתור רגעי זעיר

מיסב 608ZZ משומן

שני טבעות O מחנות החומרה (~ 33 מ"מ מזהה x ~ 1.5 מ"מ קוטר פרופיל - ראה הערות)

שני ברגים הקשה עצמית 2.5 מ"מ למארז

שני ברגים, אגוזים ודיסקיות של 4 מ"מ לחיבור התושבת למדפסת שלך

חבורה של חוטים

מדפסת תלת מימד וקצת נימה

שלב 1: בחר מקודד סיבובי

בחר מקודד סיבובי
בחר מקודד סיבובי
בחר מקודד סיבובי
בחר מקודד סיבובי

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

אם זה שווה לעשות, זה שווה לעשות יותר מדי. אז קניתי מקודד גדול וידידותי, 360 דופק לכל מהפכה ובניתי את הפרויקט שלי סביבו. זה שבחרתי היה מקודד סיבוב אופטי סיבוב אופטי, מסוג LPD3806-360BM-G5-24C. אבל כל מקודד הגון יספיק.

שלב 2: הוסף גלגלת וסרק

הוסף גלגלת וסרק
הוסף גלגלת וסרק

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

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

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

שלב 3: קידוד

Image
Image

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

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

void setUpPins () {

pinMode (ENCODER_PIN_1, INPUT_PULLUP); pinMode (ENCODER_PIN_2, INPUT_PULLUP); pinMode (ZERO_BTN_PIN, INPUT_PULLUP); attachInterrupt (ENCODER_PIN_1, encoderPinDidChange, CHANGE); attachInterrupt (ZERO_BTN_PIN, zeroButtonPressed, CHANGE); } void IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {מיקום += 1; } אחר {מיקום -= 1; }} void IRAM_ATTR zeroButtonPressed () {// handle zero and reset}

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

הקוד המלא נמצא ב- Github.

כמה הערות על הקוד:

כדי להתאים את זה למבנה שלך, כל מה שאתה צריך הוא הרזולוציה (encoderPPR) - בפולסים לכל סיבוב, שהוא בדרך כלל כפול מהמפרט הנקוב - והרדיוס של הגלגלת (wheelRadius). ערכים אלה, בתוספת ה- ssid והסיסמה של ה- wifi שלך והסיכות הספציפיות המחוברות לכפתור, מקודד ומסך OLED, כולם נכנסים ל- config.h

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

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

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

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

יש חבורה של קוד נוסף בדוגמא שלי כדי (א) ליצור ולתחזק חיבור רשת עם WiFi ו- mDNS, (ב) להביא את הזמן משרת NTC כדי שאוכל לחתום בזמן על התראות ההתחלה והסיום שלי ולהציג שעון צהוב. ב- OLED שלי ו- (C) מטפלים בעדכוני OTA כך שלא אצטרך לחבר את הלוח שלי פיזית ל- Mac שלי לעדכוני קוד. כרגע, הכל בקובץ C ++ מונוליטי אחד, רק כי לא לקחתי את הזמן לארגן אותו טוב יותר

השתמשתי באפליקציית Prowl iOS הנפלאה (והחינמית) כדי לשלוח הודעות דחיפה לטלפון שלי ללא יותר משיטות HTTP Get

כדי לפתח את הקוד ולהבזק את הלוח, השתמשתי ב- PlatformIO המרהיב הפועל על קוד Visual Studio, שניהם בחינם

לפרויקט שלי השתמשתי בספריות הבאות: u8g2 מאת אוליבר, millised by Paul Stoffregen ו- HTTPClient מאת Markus Sattler, המגיעה עם פלטפורמת Espressif ESP32. כל השאר מגיע עם ספריית Arduino או עם פלטפורמת ESP32 ב- PlatformIO

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

שלב 4: חיווט

תִיוּל
תִיוּל

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

הדרישה הראשונה הייתה מתח האספקה 5V של המקודד הסיבובי שלי. מתוך לוחות ה- ESP32 השונים שהיו לי בארון, רק כמה סיפקו 5V אמיתי בסיכת ה- Vcc כשהם מופעלים באמצעות USB. (האחרים מדדו 4.5-4.8V, שבמקרה שהמתמטיקה שלך גרועה היא נמוכה מ -5V. הלוח בו השתמשתי היה Wemos Lolin32.

לאחר מכן, מגיעים שני סיכות האותות המקודדות הסיבוביות. מכיוון שאני משתמש בפסיקות, החשש העיקרי הוא שהסיכות שבהן אני משתמש לא מפריעות לשום דבר. מסמכי ESP32 קובעים כי לא ניתן להשתמש ב- ADC2 במקביל ל- WiFi, כך שלצערי פירושו שאני לא יכול להשתמש באחד מהסיכות של ADC2 GPIO: 0, 2, 4, 12, 13, 14, 15, 25, 26, או 27. בחרתי 16 ו -17.

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

לבסוף, חבר את חוט הארקה המקודד הסיבובי ל … תוף גליל … את סיכת הארקה.

לאחר מכן, כפתור הלחץ אפס/איפוס מתחבר בין הקרקע לסיכה פנויה נוספת (בחרתי ב- GPIO 18).

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

לבסוף, ה- OLED, אם הוא עדיין לא מחובר ללוח שלך, צריך רק ארבעה סיכות: נתוני 3V3, קרקע, שעון i2c ו- i2c. בלוח ה- dev שלי, השעון והנתונים הם 22 ו -21 בהתאמה.

שלב 5: הדפס את החלקים

הדפס את החלקים
הדפס את החלקים

תכננתי שבעה חלקים לבנייה זו:

הגלגלת, המתקנת ישירות על ציר המקודד הסיבובי

הבטלן, שמתאים מעל מיסב 608ZZ (הסר את השקעים ושפשף עם WD40 כך שהוא מסתובב בחופשיות)

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

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

המארז (למטה) להכיל את לוח ה- ESP32 dev שלי, עם מקום לכבל ה- USB בצד ועוד בחלקו העליון למחבר שהוספתי לחוטי המקודד שלי. זה נועד להתאים ל- Wemos Lolin32, כך שתצטרך אולי לשנות מעט את העיצוב הזה כדי להתאים ללוח אחר

המארז (למעלה) להחזיק את מסך OLED, עוד ספירלה לכפתור האפס / איפוס

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

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

חבר הכל יחד, צירף למדפסת שלך (ייתכן שתידרש קצת יצירתיות כאן), ואתה מוכן לצאת לדרך.

מוּמלָץ: