Sadržaj:

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

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

Video: Brojač vlakana pametnog 3D štampača: 5 koraka (sa slikama)
Video: G-Shock Carbon Core Guard Часы | Грязевик | Gravitymaster | GSTEEL | GA-2000 2024, Jun
Anonim
Brojač vlakana pametnog 3D štampača
Brojač vlakana pametnog 3D štampač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 stvari se događaju ako pretjerano ekstrudira ili premalo ekstrudira. Dobro kalibrirani brojač može ekstruder držati poštenim

Rezači približno govore o tome koliko će ukupnog vlakna dati ispis uzeti (i po dužini i po težini) i htio bih provjeriti te vrijednosti

Mjereći kretanje filamenta, također me obavijestite kada je štampanje počelo, a kada prestalo

Trebalo mi je nešto za pokrivanje prostora preostalog uklanjanjem ružnog džinovskog logotipa na prednjoj strani štampača

Svježe je

Inspirirao me ovaj instruktivni uređaj koji je prepravio stari PS/2 miš kao brojač niti za 3D pisač. Ne samo da je 3D korisniku dodao korisnu funkciju, već je i prepravio stari uređaj koji bi inače završio na deponiji. Ali taj projekat je izgrađen oko PS/2 interfejsa miša, koji je izgledao bespotrebno glomazan. Stoga sam ovo iskoristio kao priliku da naučim o jedinoj bitnoj komponenti: rotacijskom koderu.

Supplies

Rotacijski davač

Razvojna ploča zasnovana na ESP32

I2C OLED ekran (dvobojna jedinica izgleda posebno cool)

Sitni trenutni taster

Odmašćen ležaj 608ZZ

Dva o -prstena iz prodavnice gvožđa (~ 33 mm ID x ~ 1,5 mm prečnik profila - pogledajte 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č

Gomila žica

3D štampač 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 loptice, 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 ponudio očigledne tačke montiranja i rezolucija mu je bila loša.

Ako je vrijedno raditi, vrijedi pretjerano raditi. Zato sam kupio veliki, prijateljski koder od 360 impulsa po okretu i izgradio svoj projekt oko njega. Odabrao sam Signswise Inkrementalni optički rotacijski davač tipa LPD3806-360BM-G5-24C. Ali svaki pristojan koder će uspjeti.

Korak 2: Dodajte remenicu i prazan hod

Dodajte remenicu i hod
Dodajte remenicu i hod

Linearno kretanje filamenta prevodi se u rotacijsko kretanje davača pomoću remenice. Žica se za remen pridržava praznim kotačem.

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

Za to je bilo potrebno nekoliko pokušaja i grešaka, ali moj dizajn bi trebao prilagoditi različite kutove i radijuse kalema, dopuštajući filamentu da se odmotava s bilo kojeg dijela kalema, sve od početka do kraja ispisa. Štampana opruga olakšava ubacivanje ili vađenje filamenta pri promjeni kalema.

Korak 3: Kodiranje

Image
Image

Za samo prebrojavanje 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 zaista 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. Dodao sam i dugme nula/reset, zahtijevajući još jedan unos 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 {pozicija -= 1; }} void IRAM_ATTR zeroButtonPressed () {// rukovanje nulom & reset}

Ali želio sam više od glupog brojača. Pomoću ESP32 (ili ESP8266) i ugrađenog WiFi-ja mogu zaista učiniti nešto sa podacima koje prikupljam. Pomoću jednostavnog koda za vremensko ograničenje (objašnjeno u nastavku) mogu odrediti kada štampanje počinje i kada se završava i te događaje slati kao obavještenja na svoj telefon. U budućnosti mogu dodati senzor istrošenosti i obavijestiti se (i pauzirati pisač) kada mi zatreba pažnja.

Cijeli kôd se nalazi na Githubu.

Nekoliko napomena o kodu:

Da biste ovo prilagodili svojoj konstrukciji, potrebna vam je samo rezolucija (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đeni pinovi povezani s gumbom, koderom i OLED zaslonom, sve idu u config.h

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

Prekidi su moćni - ponekad previše moćni. Jedan dodir dugmeta nula mogao bi uzrokovati da se funkcija zeroButtonPressed () pozove 10-20 puta, pa sam dodao logiku debounce. Mojem optičkom koderu to nije trebalo, već YMMV

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

Tako da kod glavne petlje () može raditi neopterećeno, kod debounce radi u petlji RTOS zadataka. Slično, http zahtjevi za slanje obavijesti su sinkroni 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 servera kako bih mogao označiti vremenska i početna obavještenja i prikazati sat na OLED -u i (C) upravljam 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 sa samo HTTP metodama preuzimanja

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

Za svoj projekt koristio sam ove biblioteke: u8g2 Olivera, elapsedMillis Paula Stoffregena i HTTPClient Markus Sattler, koja dolazi s Espressif ESP32 platformom. Sve ostalo dolazi s Arduino bibliotekom 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 okretač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 grešaka bude jednostavno. Obratite pažnju na skučene uslove u mojoj kutiji.:)

Prvi zahtjev je bio 5V napon napajanja mog rotacijskog davača. Od raznih ESP32 dev ploča koje sam imao u svom skladištu, samo je nekoliko napajalo pravih 5V na Vcc pin -u kada se napajaju putem USB -a. (Ostali su mjerili 4,5-4,8V, što je, u slučaju da vam je matematika loša, niže od 5V.) Ploča koju sam koristio 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. Dokumenti ESP32 navode da se ADC2 ne može koristiti istovremeno s WiFi -om, pa to nažalost znači da ne mogu koristiti bilo koji od ADC2 GPIO pinova: 0, 2, 4, 12, 13, 14, 15, 25, 26 ili 27. Izabrao sam 16 i 17.

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

Konačno, spojite žicu uzemljenja rotacijskog davača na … valjak bubnja … uzemljenje.

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

Dugme koje sam koristio bio je sićušni trenutni prekidač koji sam spasio od gore spomenutog računarskog miša, ali bilo koje dugme koje imate oko sebe će poslužiti. Možete ga vidjeti kako leži na malom nosaču koji sam napravio za njega preko ploče.

Konačno, OLED -u, ako već nije povezan s vašom pločom, trebaju samo četiri pina: 3V3, uzemljenje, i2c sat i i2c podaci. Na mojoj razvojnoj ploči sat i podaci su 22, odnosno 21.

Korak 5: Odštampajte delove

Odštampajte delove
Odštampajte delove

Za ovu sam konstrukciju dizajnirao sedam dijelova:

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

Ulež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 davač - 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 (dole) za držanje moje ESP32 dev ploče, sa prostorom za USB kabl sa strane i drugim na vrhu za konektor koji sam dodao na žice kodera. Ovaj je dizajniran 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 ekrana, još jedna spirala za dugme nula / reset

Držač dugmeta prilagođen za mali prekidač koji sam imao, dizajniran da leži između dvije police unutar donjeg kućišta. Koristio sam lemilicu za "lijepljenje" prekidača na držač; pogledajte prethodni korak za fotografiju

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

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

Preporučuje se: