Sadržaj:
- Pribor
- Korak 1: Odaberite rotacijski davač
- Korak 2: Dodajte remenicu i prazan hod
- Korak 3: Kodiranje
- Korak 4: Ožičenje
- Korak 5: Ispišite dijelove
Video: Brojač vlakana pametnog 3D pisača: 5 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
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č
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
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
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
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
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:
7 segmentni sat - izdanje malih pisača: 9 koraka (sa slikama)
7 -segmentni sat - izdanje malih pisača: Još jedan 7 -segmentni sat. xDAIako moram reći da ne izgleda tako ludo dok gledate moj profil Instructables. Vjerojatno će postati još iritantniji onog trenutka kad pogledate moj profil raznovrsnosti. Pa zašto sam se uopće potrudio napraviti još jedan
DIY NANOLEAF - Nema 3D pisača: 11 koraka (sa slikama)
DIY NANOLEAF - Nema 3D pisača: Ljubitelji Hii Tech -a u ovom uputstvu pokazat ću vam kako napraviti Arora Nanoleaf Bez upotrebe električnih alata & možete prilagoditi te ploče. Napravio sam 9 panela, ukupno 54 LED diode Neo piksela. Ukupni troškovi ispod 20 USD (indijski ₹ 1500) Nanoleaf svjetlosne ploče
Napravite plešućeg robota bez 3D pisača i Arduina/#pametna kreativnost: 11 koraka (sa slikama)
Napravite plešućeg robota bez 3D pisača i Arduina/#pametne kreativnosti: Pozdrav prijatelji, u ovom vodiču ću vam pokazati kako napraviti plešućeg robota kod kuće bez 3D pisača i bez Arduina. Ovaj robot može plesati, auto balansirati, stvarati glazbu i hodati. Dizajn robota također izgleda tako super
Branje dijelova s laserskog pisača: 10 koraka (sa slikama)
Branje dijelova s laserskog pisača: BESPLATNO! Lijepa riječ zar ne. Besplatno je prefiks za toliko uzbudljivih idioma; Slobodni govor, besplatni novac, besplatni ručak i besplatna ljubav samo su neki od njih. Međutim, ništa ne izaziva maštu, niti srce ubrzava poput misli o
Napravite: prijava na natječaj za značku NYC sa starog GameBoy pisača: 14 koraka (sa slikama)
Make: Prijava na natječaj za značku NYC -a sa starog GameBoy pisača: Pozdrav svima, evo mog drugog hita na Instructable .. budite ljubazni..Znači lokalno okupljanje Make: NYC imalo je natjecanje za značke za svoj drugi sastanak .. (veza ovdje) , suština natjecanja je izraditi nosivu oznaku imena/značku od neke vrste, od nekih materijala