فهرست مطالب:
- تدارکات
- مرحله 1: رمزگذار روتاری را انتخاب کنید
- مرحله 2: یک قرقره و بیکار اضافه کنید
- مرحله 3: کد نویسی
- مرحله 4: سیم کشی
- مرحله 5: قطعات را چاپ کنید
تصویری: شمارنده فیلتر پرینتر سه بعدی هوشمند: 5 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
چرا زحمت شمارش فیلامنت را می کشیم؟ چند دلیل:
چاپ های موفق نیاز به یک اکسترودر کالیبره شده دارند: وقتی gcode به اکسترودر می گوید که رشته را 2 میلی متر حرکت دهید ، باید دقیقاً 2 میلی متر حرکت کند. اگر بیش از حد اکسترود شود یا خارج شود ، اتفاقات بدی رخ می دهد. یک شمارنده کالیبره شده می تواند اکسترودر را صادق نگه دارد
دستگاه های برش برآورد می کنند که تعداد کل رشته مورد نیاز برای چاپ (در طول و وزن) چقدر است و من می خواهم این مقادیر را بررسی کنم
همچنین با اندازه گیری حرکت فیلامنت ، زمان شروع چاپ و متوقف شدن آن را به من اطلاع دهید
من به چیزی نیاز داشتم تا فضای باقی مانده از حذف لوگوی غول پیکر زشت جلوی چاپگرم را پوشش دهد
خنک است
من از این دستورالعمل الهام گرفتم ، که یک موش قدیمی PS/2 را به عنوان یک شمارشگر رشته برای چاپگر سه بعدی جایگزین کرد. نه تنها یک ویژگی مفید را به چاپگر سه بعدی اضافه کرد ، بلکه یک دستگاه قدیمی را که در غیر این صورت به محل دفن زباله ختم می شد ، تغییر مکان داد. اما این پروژه در اطراف رابط PS/2 موس ساخته شده است ، که به نظر بیهوده سخت و دشوار به نظر می رسید. بنابراین من از این فرصت برای یادگیری در مورد تنها جزء ضروری استفاده کردم: رمزگذار چرخشی.
تدارکات
رمزگذار روتاری
برد توسعه یافته مبتنی بر ESP32
صفحه نمایش OLED I2C (واحد دو رنگ بسیار جالب به نظر می رسد)
دکمه کوچک لحظه ای
یاتاقان 608ZZ چرب شده
دو حلقه O از فروشگاه سخت افزار (profile 33mm ID diameter diameter 1.5mm قطر مشخصات - نظرات را ببینید)
دو پیچ 2.5 میلی متری برای بستن محفظه
دو پیچ 4 میلیمتری ، مهره و واشر برای اتصال پایه به چاپگر شما
دسته ای سیم
چاپگر سه بعدی و مقداری فیلامنت
مرحله 1: رمزگذار روتاری را انتخاب کنید
رمزگذارهای چرخشی حرکت چرخشی را به پالس های الکتریکی تبدیل می کنند. همه موشهای قدیمی از آنها برای اندازه گیری حرکت توپ نورد استفاده کردند و موش های نوری مدرن (هکتار هکتار) هنوز از آنها برای چرخ پیمایش استفاده کردند ، چیزی که من در اطراف آن قرار داده بودم و برای آزمایش اولیه استفاده کردم. متأسفانه ، نقطه نصب من مشخص نیست و وضوح آن ضعیف است.
اگر ارزش انجام آن را دارد ، ارزش انجام بیش از حد را دارد. بنابراین من یک رمزگذار بزرگ ، دوستانه و 360 پالس در هر دور چرخ خریدم و پروژه خود را حول آن ساختم. چیزی که من انتخاب کردم یک رمزگذار روتاری نوری Signswise Incremental بود ، از نوع LPD3806-360BM-G5-24C. اما هر رمزگذار مناسب این کار را انجام می دهد.
مرحله 2: یک قرقره و بیکار اضافه کنید
حرکت خطی فیلامنت به وسیله یک قرقره به حرکت چرخشی رمزگذار تبدیل می شود. و رشته توسط قرقره در برابر قرقره نگه داشته می شود.
قرقره دارای دو شیار است که هر کدام دارای یک حلقه حلقه ای کشیده هستند تا لغزش نداشته باشد.
بیکار یک شیار v تک دارد تا فیلامنت را روی قرقره رمزگذار متمرکز نگه دارد. روی یاتاقان 608ZZ که من در اطراف آن گذاشته بودم ، نشسته است و روی فنر مارپیچی درست در بدنه اصلی پروژه من نصب شده است. (فایلهای STL در زیر ضمیمه شده است.)
این کار به آزمایش و خطا نیاز داشت تا درست شود ، اما طرح من باید زوایای مختلف و شعاع قرقره را در بر بگیرد ، که به نخ اجازه می دهد از هر قسمتی از قرقره ، از ابتدا تا انتهای چاپ ، باز شود. و فنر چاپی باعث می شود هنگام تعویض قرقره ها رشته را داخل یا خارج کنید.
مرحله 3: کد نویسی
فقط برای شمارش فیلامنت ، هر تخته dev با دو ورودی دیجیتال کار می کند. رمزگذاری که انتخاب کردم دارای چهار پین است: Vcc ، پایه و دو پین رمزگذار. در اینجا یک نوشتار واقعاً زیبا وجود دارد که نحوه عملکرد رمزگذارهای دوار و نحوه اتصال آنها با آردوینو را توضیح می دهد. (همچنین: این مقاله در مورد رمزگذارهای 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 ؛ } else {position -= 1؛ }} void IRAM_ATTR zeroButtonPressed () {// handle zero & reset}
اما من چیزی بیشتر از یک پیشخوان گنگ می خواستم. با ESP32 (یا ESP8266) و WiFi داخلی آن ، در واقع می توانم با داده هایی که جمع آوری می کنم کاری انجام دهم. با استفاده از یک کد زمان بندی ساده (در زیر توضیح داده شده است) ، می توانم زمان شروع و پایان چاپ را تعیین کنم و آن رویدادها را به عنوان اعلان به تلفن خود ارسال کنم. در آینده ، ممکن است یک سنسور تمام شده اضافه کنم و در صورت نیاز به توجه خودم (و چاپگر خود را موقتاً متوقف کنم).
کد کامل در Github است.
چند نکته در مورد کد:
برای سفارشی سازی این مورد در ساخت خود ، تنها چیزی که نیاز دارید رزولوشن (encoderPPR) است - در پالس در هر دور ، که معمولاً دو برابر مشخصات اعلام شده است - و شعاع قرقره (wheelRadius). این مقادیر ، به علاوه ssid و گذرواژه وای فای شما و پین های خاص متصل به دکمه ، رمزگذار و صفحه OLED ، همه در config.h قرار دارند
دکمه صفر نیز به عنوان تنظیم مجدد عمل می کند - آن را برای راه اندازی مجدد برد نگه دارید ، که برای اشکال زدایی مفید است
وقفه ها قدرتمند هستند - گاهی اوقات بیش از حد قدرتمند. تنها یک ضربه روی دکمه صفر می تواند باعث شود تا تابع zeroButtonPressed () 10-20 بار فراخوانی شود ، بنابراین من منطق خروج را اضافه کردم. رمزگذار نوری من به آن نیاز نداشت ، اما YMMV
در حالی که وقفه ها ورودی ها را به صورت نا همزمان کنترل می کنند ، روال حلقه () حسابداری را اداره می کند. encoderState - مجموعه ای که می تواند تغذیه شود ، جمع شود یا متوقف شود - با تغییر موقعیت رمزگذار به روز می شود. زمان پایان کار تعیین می کند که چاپگر چاپ را آغاز کرده و به پایان رسانده است. اما قسمت مشکل این است که چاپگرهای سه بعدی اغلب شروع به حرکت می کنند و متوقف می کنند ، بنابراین آنچه بهترین کار را کرد این بود که رویداد "چاپ کامل" به طور مداوم حداقل به مدت 5 ثانیه متوقف شود. هر حرکتی یک تایمر دوم را فعال می کند که رویداد "شروع چاپ" را تنها در صورتی تعریف می کند که هیچ رویداد "چاپ کامل" در بازه زمانی 15 ثانیه رخ ندهد. در عمل ، این کار با شنا کار می کند
بنابراین کد حلقه اصلی () می تواند بدون محدودیت اجرا شود ، کد خروجی در یک حلقه وظیفه RTOS اجرا می شود. به همین ترتیب ، درخواستهای http برای ارسال اعلانات همزمان هستند و بنابراین پس زمینه هستند. بنابراین انیمیشن ها بدون مشکل اجرا می شوند و شمارش هرگز متوقف نمی شود
در مثال من تعدادی کد اضافی برای (A) ایجاد و حفظ اتصال شبکه با WiFi و mDNS وجود دارد ، (B) زمان را از سرور NTC دریافت کنید تا بتوانم اعلانات شروع و پایان خود را زمان بندی کنم و یک ساعت شاد را نمایش دهم در OLED من ، و (C) به روز رسانی OTA را انجام می دهد ، بنابراین مجبور نیستم برای به روز رسانی کد ، برد خود را به Mac خود متصل کنم. در حال حاضر ، همه در یک فایل C ++ یکپارچه هستند ، فقط به این دلیل که من زمان بیشتری را برای سازماندهی بهتر آن اختصاص نداده ام
من از برنامه فوق العاده (و رایگان) Prowl iOS برای ارسال اعلان های فشار به تلفن خود بدون هیچ روش دیگری از HTTP Get استفاده کردم
برای توسعه کد و فلش برد ، از PlatformIO دیدنی که روی Visual Studio Code اجرا می شود ، هر دو رایگان استفاده کردم
برای پروژه خود ، از این کتابخانه ها استفاده کردم: u8g2 توسط الیور ، elapsedMillis توسط Paul Stoffregen و HTTPClient توسط Markus Sattler ، که با پلت فرم Espressif ESP32 ارائه می شود. همه چیز دیگر یا با کتابخانه آردوینو یا پلت فرم ESP32 در PlatformIO ارائه می شود
در نهایت ، من شش نقشه کوچک ساده از قرقره اصلی خود در زوایای مختلف ایجاد کردم ، بنابراین می توانم یک انیمیشن مرتب و کوچک را در OLED پشت پیشخوان نشان دهم. با رمزگذار در جهت مناسب حرکت می کند ، اگرچه برای جلوه ای چشمگیرتر بسیار سریعتر
مرحله 4: سیم کشی
من این را طوری طراحی کردم که سیم کشی ساده باشد ، عمدتا محفظه من می تواند کوچک باشد ، اما همچنین اشکال زدایی مستقیم خواهد بود. به شرایط تنگ در جعبه کوچک من توجه کنید.:)
اولین نیاز ولتاژ منبع تغذیه رمزگذار چرخشی من بود. از بین بردهای مختلف ESP32 dev که در انبار خود داشتم ، فقط تعداد کمی از آنها 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. در برد من ، ساعت و داده ها به ترتیب 22 و 21 هستند.
مرحله 5: قطعات را چاپ کنید
من هفت قسمت را برای این ساخت طراحی کردم:
قرقره ، که مستقیماً بر روی محور رمزگذار چرخشی نصب می شود
بیکار ، که بر روی یاتاقان 608ZZ قرار می گیرد (روکش ها را جدا کرده و با WD40 چرب کنید تا آزادانه بچرخد)
نگهدارنده ، که روی آن دو پا و رمزگذار نصب می شود - به فنر مارپیچ برای کارگر توجه کنید
براکتی برای تثبیت نگهدارنده. عکس در این مرحله نحوه اتصال براکت به نگهدارنده را نشان می دهد
محفظه (پایین) برای نگه داشتن برد ESP32 dev من ، با یک فاصله برای کابل USB در طرف و دیگری در بالا برای کانکتوری که به سیمهای رمزگذار خود اضافه کردم. این یکی متناسب با Wemos Lolin32 طراحی شده است ، بنابراین ممکن است مجبور شوید این طرح را کمی متناسب با یک برد متفاوت تغییر دهید
محفظه (بالا) برای نگه داشتن صفحه OLED ، مارپیچی دیگر برای دکمه صفر / تنظیم مجدد
یک نگهدارنده دکمه برای سوئیچ کوچکی که داشتم ، طراحی شده است تا بین دو قفسه در داخل محفظه پایین قرار بگیرد. من از آهن لحیم کاری برای "چسباندن" سوئیچ به نگهدارنده استفاده کردم. مرحله قبل را برای عکس ببینید
همه چیز برای چاپ بدون پشتیبانی طراحی شده است. PLA معمولی در رنگ دلخواه شما تنها چیزی است که شما نیاز دارید.
همه را کنار هم قرار دهید ، به چاپگر خود وصل کنید (ممکن است در اینجا نیاز به خلاقیت باشد) ، و خوب است.
توصیه شده:
Controller Imaginbot برای 1 پرینتر سه بعدی مکعبی: 22 مرحله
Controller Imaginbot for 1 Cubic Meter 3D Printer: این کنترلر برای ساخت یک چاپگر سه بعدی مکعبی با فرمان موتورهای پله ای بزرگ طراحی شده است
پرینتر سه بعدی پروتز کلاه: 6 مرحله
چاپگر سه بعدی پروتزی Cap: مرور کلی در دنیای ورزش ، ورزشکاران دارای معلولیت با نیازهای عملکردی خود نادیده گرفته می شوند. بسیاری از آنها به تجهیزات تخصصی برای اطمینان از راحتی و حداکثر عملکرد در حین انجام ورزش هایی که دوست دارند نیاز دارند. ورزش بسکتبال پارالمپیک محلی
تبدیل تصویر دو بعدی به مدل سه بعدی: 7 مرحله (همراه با تصاویر)
تبدیل تصویر دو بعدی به مدل سه بعدی: آیا تا به حال خواسته اید یک تصویر دو بعدی بگیرید و آن را به یک مدل سه بعدی تبدیل کنید؟ این دستورالعمل به شما نشان می دهد که چگونه با یک اسکریپت رایگان و Fusion 360. آنچه شما نیاز دارید Fusion 360 (Mac / Windows) آنچه شما باید انجام دهید بارگیری و نصب Fusion 360. برای ثبت نام رایگان اینجا کلیک کنید
پرینتر سه بعدی DIY کل فرایند: 31 مرحله
پرینتر سه بعدی DIY کل فرایند: این مقاله به شما می گوید که چگونه می توانید چاپگر سه بعدی را انجام دهید ، بنابراین نمی توانید آن را از دست بدهید ، بنابراین لطفاً آن را با دقت بخوانید
ساخت اطلاعات پرینتر سه بعدی مورد برای ماژول الکترونیکی توسط بلندر .: 6 مرحله
ساخت اطلاعات پرینتر سه بعدی مورد برای ماژول الکترونیکی توسط بلندر .: به آنها نیاز دارید (مثال من استفاده کردم). چاپگر سه بعدی (TEVO Tarantula) اسکنر 2 بعدی (CanoScan LiDE 200) ویرایشگر داده سه بعدی (بلندر) ویرایشگر داده 2 بعدی (Paint Shop Pro) https://neo-sahara.com/wp/case_make_blender