Sisukord:

Nutikas 3D -printeri hõõgniidi loendur: 5 sammu (piltidega)
Nutikas 3D -printeri hõõgniidi loendur: 5 sammu (piltidega)

Video: Nutikas 3D -printeri hõõgniidi loendur: 5 sammu (piltidega)

Video: Nutikas 3D -printeri hõõgniidi loendur: 5 sammu (piltidega)
Video: Открытие палубы командорских брокеров, улицы новой Капенны 2024, November
Anonim
Nutikas 3D -printeri hõõgniidi loendur
Nutikas 3D -printeri hõõgniidi loendur

Miks peaks hõõgniiti lugema? Mõned põhjused:

Edukate väljatrükkide jaoks on vaja korralikult kalibreeritud ekstruuderit: kui gcode käsib ekstruuderil hõõgniiti 2 mm nihutada, peab see liikuma täpselt 2 mm. Halbu asju juhtub, kui see üle või üle pressib. Hästi kalibreeritud loendur võib hoida ekstruuderi ausana

Viilutajad hindavad ligikaudselt, kui palju kogu trükk hõõgniiti kokku võtab (nii pikkuses kui ka kaalus), ja ma soovin neid väärtusi kontrollida

Hõõgniidi liikumise mõõtmine annab mulle ka teada, millal printimine on alanud ja millal see on peatunud

Mul oli vaja midagi, mis kataks ruumi, mis jäi printeri esikülje koleda hiiglasliku logo eemaldamisest

See on lahe

Mind inspireeris see juhend, mis muutis vana PS/2 hiire 3D -printeri hõõgniidi loenduriks. See mitte ainult ei lisanud 3D -printerile kasulikke funktsioone, vaid muutis ka vana seadme, mis muidu oleks prügilasse sattunud. Kuid see projekt oli üles ehitatud hiire PS/2 liidese ümber, mis tundus asjatult tülikas. Seega võtsin seda kui võimalust õppida tundma ainsat olulist komponenti: pöörlevat kodeerijat.

Tarvikud

Pöörlev kodeerija

ESP32 põhine arendusplaat

I2C OLED-ekraan (kahevärviline seade tundub eriti lahe)

Pisike hetkeline nupp

Rasvatustatud 608ZZ laager

Kaks o -rõngast ehituspoest (~ 33 mm ID x ~ 1,5 mm profiili läbimõõt - vt kommentaare)

Kaks 2,5 mm isekeermestavat kruvi korpuse jaoks

Kaks 4 mm kruvi, mutrit ja seibi kinnituse kinnitamiseks printeri külge

Hunnik juhtmeid

3D -printer ja mõni hõõgniit

Samm: valige pöördkodeerija

Valige pöördkodeerija
Valige pöördkodeerija
Valige pöördkodeerija
Valige pöördkodeerija

Pöörlevad kodeerijad muudavad pöörlemisliikumise elektrilisteks impulssideks. Kõik vanakooli hiired kasutasid neid veereva palli liikumise mõõtmiseks ja kaasaegsemad (ha ha) optilised hiired kasutasid neid ikkagi kerimisratta jaoks, mille ma lasin ja kasutasin esialgseteks katsetusteks. Kahjuks ei pakkunud minu oma ilmselgeid kinnituspunkte ja selle eraldusvõime oli halb.

Kui tasub teha, tasub üle pingutada. Nii et ostsin suure, sõbraliku 360-impulsi pöörde kohta kodeerija ja ehitasin oma projekti selle ümber. Valisin ühe Signswise'i täiendava optilise pöörleva kodeerija, tüüp LPD3806-360BM-G5-24C. Kuid iga korralik kodeerija teeb seda.

2. toiming: lisage rihmaratas ja tühikäigukast

Lisage rihmaratas ja tühikäik
Lisage rihmaratas ja tühikäik

Hõõgniidi lineaarne liikumine teisendatakse rihmaratta abil kodeerija pöörlevaks liikumiseks. Ja hõõgniiti hoiab tühikäigul rihmaratta vastu.

Rihmarattal on kaks soont, millest igaüks hoiab venitatud O-rõngast, nii et libisemist pole, Tühikäigul on üks v-soon, mis hoiab hõõgniidi enkootori rihmaratta keskel. See asub 608ZZ laagril, mille ma ümber panin, ja see on paigaldatud spiraalvedrule, mis on trükitud otse minu projekti põhiosasse. (STL -failid on lisatud allpool.)

Õigeks saamiseks kulus katse -eksituse meetodil, kuid minu kujundus peaks vastama erinevatele nurkadele ja poolide raadiustele, võimaldades hõõgniidil rulli mis tahes osast kogu printimise algusest lõpuni lahti kerida. Ja trükitud vedru abil on pooli vahetades lihtne hõõgniiti sisse või välja hüpata.

Samm: kodeerimine

Image
Image

Hõõgniidi loendamiseks sobib iga kahe digitaalsisendiga arendustahvel. Minu valitud kodeerijal on neli tihvti: Vcc, jahvatatud ja kaks kodeerimisnõela. Siin on tõesti tore kirjutis, mis selgitab, kuidas pöördkodeerijad töötavad ja kuidas neid Arduinoga liidestada. (Samuti: see artikkel 3-kontaktiliste kodeerijate kohta.)

Põhiline loendamine on lihtne: kaks sisendit, mis on sisemiselt üles tõmmatud, nii et välistakistusi ei pea Vcc -le jootma, ja üks katkestus. Lisasin ka nulli/lähtestamise nupu, nõudes veel ühte sisendit ja katkestust:

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 {positsioon -= 1; }} void IRAM_ATTR zeroButtonPressed () {// käepide null ja lähtestamine}

Aga ma tahtsin enamat kui lihtsalt tumma letti. ESP32 (või ESP8266) ja selle sisseehitatud WiFi abil saan tegelikult kogutud andmetega midagi ette võtta. Kasutades lihtsat ajalõpu koodi (selgitatud allpool), saan kindlaks teha, millal printimine algab ja lõpeb, ning saata need sündmused märguannetena oma telefoni. Tulevikus võin lisada tühjenemisanduri ja teavitada ennast (ning peatada printeri), kui minu tähelepanu vajatakse.

Täielik kood on Githubis.

Paar märkust koodi kohta:

Selle kohandamiseks oma ehitise jaoks vajate ainult eraldusvõimet (kooderPPR) - impulssides pöörde kohta, mis on tavaliselt kaks korda suurem kui määratud spetsifikatsioon - ja rihmaratta raadiust (wheelRadius). Need väärtused, pluss teie wifi SSID ja parool ning konkreetsed nuppude, kodeerija ja OLED -ekraaniga ühendatud tihvtid lähevad konfiguratsiooni. H

Nullnupp toimib ka lähtestamisena - tahvli taaskäivitamiseks hoidke seda all, mis on silumiseks kasulik

Katkestused on võimsad - mõnikord liiga võimsad. Üks nullnupu puudutus võib põhjustada funktsiooni zeroButtonPressed () 10–20-kordse kutsumise, seega lisasin natuke tagasilöögiloogikat. Minu optiline kodeerija seda ei vajanud, aga YMMV

Kui katkestused hoolitsevad sisendite eest asünkroonselt, siis raamatupidamisega tegeleb tsükkel (). EncoderState - enum, mida saab toita, tagasi tõmmata või peatada - uuendatakse koos kodeerija positsiooni muutmisega. Aegumised määravad seejärel, millal printer on printimist alustanud ja lõpetanud. Kuid keeruline osa on see, et 3D -printerid alustavad ja peatavad sageli liikumist, nii et kõige paremini toimis määratlus "printimise lõpetamise" sündmus, mis jääb pidevalt seisma vähemalt 5 sekundiks. Igasugune liikumine käivitab teise taimeri, mis määratleb sündmuse "printimine on alanud" ainult juhul, kui 15 sekundi jooksul ei toimu ühtegi sündmust "print valmis". Praktikas toimib see ujumas

Seega võib põhiahela () kood töötada koormamata, tagasilöögikood töötab RTOS -i ülesandeahelas. Samuti on sünkroonsed ja seetõttu taustaga http -päringud teatiste saatmiseks. Seega animatsioonid toimivad sujuvalt ja loendamine ei lõpe kunagi

Minu näites on hunnik lisakoodi (A) WiFi ja mDNS-iga võrguühenduse loomiseks ja säilitamiseks, (B) NTC-serverist kellaaja toomiseks, et saaksin oma algus- ja lõppmärguannetele templid panna ning ajakohase kella kuvada minu OLED -il ja (C) käitlevad OTA värskendusi, nii et ma ei pea koodi uuendamiseks oma tahvlit füüsiliselt oma Maciga ühendama. Hetkel on see kõik ühes monoliitses C ++ failis, ainult sellepärast, et ma pole võtnud aega selle paremaks korraldamiseks

Kasutasin imelist (ja tasuta) Prowl iOS -i rakendust, et saata oma telefonile tõukemärguandeid ainult HTTP -hankimise meetoditega

Koodi arendamiseks ja tahvli välgutamiseks kasutasin Visual Studio Code'il töötavat suurejoonelist PlatformIO -d, mõlemad tasuta

Oma projekti jaoks kasutasin neid teeke: Oliveri u8g2, möödunud Millis Paul Stoffregeni poolt ja HTTPClient Markus Sattlerilt, mis on kaasas Espressif ESP32 platvormiga. Kõik muu on kaasas Arduino raamatukoguga või PlatformIO ESP32 platvormiga

Lõpuks lõin oma põhirihmarattast erinevate nurkade all kuus lihtsat bitikaarti, et saaksin leti taga OLED -il näidata korralikku väikest keerleva ratta animatsiooni. See liigub koos kodeerijaga sobivas suunas, kuigi dramaatilisema efekti saavutamiseks palju kiiremini

4. samm: juhtmestik

Juhtmestik
Juhtmestik

Ma kavandasin selle nii, et juhtmestik oleks surm lihtne, enamasti nii, et mu korpus võiks olla väike, aga ka silumine oleks otsekohene. Pange tähele kitsas olukorda minu väikeses kastis.:)

Esimene nõue oli minu pöörleva kodeerija 5 V toitepinge. Erinevatest ESP32 arendusplaatidest, mis mul varuks olid, pakkusid ainult vähesed Vcc -poldil tõelist 5 V toite USB -toiteallikaga. (Teised mõõtsid 4,5–4,8 V, mis juhul, kui teie matemaatika on halb, on madalam kui 5 V.) Tahvel, mida ma kasutasin, oli Wemos Lolin32.

Järgmisena tulevad kaks pöörleva kodeerija signaali tihvti. Kuna kasutan katkestusi, on peamine mure see, et minu kasutatavad tihvtid ei segaks midagi. ESP32 dokumentides on kirjas, et ADC2 -d ei saa kasutada WiFi -ga samaaegselt, nii et kahjuks tähendab see, et ma ei saa kasutada ühtegi ADC2 GPIO tihvti: 0, 2, 4, 12, 13, 14, 15, 25, 26 või 27. Valisin 16 ja 17.

Pro näpunäide: kui pärast seda kõike kokku pannes tundub, et teie kodeerija hakkab tagurpidi loendama, saate konfiguratsioonis h. Kaks tihvti määramist lihtsalt vahetada.

Lõpuks ühendage pöörleva kodeerija maandusjuhe… trummelrulliga… maandusnõelaga.

Järgmisena ühendatakse null/lähtestamise nupp maa ja teise vaba tihvti vahele (valisin GPIO 18).

Nupp, mida ma kasutasin, oli pisike hetkeline lüliti, mille päästsin ülalnimetatud arvutihiirelt, kuid iga nupp, mis teil ümber on, sobib. Näete, et see toetub väikesele alusele, mille tegin selle jaoks otse laua kohal.

Lõpuks vajab OLED, kui see pole teie plaadiga juba ühendatud, vaid nelja tihvti: 3V3, maandus, i2c kell ja i2c andmed. Minu arendajatahvlil on kell ja andmed vastavalt 22 ja 21.

Samm: printige osad välja

Printige osad välja
Printige osad välja

Selle konstruktsiooni jaoks kavandasin seitse osa:

Rihmaratas, mis kinnitatakse otse pöörleva anduri võllile

Tühikäik, mis sobib üle 608ZZ laagri (eemaldage katted ja rasvatustage WD40 -ga, nii et see pöörleb vabalt)

Hoidik, millele kinnitatakse kaks kihti ja kodeerija - pange tähele tühikäigu spiraalvedru

Kinnitus hoidiku stabiliseerimiseks. Selle sammu foto näitab, kuidas kronstein hoidiku külge kinnitub

Korpus (all) minu ESP32 arendusplaadi hoidmiseks, kus on ruumi USB -kaablile küljel ja teine üleval pistiku jaoks, mille lisasin kodeerimisjuhtmetele. See on loodud sobima Wemos Lolin32 -ga, nii et peate võib -olla seda disaini veidi muutma, et see sobiks mõne muu plaadiga

Korpus (üleval) OLED -ekraani hoidmiseks, teine spiraal null / lähtestusnupule

Nuppude hoidja, mis on kohandatud minu pisikese lüliti jaoks, mis on mõeldud alumise korpuse kahe riiuli vahele. Kasutasin jootekolvi, et "liimida" lüliti hoidiku külge; vaadake foto eelmist sammu

Kõik on mõeldud trükkimiseks ilma toeta. Tavaline PLA teie valitud värvitoonis on kõik, mida vajate.

Pange see kõik kokku, ühendage oma printeriga (siin võib olla vaja teatud loovust) ja olete valmis.

Soovitan: