Mundarija:

Smart 3D printerli filament hisoblagichi: 5 qadam (rasmlar bilan)
Smart 3D printerli filament hisoblagichi: 5 qadam (rasmlar bilan)

Video: Smart 3D printerli filament hisoblagichi: 5 qadam (rasmlar bilan)

Video: Smart 3D printerli filament hisoblagichi: 5 qadam (rasmlar bilan)
Video: Equipment Corner - Gcodes and Slic3r basics 2024, Iyun
Anonim
Aqlli 3D printerli filament hisoblagichi
Aqlli 3D printerli filament hisoblagichi

Nega filamanni sanashni bezovta qilasiz? Bir nechta sabablar:

Muvaffaqiyatli chop etish uchun to'g'ri kalibrlangan ekstruder kerak bo'ladi: gcode ekstruderga filamanni 2 mm siljishini aytganda, u aynan 2 mm harakatlanishi kerak. Yomon ishlar haddan tashqari ekstrudirovka qilinsa yoki haddan ziyod bo'lsa. Yaxshi kalibrlangan hisoblagich ekstruderni halol saqlashi mumkin

Dilimleyiciler, berilgan bosim qancha uzunlik va og'irlikda bo'lishini taxmin qiladilar va men bu qiymatlarni tekshirmoqchiman

Filament harakatini o'lchash, shuningdek, chop etish qachon va qachon to'xtaganligini bilib olaylik

Menga printerning old qismidagi chirkin gigant logotipni olib tashlash natijasida bo'sh joyni yopish uchun biror narsa kerak edi

Havo salqin

Menga ilhomlantirildi, bu eskirib qolgan PS/2 sichqonchasini 3D printer uchun filament hisoblagichi sifatida ishlatdi. U nafaqat 3D printerga foydali xususiyat qo'shdi, balki poligonga tushib qoladigan eski qurilmani ham o'zgartirdi. Ammo bu loyiha sichqonchaning PS/2 interfeysi atrofida qurilgan bo'lib, bu juda qiyin bo'lib tuyuldi. Men buni yagona muhim komponent - rotatorli enkoder bilan tanishish imkoniyati sifatida oldim.

Ta'minotlar

Aylanadigan kodlovchi

ESP32 asosidagi ishlab chiqarish kartasi

I2C OLED displeyi (ikki rangli birlik ayniqsa zo'r ko'rinadi)

Kichkina lahzali tugma

Yog'sizlangan 608ZZ rulman

Uskuna do'konidan ikkita halqa (~ 33 mm ID x ~ 1,5 mm profil diametri - sharhlarga qarang)

Korpus uchun ikkita 2,5 mm o'z-o'zidan tejamkor vint

Printerga o'rnatishni o'rnatish uchun ikkita 4 mm vintlar, yong'oqlar va yuvish moslamalari

Bir nechta simlar

3D printer va ba'zi filamentlar

1 -qadam: Rotary enkoderni tanlang

Rotary enkoderni tanlang
Rotary enkoderni tanlang
Rotary enkoderni tanlang
Rotary enkoderni tanlang

Rotary enkoderlari aylanish harakatini elektr impulslariga aylantiradi. Barcha eski maktab sichqonchalari ularni to'pning harakatini o'lchash uchun ishlatgan, va zamonaviyroq (ha ha) optik sichqonlar hali ham ularni aylantirib yuradigan g'ildirak uchun ishlatgan. Afsuski, meniki aniq ulanish nuqtalarini taklif qilmadi va uning o'lchamlari yomon edi.

Agar bunga arziydigan bo'lsa, uni ortiqcha qilishga arziydi. Shunday qilib, men katta, do'stona, har bir inqilob uchun 360 pulsli kodlovchi sotib oldim va uning atrofida loyihamni qurdim. Men tanlagan LPD3806-360BM-G5-24C tipidagi Signswise ortib boruvchi optik aylanuvchi kodlovchi edi. Lekin har qanday munosib kodlovchi bajaradi.

2 -qadam: Kasnaq va rölanti qo'shing

Kasnak va rölanti qo'shing
Kasnak va rölanti qo'shing

Filamanning chiziqli harakati kasnaq yordamida enkoderning aylanish harakatiga aylanadi. Va filament g'altakning kasnagiga tutiladi.

Kasnaqda ikkita yiv bor, ularning har biri uzuk halqasini ushlab turadi, shuning uchun sirg'alish bo'lmaydi, Bo'shashgichda filamentni kodlovchi kasnagida markazda ushlab turish uchun bitta v-truba mavjud. U men yotqizgan 608ZZ rulmanga o'rnatilgan va u loyihamning asosiy qismida bosilgan spiral buloqqa o'rnatilgan. (STL fayllari quyida biriktirilgan.)

To'g'ri qaror qabul qilish uchun biroz sinov va xatolar kerak edi, lekin mening dizaynim har xil burchak va g'altakning radiusiga mos kelishi kerak, bu esa ipni g'altakning istalgan qismidan, bosib chiqarish boshidan oxirigacha ochishga imkon beradi. Va bosilgan buloq g'altakni almashtirganda filamanga kirishni osonlashtiradi.

3 -qadam: kodlash

Image
Image

Filamentni sanash uchun ikkita raqamli kirishga ega bo'lgan har qanday asboblar paneli ishlaydi. Men tanlagan enkoderning to'rtta pimi bor: Vcc, er va ikkita kodlovchi pin. Bu erda aylanadigan kodlovchi qanday ishlashini va ularni Arduino bilan qanday bog'lanishini tushuntiradigan juda yaxshi yozuv. (Shuningdek: bu maqola 3 pinli kodlovchi haqida.)

Asosiy hisoblash oddiy: ikkita kirish - ichki qarshilik uchun o'rnatiladi, shuning uchun tashqi rezistorlarni Vccga lehimlashning hojati yo'q - va bitta uzilish. Men yana nol/reset tugmachasini qo'shdim, bu yana bitta kirish va uzilishni talab qiladi:

bo'sh setUpPins () {

pinMod (ENCODER_PIN_1, INPUT_PULLUP); pinMod (ENCODER_PIN_2, INPUT_PULLUP); pinMod (ZERO_BTN_PIN, INPUT_PULLUP); attachInterrupt (ENCODER_PIN_1, encoderPinDidChange, CHANGE); attachInterrupt (ZERO_BTN_PIN, zeroButtonPressed, CHANGE); } bo'sh IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {pozitsiya += 1; } boshqa {pozitsiya -= 1; }} void IRAM_ATTR zeroButtonPressed () {// nol bilan ishlov berish va qayta o'rnatish}

Lekin men faqat soqov hisoblagichdan ko'proq narsani xohlardim. ESP32 (yoki ESP8266) va uning ichki Wi-Fi tarmog'i yordamida men yig'ayotgan ma'lumotlarim bilan biror narsa qila olaman. Oddiy taymut kodidan foydalanib (quyida tushuntiriladi), men chop etish qachon boshlanishini va tugashini aniqlay olaman va bu voqealarni telefonimga bildirishnoma sifatida yuboraman. Kelgusida men tugatish sensori qo'shib, e'tiborim kerak bo'lganda o'zimni xabardor qila olaman (va printerimni to'xtatib qo'yaman).

To'liq kod Github -da.

Kod bo'yicha bir nechta eslatmalar:

Buni sizning konfiguratsiyangizga moslashtirish uchun sizga kerak bo'lgan yagona narsa - bu inqilobdagi pulslarda, odatda ko'rsatilgan spetsifikatsiyadan ikki baravar ko'p bo'lgan rezistor (encoderPPR) va kasnaq radiusi (wheelRadius). Bu qiymatlar, shuningdek, Wi -Fi tarmog'ining ssid va paroli, tugma, kodlovchi va OLED ekranga ulangan pinlar hammasi config.h ga kiradi

Nol tugmasi ham asl holatini tiklash vazifasini bajaradi - taxtani qayta ishga tushirish uchun uni ushlab turing, bu disk raskadrovka uchun foydalidir

Uzilishlar kuchli - ba'zida juda kuchli. Nol tugmachasini bir marta bosish zeroButtonPressed () funktsiyasini 10-20 marta chaqirilishiga olib kelishi mumkin, shuning uchun men ba'zi bir o'chirish mantig'ini qo'shdim. Mening optik kodlovchimga kerak emas edi, lekin YMMV

Uzilishlar asinxron kirishlar haqida g'amxo'rlik qilsa, loop () tartibi buxgalteriya hisobini yuritadi. EncoderState - ovqatlanish, qaytarish yoki to'xtatish mumkin bo'lgan enum - kodlovchi o'rnining o'zgarishi bilan yangilanadi. Vaqt tugagandan so'ng, printer qachon chop etish boshlanganini va tugaganligini aniqlaydi. Ammo qiyin tomoni shundaki, 3D -printerlar tez -tez harakatni boshlaydi va to'xtatadi, shuning uchun eng yaxshisi, "bosib chiqarish tugadi" hodisasini aniqlash edi, u kamida 5 soniya davomida to'xtab qoldi. Har qanday harakat, "bosib chiqarish boshlandi" hodisasini aniqlaydigan ikkinchi taymerni ishga tushiradi, agar 15 soniya ichida "bosib chiqarish tugallanmagan" voqea sodir bo'lsa. Amalda, bu suzish bilan ishlaydi

Shunday qilib, asosiy loop () kodi raqamsiz ishlay oladi, o'chirish kodi RTOS vazifa tsiklida ishlaydi. Xuddi shunday, http xabarnomalarini yuborish so'rovlari ham sinxron va shuning uchun fonga ega. Shunday qilib, animatsiyalar muammosiz ishlaydi va hisoblash hech qachon to'xtamaydi

Mening misolimda (A) WiFi va mDNS bilan tarmoq ulanishini o'rnatish va qo'llab-quvvatlash uchun bir nechta qo'shimcha kod mavjud, (B) NTC serveridan vaqtni oladi, shuning uchun men boshlanish va tugash haqidagi bildirishnomalarni vaqtli muhrlab qo'yishim va yosh soatni ko'rsatishim mumkin. mening OLED -da va (C) OTA yangilanishlarini boshqaradi, shuning uchun men kodni yangilash uchun platamni Mac -ga jismonan ulashim shart emas. Hozirda hammasi bitta monolit C ++ faylida, chunki men uni yaxshiroq tashkil qilishga vaqt ajratmaganman

Men ajoyib (va bepul) Prowl iOS ilovasidan telefonimga HTTP Get usullaridan boshqa hech narsa bo'lmagan push -bildirishnomalarni yuborish uchun foydalandim

Kodni ishlab chiqish va taxtani o'chirish uchun men Visual Studio Code -da ishlaydigan ajoyib PlatformIO -dan foydalandim, ikkalasi ham bepul

Loyiham uchun men quyidagi kutubxonalardan foydalandim: Oliverning u8g2, Pol Stoffregenning elapsedMillis va Espressif ESP32 platformasi bilan birga kelgan Markus Sattlerning HTTPClient. Qolganlarning hammasi Arduino kutubxonasi yoki PlatformIO -dagi ESP32 platformasi bilan birga keladi

Nihoyat, men asosiy kasnagimning oltita oddiy bitmapini har xil burchakda yaratdim, shunda men peshtaxta ortidagi OLED -da ozgina aylanadigan g'ildirakli animatsiyani ko'rsatishim mumkin edi. U enkoder bilan to'g'ri yo'nalishda harakat qiladi, garchi ancha dramatik ta'sir ko'rsatsa

4 -qadam: simlarni ulash

Ulanish
Ulanish

Men shunday loyihalashtirdimki, simlar o'ta sodda bo'ladi, asosan mening muhofazam kichik bo'lishi mumkin, lekin disk raskadrovka ham to'g'ri bo'ladi. Kichkina qutimdagi tor sharoitlarga e'tibor bering.:)

Birinchi talab - bu mening aylanadigan enkoderning 5V kuchlanish. Men saqlagan har xil ESP32 dev platalaridan faqat bir nechtasi USB orqali quvvatlanganda Vcc pinida haqiqiy 5V bilan ta'minlangan. (Qolganlari 4,5-4,8 V ni o'lchagan, agar sizning matematikangiz yomon bo'lsa, 5 V dan past bo'ladi.) Men ishlatgan taxta Wemos Lolin32 edi.

Keyinchalik, ikkita aylanadigan kodlovchi signal pinlari keladi. Men uzilishlardan foydalanganim uchun, asosiy tashvish shundaki, men ishlatadigan pinlar hech narsaga aralashmaydi. ESP32 hujjatlarida ADC2 -ni WiFi bilan bir vaqtda ishlatish mumkin emasligi aytilgan, shuning uchun afsuski, men ADC2 GPIO pinlaridan hech birini ishlata olmayman: 0, 2, 4, 12, 13, 14, 15, 25, 26, yoki 27. Men 16 va 17 ni tanladim.

Pro maslahat: agar bularning barchasini birlashtirgandan so'ng, sizning kodlovchi orqaga qarab hisoblansa, config.h da ikkita pinli topshiriqni almashtirishingiz mumkin.

Nihoyat, aylanadigan kodlovchi topraklama simini… baraban rulosiga … topraklama pimiga ulang.

Keyin nol/reset tugmachasi yer va boshqa bo'sh pin o'rtasida ulanadi (men GPIO 18 ni tanladim).

Men ishlatgan tugma, men yuqorida aytib o'tilgan kompyuter sichqonchasidan qutqarib qolgan kichik bir lahzali kalit edi, lekin siz qo'ygan har qanday tugma bajaradi. Siz uni taxtaning ustida men yasagan kichik tog'da dam olishini ko'rishingiz mumkin.

Nihoyat, OLED, agar u sizning kartangizga ulanmagan bo'lsa, faqat to'rtta pin kerak: 3V3, tuproq, i2c soat va i2c ma'lumotlari. Mening taxtamda soat va ma'lumotlar mos ravishda 22 va 21.

5 -qadam: qismlarni chop eting

Qismlarni chop eting
Qismlarni chop eting

Men ushbu qurilish uchun etti qismni ishlab chiqdim:

To'g'ridan -to'g'ri aylanadigan enkoderning miliga o'rnatiladigan kasnaq

608ZZ dan ortiq rulmanga mos keladigan bo'shashtirgich (qobiqlarni olib tashlang va WD40 bilan yog'ni tozalang, shunda u erkin aylanadi)

Ikkita taroq va enkoder o'rnatilgan ushlagich - bo'sh turgan odam uchun spiral buloqqa e'tibor bering

Tutqichni barqarorlashtirish uchun qavs. Ushbu bosqichdagi fotosuratda ushlagich ushlagichga qanday biriktirilganligi ko'rsatilgan

Mening ESP32 dev platamni ushlab turadigan korpus (pastda), yonida USB kabeli uchun joy, ikkinchisida esa ulagich uchun men kodlovchi simlarimga qo'shdim. Bu Wemos Lolin32 -ga mos keladigan tarzda ishlab chiqilgan, shuning uchun siz boshqa dizaynga mos kelish uchun ushbu dizaynni biroz o'zgartirishingiz kerak bo'ladi

OLED ekranini ushlab turish uchun korpus (tepada), nol / reset tugmasi uchun yana bir spiral

Kichkina kalit uchun moslashtirilgan tugma ushlagichi, pastki korpus ichidagi ikkita tokchaning o'rtasida dam olish uchun mo'ljallangan. Men kalitni ushlagichga "yopishtirish" uchun lehim temiridan foydalandim; rasm uchun oldingi qadamni ko'ring

Hamma narsa tayanchlarsiz chop etishga mo'ljallangan. Siz tanlagan rangdagi oddiy PLA - bu sizga kerak.

Hammasini bir joyga to'plang, printerga ulang (bu erda ijodkorlik talab qilinishi mumkin) va siz borishga tayyormiz.

Tavsiya: