Kazalo:

Števec nitk pametnega 3D tiskalnika: 5 korakov (s slikami)
Števec nitk pametnega 3D tiskalnika: 5 korakov (s slikami)

Video: Števec nitk pametnega 3D tiskalnika: 5 korakov (s slikami)

Video: Števec nitk pametnega 3D tiskalnika: 5 korakov (s slikami)
Video: Wilee - Night Drive 2024, November
Anonim
Pametni števec nitk za 3D tiskalnik
Pametni števec nitk za 3D tiskalnik

Zakaj bi se trudili s štetjem filamentov? Nekaj razlogov:

Za uspešne odtise je potreben ustrezno umerjen ekstruder: ko gcode pove ekstruderju, naj premakne nit 2 mm, se mora premakniti natančno 2 mm. Slabe stvari se zgodijo, če se preveč iztisne ali premalo iztisne. Dobro umerjen števec lahko ekstruder ohranja pošten

Rezalniki približajo, koliko celotnega filamenta porabi določen tisk (tako po dolžini kot po teži), zato bi želel preveriti te vrednosti

Merjenje gibanja filamentov mi tudi sporoči, kdaj se je tiskanje začelo in kdaj prenehalo

Potreboval sem nekaj, da pokrijem prostor, ki je ostal zaradi odstranitve grdega velikanskega logotipa na sprednji strani tiskalnika

To je kul

Navdihnil me je ta instruktor, ki je staro miško PS/2 preuredil kot števec filamentov za 3D tiskalnik. Ne samo, da je 3D tiskalniku dodal uporabno funkcijo, temveč je tudi preuredil staro napravo, ki bi sicer končala na odlagališču. Toda ta projekt je bil zgrajen okoli vmesnika miške PS/2, ki se je zdel nepotrebno okoren. Zato sem to izkoristil kot priložnost za spoznavanje edine bistvene komponente: rotacijskega dajalnika.

Zaloge

Rotacijski dajalnik

Razvojna plošča na osnovi ESP32

I2C OLED zaslon (dvobarvna enota izgleda še posebej kul)

Majhen trenuten gumb

Odmaščen ležaj 608ZZ

Dva o -obroča iz trgovine s strojno opremo (~ 33 mm ID x ~ 1,5 mm premer profila - glej komentarje)

Dva 2,5 mm samorezna vijaka za ohišje

Dva 4 mm vijaka, matice in podložke za pritrditev nosilca na tiskalnik

Kup žic

3D tiskalnik in nekaj filamentov

Korak: Izberite rotacijski dajalnik

Izberite rotacijski dajalnik
Izberite rotacijski dajalnik
Izberite rotacijski dajalnik
Izberite rotacijski dajalnik

Rotacijski dajalniki pretvorijo rotacijsko gibanje v električne impulze. Vse miške stare šole so jih uporabljale za merjenje gibanja kotalne žoge, sodobnejše (ha ha) optične miši pa so jih še vedno uporabljale za drsno kolo, kar sem imel naokoli in uporabil za začetno eksperimentiranje. Na žalost moj ni ponudil očitnih točk pritrditve in njegova ločljivost je bila slaba.

Če je vredno narediti, je vredno pretiravati. Zato sem kupil velik, prijazen kodirnik s 360-utripnimi impulzi na vrtljaj in okoli njega zgradil svoj projekt. Tisti, ki sem ga izbral, je bil Signswise Incremental Optical Rotary Encoder, tip LPD3806-360BM-G5-24C. Toda vsak dostojen kodirnik bo ustrezal.

Korak: Dodajte škripec in prosti tek

Dodajte škripec in tekalnik
Dodajte škripec in tekalnik

Linearno gibanje žarilne nitke se s pomočjo škripca prevede v rotacijsko gibanje dajalnika. In nitko drži proti jermenici brez tekača.

Jermenica ima dva utora, od katerih ima vsak raztegnjen o-obroč, tako da ni zdrsa, Prosti tek ima en sam v-žleb, ki drži žarilno nitko centrirano na jermenici dajalnika. Sedi na ležaju 608ZZ, ki sem ga imel okoli, in je nameščen na spiralni vzmeti, natisnjeni v glavnem delu mojega projekta. (Spodaj priložene datoteke STL.)

To je trajalo nekaj poskusov in napak, da bi se popravilo, vendar bi morala moja zasnova upoštevati različne kote in polmere tuljave, ki omogočajo, da se nitka odvije od katerega koli dela tuljave, vse od začetka do konca tiska. Tiskana vzmet olajša vstavljanje ali odstranjevanje žarilne nitke pri menjavi tuljav.

3. korak: Kodiranje

Image
Image

Za samo štetje filamentov bo ustrezala vsaka razvojna plošča z dvema digitalnima vhodoma. Dajalnik, ki sem ga izbral, ima štiri zatiče: Vcc, ozemljitev in dva zatiča dajalnika. Tukaj je zelo lep zapis, ki pojasnjuje, kako delujejo rotacijski kodirniki in kako jih povezati z Arduinom. (Tudi: ta članek o 3-polnih kodirnikih.)

Osnovno štetje je preprosto: dva vhoda - nastavljena tako, da se povlečeta navznoter, tako da zunanjih uporov ni treba spajkati na Vcc - in en prekinitev. Dodal sem tudi gumb nič/ponastavitev, ki zahteva še en vnos in prekinitev:

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 () {// ročaj nič & ponastavi}

Želel pa sem več kot le neumen števec. Z ESP32 (ali ESP8266) in vgrajeno WiFi lahko dejansko naredim nekaj s podatki, ki jih zbiram. Z uporabo preproste kode časovne omejitve (razloženo spodaj) lahko določim, kdaj se tiskanje začne in konča, ter te dogodke pošljem kot obvestila v telefon. V prihodnosti bom lahko dodal senzor izteka in se obvestil (in začasno ustavil tiskalnik), ko bo potrebna moja pozornost.

Celotna koda je na Githubu.

Nekaj opomb o kodi:

Če želite to prilagoditi svoji zgradbi, potrebujete le ločljivost (encoderPPR) - v impulzih na vrtljaj, ki je običajno dvakrat večjo od navedene specifikacije - in polmer škripca (wheelRadius). Te vrednosti, skupaj ssid in geslo za vaš wifi ter posebni zatiči, povezani z gumbom, kodirnikom in zaslonom OLED, so vse v nastavitvah config.h

Gumb nič se podvoji tudi kot ponastavitev - pridržite ga, da znova zaženete ploščo, kar je uporabno za odpravljanje napak

Prekinitve so močne - včasih premočne. En sam pritisk na gumb nič lahko povzroči, da se funkcija zeroButtonPressed () pokliče 10-20 krat, zato sem dodal nekaj logike razvezovanja. Moj optični kodirnik ga ni potreboval, ampak YMMV

Medtem ko prekinitve skrbijo za vnose asinhrono, rutina loop () vodi knjigovodstvo. EncoderState - naštevanje, ki se lahko poda, umakne ali ustavi - se posodobi s spremembo položaja kodirnika. Časovne omejitve nato določijo, kdaj je tiskalnik začel in končal tiskanje. Zanimivo pa je, da 3D -tiskalniki pogosto zaženejo in ustavijo gibanje, zato je bilo najbolje, da se opredeli dogodek »tiskanje končano«, ki ostane neprekinjeno ustavljen vsaj 5 sekund. Vsako gibanje sproži drugi časovnik, ki definira dogodek "tiskanje se je začelo" le, če v časovnem okviru 15 sekund ne pride do dogodka "tiskanje končano". V praksi to deluje plavalno

Tako lahko koda main loop () teče neobremenjena, koda debounce pa v opravilni zanki RTOS. Prav tako so zahteve HTTP za pošiljanje obvestil sinhrone in zato v ozadju. Tako animacije potekajo nemoteno in štetje se nikoli ne ustavi

V mojem primeru je kup dodatne kode za (A) vzpostavitev in vzdrževanje omrežne povezave z WiFi in mDNS, (B) pridobivanje časa s strežnika NTC, da bi lahko časovno označil svoja obvestila o začetku in koncu ter prikazal neumno uro na mojih OLED in (C) upravljati posodobitve OTA, tako da mi ni treba fizično povezati plošče z računalnikom Mac za posodobitve kode. Trenutno je vse v eni monolitni datoteki C ++, samo zato, ker si nisem vzel časa za boljšo organizacijo

Uporabil sem čudovito (in brezplačno) aplikacijo Prowl iOS za pošiljanje potisnih obvestil v telefon z nič več kot metodami HTTP Get

Za razvoj kode in utripanje plošče sem uporabil spektakularno PlatformIO, ki deluje na Visual Studio Code, oba brezplačna

Za svoj projekt sem uporabil te knjižnice: u8g2 Oliverja, elapsedMillis Paul Stoffregen in HTTPClient Markus Sattler, ki prihaja s platformo Espressif ESP32. Vse ostalo prihaja s knjižnico Arduino ali platformo ESP32 v PlatformIO

Nazadnje sem ustvaril šest preprostih bitnih slik mojega glavnega škripca pod različnimi koti, tako da sem lahko na OLED -ju za pultom pokazal lepo malo animacijo vrtečega se kolesa. S kodirnikom se premika v ustrezno smer, čeprav veliko hitreje za bolj dramatičen učinek

4. korak: Ožičenje

Ožičenje
Ožičenje

To sem zasnoval tako, da bi bilo ožičenje preprosto, večinoma zato, da bi bilo moje ohišje lahko majhno, hkrati pa bi bilo odpravljanje napak enostavno. Bodite pozorni na utesnjene razmere v moji majhni škatlici.:)

Prva zahteva je bila 5V napajalna napetost mojega rotacijskega dajalnika. Od različnih plošč za razvijalce ESP32, ki sem jih imel v zalogi, jih je le nekaj napajalo 5 V na pin Vcc, ko jih napaja USB. (Drugi so merili 4,5-4,8 V, kar je v primeru slabe matematike nižje od 5 V.) Deska, ki sem jo uporabil, je bila Wemos Lolin32.

Nato prideta dva signalna zatiča rotacijskega dajalnika. Ker uporabljam prekinitve, je glavna skrb, da nožice, ki jih uporabljam, ne motijo ničesar. Dokumenti ESP32 navajajo, da ADC2 ni mogoče uporabljati hkrati z WiFi, zato to na žalost pomeni, da ne morem uporabiti nobenega od zatičev GPIO ADC2: 0, 2, 4, 12, 13, 14, 15, 25, 26 ali 27. Izbral sem 16 in 17.

Nasvet profesionalca: če se zdi, da vaš dajalnik po tem, ko vse skupaj sestavite, šteje nazaj, lahko samo zamenjate dve dodelitvi pin v config.h.

Na koncu priključite ozemljitveno žico rotacijskega dajalnika na… boben valja… ozemljitveni zatič.

Nato se gumb za ničlo/ponastavitev poveže med maso in drugim prostim zatičem (izbral sem GPIO 18).

Gumb, ki sem ga uporabil, je bilo majhno trenutno stikalo, ki sem ga rešil iz prej omenjene računalniške miške, toda vsak gumb, ki ga imate naokoli, bo ustrezal. Lahko ga vidite počivati v majhnem nosilcu, ki sem ga naredil za desko.

Končno, OLED, če še ni povezan z vašo ploščo, potrebuje le štiri zatiče: podatke 3V3, ozemljitev, uro i2c in podatke i2c. Na moji plošči za razvijalce sta ura in podatki 22 oziroma 21.

5. korak: Natisnite dele

Natisnite dele
Natisnite dele

Za to gradnjo sem oblikoval sedem delov:

Jermenica, ki se montira neposredno na gred rotacijskega dajalnika

Prosti tek, ki se prilega ležaju 608ZZ (odstranite lupine in razmastite z WD40, da se prosto vrti)

Držalo, na katerem sta pritrjena dva vijaka in dajalnik - upoštevajte spiralno vzmet za tekalno kolesce

Nosilec za stabilizacijo držala. Fotografija v tem koraku prikazuje, kako se nosilec pritrdi na držalo

Ohišje (spodaj) za mojo ploščo za razvijalce ESP32, s prostorom za kabel USB na strani in drugim na vrhu za priključek, ki sem ga dodal žicam kodirnika. Ta je zasnovan tako, da ustreza Wemos Lolin32, zato boste morda morali to obliko nekoliko spremeniti, da se prilega drugi plošči

Ohišje (zgoraj) za zaslon OLED, še ena spirala za gumb za ničlo / ponastavitev

Držalo za gumbe, prilagojeno za majhno stikalo, ki sem ga imel, namenjeno za počitek med dvema policama v spodnjem ohišju. Za spajanje stikala na držalo sem uporabil spajkalnik; glej prejšnji korak za fotografijo

Vse je zasnovano za tiskanje brez nosilcev. Običajni PLA v vaši izbrani barvi je vse, kar potrebujete.

Vse skupaj povežite, pritrdite na tiskalnik (tukaj boste morda potrebovali nekaj ustvarjalnosti) in ste pripravljeni.

Priporočena: