Sisällysluettelo:

Älykäs 3D -tulostimen filamenttilaskuri: 5 vaihetta (kuvilla)
Älykäs 3D -tulostimen filamenttilaskuri: 5 vaihetta (kuvilla)

Video: Älykäs 3D -tulostimen filamenttilaskuri: 5 vaihetta (kuvilla)

Video: Älykäs 3D -tulostimen filamenttilaskuri: 5 vaihetta (kuvilla)
Video: Искусственный интеллект захватил человечество ? #3d #blender #blender3d #aftereffects 2024, Marraskuu
Anonim
Älykäs 3D -tulostimen filamenttilaskuri
Älykäs 3D -tulostimen filamenttilaskuri

Miksi vaivautua laskemaan filamentteja? Muutama syy:

Onnistuneet tulosteet edellyttävät oikein kalibroitua suulakepuristinta: kun gcode käskee suulakepuristinta siirtämään filamenttia 2 mm, sen täytyy liikkua täsmälleen 2 mm. Huonoja asioita tapahtuu, jos se ylittää tai alittaa. Hyvin kalibroitu laskuri voi pitää suulakepuristimen rehellisenä

Viipaloijat arvioivat, kuinka paljon kokonaislanka tietyssä tulostuksessa kestää (sekä pituudessa että painossa), ja haluaisin tarkistaa nämä arvot

Hehkulangan liikkeen mittaaminen antaa myös tietää, milloin tulostus on alkanut ja milloin se on pysähtynyt

Tarvitsin jotain peittämään tilaa, joka jäi tulostimen etuosan ruman jättilogon poistamisesta

Siistiä

Inspiroiduin tästä ohjeesta, joka asetti vanhan PS/2 -hiiren 3D -tulostimen filamenttilaskijaksi. Se ei vain lisännyt hyödyllistä ominaisuutta 3D -tulostimeen, vaan se käytti vanhaa laitetta, joka olisi muuten päätynyt kaatopaikalle. Mutta tämä projekti rakennettiin hiiren PS/2 -käyttöliittymän ympärille, joka näytti tarpeettoman hankalalta. Joten pidin tätä tilaisuutena oppia ainoasta olennaisesta osasta: kiertokooderista.

Tarvikkeet

Pyörivä anturi

ESP32 -pohjainen kehityskortti

I2C OLED -näyttö (kaksivärinen yksikkö näyttää erityisen viileältä)

Pieni hetkellinen painike

Rasvaton 608ZZ-laakeri

Kaksi O -rengasta rautakaupasta (~ 33 mm ID x ~ 1,5 mm profiilin halkaisija - katso kommentit)

Kaksi 2,5 mm: n itsekelausruuvia kotelolle

Kaksi 4 mm: n ruuvia, mutteria ja aluslevyä telineen kiinnittämiseksi tulostimeen

Joukko johtoja

3D -tulostin ja joitakin filamentteja

Vaihe 1: Valitse kiertokooderi

Valitse kiertokooderi
Valitse kiertokooderi
Valitse kiertokooderi
Valitse kiertokooderi

Pyörivät anturit muuttavat pyörimisliikkeen sähköpulsseiksi. Kaikki vanhan koulun hiiret käyttivät niitä vierintäpallon liikkeen mittaamiseen, ja nykyaikaisemmat (ha ha) optiset hiiret käyttivät niitä edelleen vierityspyörässä, jota minulla oli ympärilläni ja jota käytin ensimmäisiin kokeisiin. Valitettavasti minun ei tarjonnut ilmeisiä kiinnityspisteitä ja sen resoluutio oli huono.

Jos kannattaa tehdä, kannattaa tehdä liikaa. Joten ostin suuren, ystävällisen 360 pulssin kierrosta -kooderin ja rakensin projektini sen ympärille. Valitsin Signswise-inkrementaalisen optisen kiertokooderin, tyyppi LPD3806-360BM-G5-24C. Mutta mikä tahansa kunnollinen kooderi onnistuu.

Vaihe 2: Lisää hihnapyörä ja juoksupyörä

Lisää hihnapyörä ja juoksupyörä
Lisää hihnapyörä ja juoksupyörä

Filamentin lineaarinen liike muutetaan hihnapyörän avulla kooderin pyörimisliikkeeksi. Ja joutokäynti pitää hehkulankaa hihnapyörää vasten.

Hihnapyörässä on kaksi uraa, joista jokaisessa on venytetty O-rengas, joten liukumista ei tapahdu.

Välipyörässä on yksi v-ura, joka pitää hehkulangan keskellä anturipyörää. Se istuu 608ZZ -laakerilla, jonka olin asettanut ympärilleni, ja se on asennettu kierrejouselle, joka on painettu suoraan projektini runkoon. (STL -tiedostot alla.)

Tämä vei jonkin verran yritystä ja erehdystä päästäkseen oikeaan, mutta suunnitteluni tulisi ottaa huomioon erilaisia kulmia ja kelan säteitä, jolloin filamentti voi irrota kelan mistä tahansa osasta aina tulostuksen alusta loppuun. Ja painettu jousi helpottaa hehkulangan ponnahtamista sisään tai ulos kelaa vaihdettaessa.

Vaihe 3: Koodaus

Image
Image

Filamenttien laskemiseksi kaikki kehityskortit, joissa on kaksi digitaalituloa, sopivat. Valitsemassani anturissa on neljä nastaa: Vcc, maadoitus ja kaksi anturin nastaa. Tässä on todella mukava kirjoitus, joka selittää pyörivien anturien toiminnan ja niiden liittämisen Arduinon kanssa. (Myös: tämä artikkeli 3-nastaisista enkoodereista.)

Peruslaskenta on yksinkertainen: kaksi tuloa - asetettu vetämään ylös sisäisesti, joten ulkoisia vastuksia ei tarvitse juottaa Vcc: hen - ja yksi keskeytys. Lisäsin myös nollaus-/nollauspainikkeen, joka vaatii vielä yhden tulon ja keskeytyksen:

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; } muu {sijainti -= 1; }} void IRAM_ATTR zeroButtonPressed () {// käsittele nollaa ja nollaa}

Mutta halusin enemmän kuin vain tyhmän laskurin. ESP32: n (tai ESP8266) ja sen sisäänrakennetun WiFi: n avulla voin itse tehdä jotain keräämilläni tiedoilla. Käyttämällä yksinkertaista aikakatkaisukoodia (selitetty alla) voin määrittää, milloin tulostus alkaa ja päättyy, ja lähettää tapahtumat ilmoituksina puhelimeeni. Jatkossa voin lisätä tyhjennysanturin ja ilmoittaa itselleni (ja keskeyttää tulostimen), kun huomioni on tarpeen.

Koko koodi on Githubissa.

Muutama huomautus koodista:

Jotta voit mukauttaa tämän rakennukseesi, tarvitset vain resoluution (encoderPPR) - pulsseina kierrosta kohden, joka on tyypillisesti kaksinkertainen ilmoitettuun määrään nähden - ja hihnapyörän säteen (wheelRadius). Nämä arvot sekä wifi: n SSID ja salasana sekä painikkeeseen, enkooderiin ja OLED -näyttöön liitetyt erityiset nastat menevät kokoonpanoon h

Nollapainike toimii myös nollausnäytönä - pidä sitä painettuna käynnistääksesi levyn uudelleen, mikä on hyödyllistä virheenkorjauksessa

Keskeytykset ovat voimakkaita - joskus liian voimakkaita. Yksittäinen nollapainikkeen napautus voi aiheuttaa nollaButtonPressed () -toiminnon kutsumisen 10-20 kertaa, joten lisäsin jonkin verran poistumislogiikkaa. Optinen kooderini ei tarvinnut sitä, mutta YMMV

Vaikka keskeytykset huolehtivat tuloista asynkronisesti, silmukka () -rutiini hoitaa kirjanpidon. EncoderState - enum, jota voidaan syöttää, vetää sisään tai pysäyttää - päivitetään enkooderin asennon muutoksen myötä. Aikakatkaisut määrittävät sitten, milloin tulostin on aloittanut ja päättänyt tulostuksen. Mutta hankala osa on, että 3D -tulostimet aloittavat ja pysäyttävät usein liikkeen, joten parhaiten toimi määrittelemällä "tulostus valmis" -tapahtuma, joka pysyy jatkuvasti pysäytettynä vähintään 5 sekuntia. Kaikki liikkeet laukaisevat toisen ajastimen, joka määrittelee "tulostus aloitettu" -tapahtuman vain, jos "tulostus valmis" -tapahtumaa ei tapahdu 15 sekunnin aikana. Käytännössä tämä toimii uimasti

Pääsilmukan () koodi voi siis toimia rasittamattomana, ja poistokoodi suoritetaan RTOS -tehtäväsilmukassa. Samoin http -pyynnöt ilmoitusten lähettämiseksi ovat synkronisia ja siksi taustalla. Näin animaatiot toimivat sujuvasti ja laskenta ei lopu koskaan

Esimerkissäni on joukko lisäkoodeja (A) verkkoyhteyden luomiseksi ja ylläpitämiseksi WiFi: n ja mDNS: n kanssa, (B) haetaan aika NTC-palvelimelta, jotta voisin aikaleimata aloitus- ja lopetusilmoitukset ja näyttää pirteän kellon OLED -laitteessani ja (C) käsittelevät OTA -päivityksiä, joten minun ei tarvitse fyysisesti liittää levyäni Mac -tietokoneeseeni koodipäivityksiä varten. Tällä hetkellä kaikki on yhdessä monoliittisessa C ++ -tiedostossa vain siksi, että en ole ottanut aikaa järjestääksesi sitä paremmin

Käytin upeaa (ja ilmaista) Prowl iOS -sovellusta lähettääkseni push -ilmoituksia puhelimeeni ilman HTTP -hakumenetelmiä

Koodin kehittämiseksi ja levyn salamaksi käytin upeaa PlatformIO: ta, joka toimii Visual Studio Code -palvelussa, molemmat ilmaiseksi

Projektissani käytin näitä kirjastoja: Oliverin u8g2, Paul Stoffregenin kulunut Millis ja Markus Sattlerin HTTPClient, joka tulee Espressif ESP32 -alustan mukana. Kaikki muu tulee joko Arduino -kirjaston tai PlatformIO: n ESP32 -alustan mukana

Lopuksi tein kuusi yksinkertaista bittikarttaa päähihnapyörästäni eri kulmista, jotta pystyin näyttämään siistin pienen pyörivän pyörän animaation OLED -laitteella tiskin takana. Se liikkuu oikeaan suuntaan kooderin kanssa, vaikka paljon nopeammin dramaattisemman vaikutuksen aikaansaamiseksi

Vaihe 4: Johdotus

Johdotus
Johdotus

Suunnittelin tämän niin, että johdotus olisi yksinkertaista, enimmäkseen niin, että koteloni voisi olla pieni, mutta myös virheenkorjaus olisi suoraviivaista. Huomaa ahtaat olosuhteet pienessä laatikossani.:)

Ensimmäinen vaatimus oli pyörivän anturini 5 V: n syöttöjännite. Varastossani olevista erilaisista ESP32 -kehityskorteista vain harvat toimittivat todellista 5 V: n jännitettä Vcc -nastassa, kun ne saavat virtaa USB: stä. (Muut mitasivat 4,5-4,8 V, mikä on matematiikkasi ollessa huono, alle 5 V.) Käyttämäni lauta oli Wemos Lolin32.

Seuraavaksi tulevat kaksi pyörivän anturin signaalitappia. Koska käytän keskeytyksiä, suurin huolenaihe on, että käyttämäni nastat eivät häiritse mitään. ESP32 -asiakirjoissa todetaan, että ADC2: ta ei voi käyttää samanaikaisesti WiFi: n kanssa, joten valitettavasti en voi käyttää mitään ADC2 GPIO -nastoja: 0, 2, 4, 12, 13, 14, 15, 25, 26 tai 27. Valitsin 16 ja 17.

Ammattilaisvinkki: jos kaiken tämän koon jälkeen kooderi näyttää laskevan taaksepäin, voit vain vaihtaa kaksi nastamääritystä konfiguraatiossa h.

Kytke lopuksi pyörivän anturin maadoitusjohto… rumputelaan… maadoitusnastaan.

Seuraavaksi nollaus-/nollauspainike yhdistetään maan ja toisen vapaan nastan väliin (valitsin GPIO 18).

Käyttämäni painike oli pieni hetkellinen kytkin, jonka pelastin edellä mainitusta tietokonehiirestä, mutta mikä tahansa painike, jonka käytät, tekee. Näet sen lepäävän pienessä telineessä, jonka tein sille suoraan levyn yli.

Lopuksi, jos OLED ei ole jo liitetty korttiin, se tarvitsee vain neljä nastaa: 3V3, maadoitus, i2c -kello ja i2c -data. Kehityskortillani kello ja tiedot ovat vastaavasti 22 ja 21.

Vaihe 5: Tulosta osat

Tulosta osat
Tulosta osat

Suunnittelin tähän rakenteeseen seitsemän osaa:

Hihnapyörä, joka kiinnitetään suoraan pyörivän anturin akselille

Jousipyörä, joka sopii 608ZZ -laakerin päälle (poista suojat ja poista rasva WD40: llä, jotta se pyörii vapaasti)

Pidike, johon kaksi rintakehää ja anturi kiinnitetään - huomioi joutokäynnin kierrejousi

Kiinnike pidikkeen vakauttamiseksi. Tämän vaiheen kuva näyttää, kuinka pidike kiinnittyy pidikkeeseen

Kotelo (alhaalla) ESP32 -kehityskortin pitämiseksi, jossa on tilaa USB -kaapelille sivulla ja toinen yläpuolella liittimelle, jonka lisäsin anturijohtoihini. Tämä on suunniteltu sopimaan Wemos Lolin32: een, joten sinun on ehkä muutettava tätä muotoilua hieman, jotta se sopii erilaiseen levyyn

Kotelo (ylhäällä) OLED -näytön pitämiseksi, toinen kierre nollaus- / nollauspainikkeelle

Nappipidike, joka on räätälöity pienelle kytkimelleni, joka on suunniteltu lepäämään kahden kotelon sisällä olevan hyllyn välissä. Liimasin kytkimen pidikkeeseen juotosraudalla; katso valokuvan edellinen vaihe

Kaikki on suunniteltu tulostettavaksi ilman tukia. Normaali PLA valitsemassasi värissä on kaikki mitä tarvitset.

Laita kaikki yhteen, liitä tulostimeesi (tässä tarvitaan ehkä luovuutta), ja olet valmis lähtemään.

Suositeltava: