Sadržaj:

Brojač vlakana pametnog 3D pisača: 5 koraka (sa slikama)
Brojač vlakana pametnog 3D pisača: 5 koraka (sa slikama)

Video: Brojač vlakana pametnog 3D pisača: 5 koraka (sa slikama)

Video: Brojač vlakana pametnog 3D pisača: 5 koraka (sa slikama)
Video: G-Shock Carbon Core Guard Часы | Грязевик | Gravitymaster | GSTEEL | GA-2000 2024, Lipanj
Anonim
Brojač vlakana pametnog 3D pisača
Brojač vlakana pametnog 3D pisača

Zašto se mučiti s prebrojavanjem vlakana? Nekoliko razloga:

Uspješni ispisi zahtijevaju pravilno kalibrirani ekstruder: kada gcode kaže ekstruderu da pomakne filament za 2 mm, mora se pomaknuti točno 2 mm. Loše se stvari događaju ako pretjerano ekstrudira ili premalo ekstrudira. Dobro kalibrirani brojač može ekstruder držati poštenim

Rezači približno određuju koliko će ukupne filamente za ispis uzeti (i po duljini i po težini) i htio bih provjeriti te vrijednosti

Mjereći kretanje filamenta također mi javite kada je ispis počeo, a kada prestao

Trebalo mi je nešto za pokriti prostor koji je ostao uklanjanjem ružnog divovskog logotipa na prednjoj strani pisača

U redu je

Nadahnuo me ovaj instrukcijski alat koji je stari PS/2 miš prenamijenio kao brojač niti za 3D pisač. Ne samo da je 3D pisaču dodao korisnu značajku, već je i prenamijenio stari uređaj koji bi inače završio na odlagalištu. No, taj je projekt izgrađen oko PS/2 sučelja miša, što se činilo bespotrebno glomaznim. Stoga sam ovo iskoristio kao priliku za učenje o jedinoj bitnoj komponenti: rotacijskom davaču.

Pribor

Rotacijski davač

Razvojna ploča zasnovana na ESP32

I2C OLED zaslon (dvobojna jedinica izgleda posebno cool)

Sitni trenutni gumb

Odmašćen ležaj 608ZZ

Dva o -prstena iz željezne robe (~ 33 mm ID x ~ 1,5 mm promjer profila - vidi komentare)

Dva 2,5 mm samorezna vijka za kućište

Dva vijka, matice i podloške od 4 mm za pričvršćivanje nosača na pisač

Hrpa žica

3D pisač i malo filamenta

Korak 1: Odaberite rotacijski davač

Odaberite rotacijski davač
Odaberite rotacijski davač
Odaberite rotacijski davač
Odaberite rotacijski davač

Rotacijski davači pretvaraju rotacijsko kretanje u električne impulse. Svi miševi stare škole koristili su ih za mjerenje kretanja kotrljajuće se kugle, a moderniji (ha ha) optički miševi još su ih koristili za kotačić za pomicanje, što sam imao oko sebe i koristio za početno eksperimentiranje. Nažalost, moj nije nudio očite točke montiranja, a razlučivost mu je bila loša.

Ako je vrijedno raditi, vrijedi pretjerano raditi. Zato sam kupio veliki, prijateljski koder od 360 impulsa po okretaju i izgradio svoj projekt oko njega. Odabrao sam Signswise Incremental Optical Rotary Encoder, tip LPD3806-360BM-G5-24C. Ali svaki pristojan enkoder će učiniti.

Korak 2: Dodajte remenicu i prazan hod

Dodajte remenicu i prazan hod
Dodajte remenicu i prazan hod

Linearno pomicanje filamenta prevodi se u rotacijsko kretanje davača pomoću remenice. Nit se drži za remenicu uz remenicu.

Remenica ima dva utora, svaki drži rastegnuti o-prsten tako da nema klizanja, U praznom hodu ima jedan v-utor za držanje niti usredsređene na remenicu davača. Nalazi se na ležaju 608ZZ koji sam postavio okolo i koji je montiran na spiralnu oprugu ispisanu točno u glavnom tijelu mog projekta. (STL datoteke priložene u nastavku.)

To je zahtijevalo neke pokušaje i pogreške kako bi se ispravilo, ali moj dizajn trebao bi prilagoditi različite kutove i radijuse kalema, dopuštajući filamentu da se odmota s bilo kojeg dijela kalema, sve od početka do kraja ispisa. Ispisana opruga olakšava ubacivanje ili vađenje žarne niti prilikom zamjene kalema.

Korak 3: Kodiranje

Image
Image

Za samo brojanje filamenta, svaka će razvojna ploča s dva digitalna ulaza biti dovoljna. Davač koji sam odabrao ima četiri pina: Vcc, uzemljenje i dva pina kodera. Evo jako lijepog teksta koji objašnjava kako rade rotacijski koderi i kako ih povezati s Arduinom. (Također: ovaj članak o 3-pinskim koderima.)

Osnovno računanje je jednostavno: dva ulaza - postavljena za interno podizanje tako da vanjski otpornici ne moraju biti lemljeni na Vcc - i jedan prekid. Također sam dodao gumb nula/reset, zahtijevajući još jedan ulaz i prekid:

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)) {position += 1; } else {položaj -= 1; }} void IRAM_ATTR zeroButtonPressed () {// rukovanje nulom & reset}

Ali želio sam više od glupog brojača. S ESP32 (ili ESP8266) i ugrađenim WiFi-jem zapravo mogu učiniti nešto s podacima koje prikupljam. Pomoću jednostavnog koda za vremensko ograničenje (objašnjeno u nastavku) mogu odrediti kada ispis počinje i završava te te događaje poslati kao obavijesti na telefon. U budućnosti mogu dodati senzor istrošenosti i obavijestiti se (i pauzirati pisač) kad mi zatreba pažnja.

Cijeli kod nalazi se na Githubu.

Nekoliko napomena o kodu:

Da biste ovo prilagodili svojoj konstrukciji, sve što trebate je razlučivost (encoderPPR) - u impulsima po okretu, koja je tipično dvostruko veća od navedene specifikacije - i radijus remenice (wheelRadius). Ove vrijednosti, plus ssid i lozinka vašeg WiFi -ja te određene pinove povezane s gumbom, koderom i OLED zaslonom, sve idu u config.h

Gumb nula služi i kao reset - držite ga pritisnutim za ponovno pokretanje ploče, što je korisno za ispravljanje pogrešaka

Prekidi su snažni - ponekad premoćni. Jedan dodir tipke nula mogao bi uzrokovati da se funkcija zeroButtonPressed () pozove 10-20 puta, pa sam dodao logiku debouncea. Mojem optičkom koderu to nije trebalo, već YMMV

Dok se prekidi brinu o ulazima asinkrono, rutina loop () vodi knjigovodstvo. EncoderState - popis koji se može hraniti, povlačiti ili zaustavljati - ažurira se promjenom položaja kodera. Vremenska ograničenja tada određuju kada je pisač započeo i završio ispis. No, lukavi dio je to što 3D pisači često pokreću i zaustavljaju kretanje, pa je najbolje funkcioniralo definiranje događaja "ispis dovršen" koji ostaje neprekidno zaustavljen najmanje 5 sekundi. Svaki pokret pokreće drugi mjerač vremena koji definira događaj "ispis je započeo" samo ako se u vremenskom okviru od 15 sekundi ne dogodi događaj "ispis je dovršen". U praksi ovo djeluje uspješno

Dakle, kôd glavne petlje () može raditi neopterećeno, kôd debounce radi u petlji zadataka RTOS -a. Slično, http zahtjevi za slanjem obavijesti sinkroni su i stoga su pozadinski. Tako se animacije odvijaju glatko i odbrojavanje nikada ne prestaje

U mom primjeru postoji hrpa dodatnog koda za (A) uspostavljanje i održavanje mrežne veze s WiFi-jem i mDNS-om, (B) dohvaćanje vremena s NTC poslužitelja kako bih mogao žigosati svoje obavijesti o početku i završetku i prikazati sat na svom OLED -u i (C) rukuje OTA ažuriranjima tako da ne moram fizički povezivati ploču s Mac -om radi ažuriranja koda. Trenutno je sve u jednoj monolitnoj C ++ datoteci, samo zato što nisam odvojio vrijeme za bolju organizaciju

Koristio sam divnu (i besplatnu) aplikaciju Prowl iOS za slanje push obavijesti na telefon samo s HTTP metodama preuzimanja

Za razvoj koda i fleširanje ploče koristio sam spektakularnu PlatformIO koja radi na Visual Studio Codeu, oba besplatna

Za svoj projekt koristio sam ove knjižnice: u8g2 Olivera, elapsedMillis Paula Stoffregena i HTTPClient Markusa Sattlera, koji dolazi s platformom Espressif ESP32. Sve ostalo dolazi s Arduino knjižnicom ili ESP32 platformom u PlatformIO

Konačno, stvorio sam šest jednostavnih bitmapa moje glavne remenice pod različitim kutovima, tako da sam mogao prikazati urednu malu animaciju kotačića na OLED -u iza pulta. Kreće se u odgovarajućem smjeru pomoću kodera, iako mnogo brže za dramatičniji učinak

Korak 4: Ožičenje

Ožičenje
Ožičenje

Dizajnirao sam ovo kako bi ožičenje bilo jednostavno, uglavnom kako bi moje kućište moglo biti malo, ali i da otklanjanje pogrešaka bude jednostavno. Obratite pažnju na skučene uvjete u mojoj kutiji.:)

Prvi zahtjev bio je 5V opskrbni napon mog rotacijskog davača. Od raznih ESP32 dev ploča koje sam imao u svom skladištu, samo je nekoliko napajalo pravih 5 V na Vcc pin -u kada se napajaju USB -om. (Ostali su mjerili 4,5-4,8 V, što je, u slučaju da vam je matematika loša, niže od 5 V.) Ploča koju sam koristio bila je Wemos Lolin32.

Zatim dolaze dva signalna pina rotacijskog davača. Budući da koristim prekide, glavna briga je da iglice koje koristim ne ometaju ništa. U dokumentima ESP32 navodi se da se ADC2 ne može koristiti istovremeno s WiFi -om, pa to nažalost znači da ne mogu koristiti nijedan od ADC2 GPIO pinova: 0, 2, 4, 12, 13, 14, 15, 25, 26 ili 27. Izabrao sam 16 i 17.

Profesionalni savjet: ako vam se nakon što sve ovo sastavi čini da vaš koder broji unatrag, možete jednostavno zamijeniti dva dodjeljivanja pinova u config.h.

Na kraju spojite žicu za uzemljenje rotacijskog davača na … valjak bubnja … uzemljenje.

Zatim se gumb za nulu/resetiranje povezuje između mase i drugog slobodnog pina (odabrao sam GPIO 18).

Gumb koji sam upotrijebio bio je sićušni trenutni prekidač koji sam spasio od gore spomenutog računalnog miša, ali bilo koji gumb koji imate okolo poslužit će. Možete ga vidjeti kako odmara u malom nosaču koji sam napravio za njega preko ploče.

Konačno, OLED -u, ako već nije spojen na ploču, trebaju samo četiri pina: 3V3, uzemljenje, i2c sat i i2c podaci. Na mojoj ploči za razvoj sat i podaci su 22, odnosno 21.

Korak 5: Ispišite dijelove

Ispišite dijelove
Ispišite dijelove

Za ovu sam konstrukciju dizajnirao sedam dijelova:

Remenica, koja se montira izravno na vratilo rotacijskog davača

Neradni ležaj, koji odgovara ležaju od 608ZZ (uklonite štitnike i odmastite WD40 tako da se slobodno okreće)

Držač, na koji se montiraju dva vijka i koder - obratite pažnju na spiralnu oprugu za prazan hod

Nosač za stabilizaciju držača. Fotografija u ovom koraku prikazuje kako se držač pričvršćuje na držač

Kućište (dolje) za držanje moje ESP32 ploče za razvoj, s prostorom za USB kabel sa strane i drugim na vrhu za konektor koji sam dodao na žice kodera. Ovaj je dizajniran tako da odgovara Wemos Lolin32, pa ćete možda morati malo izmijeniti ovaj dizajn kako bi odgovarao drugoj ploči

Kućište (gore) za držanje OLED zaslona, još jedna spirala za gumb nula / reset

Držač gumba prilagođen za maleni prekidač koji sam imao, dizajniran tako da leži između dvije police unutar donjeg kućišta. Lemilicom sam "zalijepio" prekidač na držač; pogledajte prethodni korak za fotografiju

Sve je dizajnirano za ispis bez nosača. Normalni PLA u vašoj boji je sve što vam treba.

Sve to spojite, pričvrstite na pisač (ovdje će možda biti potrebno malo kreativnosti) i spremni ste.

Preporučeni: