Mündəricat:
- Təchizat
- Addım 1: Rotary Encoder seçin
- Addım 2: Kasnak və Avara əlavə edin
- Addım 3: Kodlaşdırma
- Addım 4: Kabel çəkmə
- Addım 5: Parçaları çap edin
Video: Ağıllı 3D Yazıcı Filament Sayğacı: 5 Adım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
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 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
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
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ə
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
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ə:
Ağıllı Masa LED İşığı - Ağıllı İşıqlandırma W/ Arduino - Neopixels İş Sahəsi: 10 Adım (Şəkillərlə birlikdə)
Ağıllı Masa LED İşığı | Ağıllı İşıqlandırma W/ Arduino | Neopixels Çalışma Alanı: İndi günlərimiz evdə çox vaxt keçirir, virtual olaraq oxuyuruq və işləyirik, buna görə də xüsusi və ağıllı işıqlandırma sistemi olan Arduino və Ws2812b LEDləri ilə iş sahəmizi daha da genişləndirməyək. Masa üstü LED işığı
ScanUp NFC Oxucu/Yazıçı və Korlar, Görmə Əlillər və Digərləri üçün Audio Yazıcı: 4 Addım (Şəkillərlə)
ScanUp NFC Oxucu/Yazıçı və Korlar, Görmə Əlilləri və Başqaları üçün Audio Yazıcı: Sənaye dizaynını öyrənirəm və layihə semestrimin işidir. Məqsəd, görmə qüsurlu və kor insanları SD kartda WAV formatında səs yazdırmağa və bu məlumatları NFC etiketi ilə çağırmağa imkan verən cihazla dəstəkləməkdir. Belə ki
PKE Metr Geiger Sayğacı: 7 Adım (Şəkillərlə birlikdə)
PKE Meter Geiger Sayğacı: Peltier Soyudulmuş Bulud Otağımı tamamlamaq üçün uzun müddətdir bir Geiger sayğacı qurmaq istəyirdim. Bir Geiger sayğacına sahib olmağın (inşallah) çox da faydalı bir məqsədi yoxdur, ancaq köhnə rus borularını sevirəm və bunun olacağını düşünürdüm
2 Rəqəmli LED Bargraph Sayğacı: 6 Adım (Şəkillərlə birlikdə)
2 Rəqəmli LED Bargraph Sayğacı: Bu layihə iki ədəd 10 LED Bargraph və Arduino Uno ilə işlənmək üçün 1-99 arası bir sayğacdır. 2 Rəqəmli LED Bargraph Sayğacı, onlardan və digərlərindən ibarət olan LED Bargraphları təmsil edən 2 rəqəmdən ibarət sayğacın işini göstərir
Ağıllı elektrik sayğacı: 3 addım
Ağıllı Elektrik Ölçən: Demək olar ki, bütün Rəqəmsal Elektrik sayğaclarının (ağıllı və ya olmayan) hər dəfə müəyyən miqdarda enerji istifadə edildikdə yanıb -sönən bir işığı var - tez -tez hər Watt -saatda bir dəfə (Adətən 1000 imp/kWh olaraq qeyd olunur). bunu sadə bir Light Depen ilə aşkar edin