Mündəricat:

Ağıllı 3D Yazıcı Filament Sayğacı: 5 Adım (Şəkillərlə birlikdə)
Ağıllı 3D Yazıcı Filament Sayğacı: 5 Adım (Şəkillərlə birlikdə)

Video: Ağıllı 3D Yazıcı Filament Sayğacı: 5 Adım (Şəkillərlə birlikdə)

Video: Ağıllı 3D Yazıcı Filament Sayğacı: 5 Adım (Şəkillərlə birlikdə)
Video: 3D печать, с чего начать? Как выбрать 3D принтер, принцип работы, кинематика, какие бывают сложности 2024, Iyun
Anonim
Ağıllı 3D Yazıcı Filament Sayğacı
Ağıllı 3D Yazıcı Filament Sayğacı

Niyə filaman saymaqdan bezin? Bir neçə səbəb:

Müvəffəqiyyətli izlər düzgün kalibrlənmiş bir ekstruder tələb edir: gcode ekstruderə filamentin 2 mm hərəkət etməsini söylədikdə, tam olaraq 2 mm hərəkət etməsi lazımdır. Həddindən artıq ifraz etsə və ya həddindən artıq iflas etsə pis şeylər olur. Yaxşı kalibrlənmiş sayğac, ekstruderin vicdanlı olmasını təmin edə bilər

Dilimləyicilər, müəyyən bir çapın (həm uzunluqda, həm də çəkidə) nə qədər ümumi filament tutacağını təxmin edir və bu dəyərləri yoxlamaq istərdim

Filamentin hərəkətini ölçərək çapın nə vaxt başladığını və nə vaxt dayandığını da bildirək

Yazıcımın ön hissəsindəki çirkin nəhəng loqotipin çıxarılmasından sonra qalan boşluğu örtmək üçün bir şeyə ehtiyacım var idi

Sərin

Köhnə bir PS/2 siçanını 3D Yazıcı üçün filament sayğacı olaraq dəyişdirən bu təlimatdan ilham aldım. 3D printerə nəinki faydalı bir xüsusiyyət əlavə etdi, əks təqdirdə zibilxanaya düşəcək köhnə cihazı da yenidən aldı. Ancaq bu layihə, ehtiyacsız olaraq çətin görünən PS/2 interfeysi ətrafında quruldu. Buna görə də bunu yeganə vacib komponenti öyrənmək üçün bir fürsət olaraq istifadə etdim: fırlanan kodlayıcı.

Təchizat

Rotary kodlayıcı

ESP32 əsaslı inkişaf etdirici lövhə

I2C OLED displey (iki rəngli qurğu xüsusilə sərin görünür)

Kiçik bir anlıq düymə

Yağsız 608ZZ yatağı

Avadanlıq mağazasından iki halqa (~ 33mm ID x ~ 1.5mm profil diametri - şərhlərə baxın)

Korpus üçün iki ədəd 2,5 mm özünü vurma vidası

Dəstəyi printerinizə bağlamaq üçün iki ədəd 4 mm -lik vintlər, qoz -fındıq və yuyucular

Bir dəstə tel

3D printer və filament

Addım 1: Rotary Encoder seçin

Rotary Encoder seçin
Rotary Encoder seçin
Rotary Encoder seçin
Rotary Encoder seçin

Rotary kodlayıcılar fırlanma hərəkətini elektrik impulslarına çevirir. Bütün köhnə məktəb siçanları yuvarlanan topun hərəkətini ölçmək üçün istifadə edirdi və daha müasir (ha ha) optik siçanlar hələ də sürüşmə təkəri üçün istifadə edirdi. Təəssüf ki, mənimki açıq bir montaj nöqtəsi təklif etmədi və həlli zəif idi.

Etməyə dəyərsə, həddindən artıq etməyə dəyər. Beləliklə, inqilab başına böyük, dostu, 360 nəbzli bir kodlayıcı aldım və layihəmi onun ətrafında qurdum. Seçdiyim, LPD3806-360BM-G5-24C tipli Signswise Artan Optik Rotary Encoder idi. Ancaq hər hansı bir layiqli kodlayıcı bunu edəcək.

Addım 2: Kasnak və Avara əlavə edin

Kasnak və Boşluq əlavə edin
Kasnak və Boşluq əlavə edin

Filamentin xətti hərəkəti bir kasnaqla kodlayıcının fırlanma hərəkətinə çevrilir. Və filament bir boş adam tərəfindən kasnağa qarşı tutulur.

Kasnağın iki yivi var, hər biri uzanmış bir halqa tutur, buna görə sürüşmə yoxdur, Fırçanın filamenti kodlayıcı kasnağın mərkəzində saxlamaq üçün tək v-yivi var. Ətrafımda qoyduğum 608ZZ rulmana oturur və bu, layihəmin əsas hissəsində çap olunmuş spiral yay üzərində quraşdırılmışdır. (STL faylları aşağıda əlavə olunur.)

Düzgün olmaq üçün bir az sınaq və səhv tələb olundu, amma dizaynım filamentin makaranın hər hansı bir hissəsindən, çapın əvvəlindən sonuna qədər açılmasına imkan verən müxtəlif açılar və makara radiuslarına uyğun olmalıdır. Və çaplı yay, makaraları dəyişdirərkən filamentə daxil olmağı və ya çıxmağı asanlaşdırır.

Addım 3: Kodlaşdırma

Image
Image

Yalnız filament saymaq üçün iki rəqəmsal girişi olan hər hansı bir inkişaf taxtası edəcək. Seçdiyim kodlayıcının dörd sancağı var: Vcc, torpaq və iki kodlayıcı pin. Budur, fırlanan kodlayıcıların necə işlədiyini və Arduino ilə necə əlaqə quracağını izah edən həqiqətən gözəl bir yazı. (Həmçinin: 3 pinli kodlayıcılar haqqında bu məqalə.)

Əsas hesablama sadədir: iki giriş - daxili rezistorların Vcc -ə lehimlənməsinə ehtiyac qalmamaq üçün qurulmuşdur - və bir kəsmə. Bir sıfır/sıfırlama düyməsini də əlavə etdim, daha bir giriş və kəsilmə tələb olundu:

boşluq setUpPins () {

pinModu (ENCODER_PIN_1, INPUT_PULLUP); pinMode (ENCODER_PIN_2, INPUT_PULLUP); pinModu (ZERO_BTN_PIN, INPUT_PULLUP); attachInterrupt (ENCODER_PIN_1, encoderPinDidChange, CHANGE); attachInterrupt (ZERO_BTN_PIN, zeroButtonPressed, CHANGE); } boş IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {mövqe += 1; } başqa {mövqe -= 1; }} etibarsız IRAM_ATTR zeroButtonPressed () {// sıfırla idarə et və sıfırla}

Amma mən lal sayğacdan çox şey istəyirdim. ESP32 (və ya ESP8266) və daxili WiFi ilə, topladığım məlumatlarla əslində bir şey edə bilərəm. Sadə bir zaman aşımı kodu (aşağıda izah olunur) istifadə edərək, çapın nə vaxt başlayacağını və bitəcəyini təyin edə bilərəm və bu hadisələri telefonuma bildiriş olaraq göndərə bilərəm. Gələcəkdə tükənmə sensoru əlavə edə bilərəm və diqqətim lazım olduqda özümü xəbərdar edə bilərəm (və yazıcımı dayandırıram).

Tam kod Githubdadır.

Kod haqqında bir neçə qeyd:

Bunu quruluşunuza uyğunlaşdırmaq üçün sizə lazım olan tək şey, inqilab başına pulslarda, adətən göstərilən spesifikasiyadan iki dəfə çoxdur və kasnağın radiusudur (wheelRadius). Bu dəyərlər, üstəgəl WiFi -nin ssid və şifrəsi və düyməyə, kodlayıcıya və OLED ekrana bağlı xüsusi sancaqlar hamısı config.h -ə daxil olur

Sıfır düyməsi sıfırlama kimi də iki dəfə işləyir - ayıklama üçün faydalı olan lövhəni yenidən başlatmaq üçün basıb saxlayın

Fasilələr güclüdür - bəzən çox güclüdür. Sıfır düyməsinə bir dəfə vurmaq zeroButtonPressed () funksiyasının 10-20 dəfə çağrılmasına səbəb ola bilər, buna görə də bəzi çıxmaq məntiqi əlavə etdim. Optik kodlayıcımın buna ehtiyacı yoxdu, amma YMMV

Fasilələr girişlərə asenxron şəkildə qayğı göstərərkən, loop () qaydası mühasibat uçotunu aparır. EncoderState - qidalana, geri çəkilə və ya dayandırıla bilən bir enum, kodlayıcının mövqeyinin dəyişməsi ilə yenilənir. Zaman aşımları, yazıcının çapın nə vaxt başladığını və bitdiyini təyin edir. Ancaq çətin tərəfi, 3D printerlərin tez -tez hərəkəti başlatması və dayandırmasıdır, buna görə ən yaxşı işləyən ən azı 5 saniyə davamlı olaraq dayandırılan "çap tamamlandı" hadisəsini təyin etmək idi. Hər hansı bir hərəkət, yalnız 15 saniyə müddətində "çap tamamlandı" hadisəsi baş vermədiyi təqdirdə "çap başlamışdır" hadisəsini təyin edən ikinci bir taymer tetikler. Praktikada bu üzgüçülüklə işləyir

Beləliklə, əsas loop () kodu nömrəsiz işləyə bilər, geri çəkilmə kodu RTOS tapşırıq döngəsində işləyir. Eyni şəkildə, http bildirişlərini göndərmək istəkləri sinxrondur və buna görə də arxa plana keçir. Beləliklə, animasiyalar düzgün işləyir və sayma heç vaxt dayanmır

Mənim nümunəmdə (A) WiFi və mDNS ilə bir şəbəkə bağlantısı qurmaq və saxlamaq, (B) NTC serverindən vaxt almaq üçün başlanğıc və son bildirişlərimə vaxt möhürü vurmaq və gözəl bir saat göstərmək üçün bir çox əlavə kod var. OLED -də və (C) OTA yeniləmələrini idarə edir, buna görə kod yeniləmələri üçün lövhəmi Mac -a fiziki olaraq bağlamaq məcburiyyətində deyiləm. Hal -hazırda hamısı bir monolitik C ++ sənədindədir, yalnız onu daha yaxşı təşkil etmək üçün vaxt ayırmadığım üçün

HTTP Get metodlarından başqa heç bir şey olmadan telefonuma push bildirişləri göndərmək üçün gözəl (və pulsuz) Prowl iOS tətbiqindən istifadə etdim

Kodu inkişaf etdirmək və lövhəni yandırmaq üçün hər ikisi də pulsuz olan Visual Studio Code üzərində işləyən möhtəşəm PlatformIO -dan istifadə etdim

Layihəm üçün bu kitabxanalardan istifadə etdim: Oliver tərəfindən u8g2, Paul Stoffregen tərəfindən elapsedMillis və Espressif ESP32 platforması ilə birlikdə gələn Markus Sattler tərəfindən HTTPClient. Qalan hər şey ya Arduino kitabxanası, ya da PlatformIO -dakı ESP32 platforması ilə gəlir

Nəhayət, tezgahın arxasındakı OLED -də səliqəli kiçik bir fırlanan təkər animasiyasını göstərə bilmək üçün əsas kasnağımın fərqli açılarda altı sadə bitmapini yaratdım. Daha dramatik bir təsir üçün daha sürətli olsa da, kodlayıcı ilə uyğun istiqamətdə hərəkət edir

Addım 4: Kabel çəkmə

Kablolama
Kablolama

Mən bunu elə qurmuşam ki, məftillər çox sadə olsun, əksər hallarda korpusum kiçik olsun, həm də düzəlişlər düz olsun. Kiçik qutumdakı dar vəziyyətlərə diqqət yetirin.:)

İlk tələb, fırlanan enkoderimin 5V təchizatı gərginliyi idi. Saxladığım müxtəlif ESP32 qurğu lövhələrindən yalnız bir neçəsi USB ilə işləyərkən Vcc pinində əsl 5V təchiz etdi. (Digərləri 4.5-4.8V ölçdü, bu da sizin riyazi pis olduğunuz halda 5V-dən aşağıdır.) İstifadə etdiyim lövhə Wemos Lolin32 idi.

Sonra, iki fırlanan kodlayıcı siqnal pinləri gəlir. Fasilələrdən istifadə etdiyim üçün əsas narahatlıq, istifadə etdiyim sancaqların heç bir şeyə müdaxilə etməməsidir. ESP32 sənədləri, ADC2 -nin WiFi ilə eyni vaxtda istifadə edilə bilməyəcəyini bildirir, buna görə təəssüf ki, ADC2 GPIO pinlərindən heç birini istifadə edə bilməyəcəyim deməkdir: 0, 2, 4, 12, 13, 14, 15, 25, 26 və ya 27. 16 və 17 -ni seçdim.

Pro ipucu: bütün bunları bir araya gətirdikdən sonra kodlayıcınız geriyə sayılırsa, config.h -də iki pin təyinini dəyişdirə bilərsiniz.

Nəhayət, fırlanan kodlayıcı topraklama telini… baraban rulonuna … torpaq pininə bağlayın.

Sonra sıfırlama/sıfırlama düyməsi yerə və başqa bir pulsuz pin arasında bağlanır (GPIO 18 -i seçdim).

İstifadə etdiyim düymə, yuxarıda göstərilən kompüter siçanından qurtardığım kiçik bir anlıq açar idi, ancaq ətrafınızda qoyduğunuz hər hansı bir düymə bunu edəcək. Gəminin üzərində düzəltdiyim kiçik bir montajda istirahət etdiyini görə bilərsiniz.

Nəhayət, OLED, hələ də lövhənizə bağlı deyilsə, yalnız dörd sancağa ehtiyac var: 3V3, torpaq, i2c saat və i2c məlumatları. Geliştirici lövhəmdə saat və məlumatlar sırasıyla 22 və 21 -dir.

Addım 5: Parçaları çap edin

Parçaları çap edin
Parçaları çap edin

Bu quruluş üçün yeddi hissə hazırladım:

Birbaşa fırlanan enkoderin şaftına quraşdırılan kasnak

608ZZ -dən çox rulmana uyğundur (boşluqları çıxarın və sərbəst döndüyü üçün WD40 ilə yağdan təmizləyin)

İki ayağın və enkoderin quraşdırıldığı tutucu - boşboğaz üçün spiral yaya diqqət yetirin

Tutucunu sabitləşdirmək üçün bir mötərizə. Bu addımdakı şəkil, mötərizənin tutucuya necə bağlandığını göstərir

Yan tərəfdə USB kabeli üçün bir yer və enkoder tellərimə əlavə etdiyim bağlayıcı üçün başqa bir yer olan ESP32 inkişaf etdirmə lövhəmi tutmaq üçün korpus (aşağı). Bu Wemos Lolin32 -yə uyğun olaraq hazırlanmışdır, buna görə fərqli bir lövhəyə uyğunlaşmaq üçün bu dizaynı bir az düzəltməli ola bilərsiniz

Sıfırlama / sıfırlama düyməsi üçün başqa bir spiral olan OLED ekranı tutmaq üçün korpus (yuxarı)

Alt korpusun içərisindəki iki rəf arasında dayanmaq üçün hazırladığım kiçik açar üçün xüsusi olaraq hazırlanmış bir düymə tutacağı. Anahtarı tutucuya "yapışdırmaq" üçün bir lehimləmə dəmiri istifadə etdim; bir fotoşəkil üçün əvvəlki addımı baxın

Hər şey dəstəyi olmadan çap üçün nəzərdə tutulmuşdur. İstədiyiniz rəngdə normal PLA sizə lazım olan hər şeydir.

Hamısını bir yerə qoyun, yazıcınıza bağlayın (burada bir az yaradıcılıq tələb oluna bilər) və getməyə hazırsınız.

Tövsiyə: