Turinys:

Išmanusis 3D spausdintuvo gijų skaitiklis: 5 žingsniai (su paveikslėliais)
Išmanusis 3D spausdintuvo gijų skaitiklis: 5 žingsniai (su paveikslėliais)

Video: Išmanusis 3D spausdintuvo gijų skaitiklis: 5 žingsniai (su paveikslėliais)

Video: Išmanusis 3D spausdintuvo gijų skaitiklis: 5 žingsniai (su paveikslėliais)
Video: IT+: 3D spausdinimas: perpus mažesnė statybų darbų kaina ir nelegalūs ginklai. 2024, Lapkritis
Anonim
Išmanusis 3D spausdintuvo gijų skaitiklis
Išmanusis 3D spausdintuvo gijų skaitiklis

Kam nerimauti skaičiuojant siūlus? Keletas priežasčių:

Sėkmingiems spaudiniams reikia tinkamai sukalibruoto ekstruderio: kai gcode liepia ekstruderiui perkelti kaitinamąjį siūlą 2 mm, jis turi judėti tiksliai 2 mm. Blogų dalykų nutinka, jei tai per daug išspaudžia arba per mažai išspaudžia. Gerai sukalibruotas skaitiklis gali išlaikyti ekstruderį sąžiningą

Pjaustytuvai apytiksliai apskaičiuoja, kiek bendram siūlui prireiks (tiek ilgio, tiek svorio), ir norėčiau patikrinti šias vertes

Matuojant gijų judėjimą taip pat praneškite man, kada prasidėjo spausdinimas ir kada jis sustojo

Man reikėjo kažko, kas padengtų erdvę, kurią pašalino negražus milžiniškas logotipas mano spausdintuvo priekyje

Šaunu

Mane įkvėpė šis nurodymas, kuris pakeitė seną PS/2 pelę kaip 3D spausdintuvo gijų skaitiklį. Tai ne tik pridėjo naudingą funkciją 3D spausdintuvui, bet ir pakeitė seną įrenginį, kuris kitu atveju būtų atsidūręs sąvartyne. Tačiau šis projektas buvo sukurtas aplink pelės PS/2 sąsają, kuri atrodė be reikalo sudėtinga. Taigi aš tai įvertinau kaip galimybę sužinoti apie vienintelį esminį komponentą: sukamąjį kodavimo įrenginį.

Prekės

Rotacinis kodavimo įrenginys

ESP32 pagrįsta kūrimo lenta

I2C OLED ekranas (dviejų spalvų įrenginys atrodo ypač šauniai)

Mažas momentinis mygtukas

608ZZ guolis nuriebalintas

Du sandarinimo žiedai iš techninės įrangos parduotuvės (~ 33 mm ID x ~ 1,5 mm profilio skersmuo - žr. Komentarus)

Du 2,5 mm savisriegiai varžtai korpusui

Du 4 mm varžtai, veržlės ir poveržlės laikikliui pritvirtinti prie spausdintuvo

Laidų krūva

3D spausdintuvas ir kai kurie siūlai

1 veiksmas: pasirinkite sukamąjį kodavimo įrenginį

Pasirinkite rotacinį kodavimo įrenginį
Pasirinkite rotacinį kodavimo įrenginį
Pasirinkite rotacinį kodavimo įrenginį
Pasirinkite rotacinį kodavimo įrenginį

Sukamieji kodavimo įrenginiai sukimosi judesį paverčia elektriniais impulsais. Visos senosios mokyklos pelės jas naudojo ritininio rutulio judėjimui matuoti, o šiuolaikiškesnės (ha ha) optinės pelės vis tiek naudojo slinkties ratuką, kurį aš turėjau ir naudojau pradiniams eksperimentams. Deja, mano nepateikė jokių akivaizdžių tvirtinimo taškų, o jo skiriamoji geba buvo prasta.

Jei verta tai daryti, verta persistengti. Taigi aš nusipirkau didelį, draugišką, 360 impulsų per apsisukimą kodavimo įrenginį ir sukūriau savo projektą. Aš pasirinkau „Signswise“papildomą optinį sukamąjį kodavimo įrenginį, tipo LPD3806-360BM-G5-24C. Bet bet koks tinkamas kodavimo įrenginys tai padarys.

2 veiksmas: pridėkite skriemulį ir tuščiąja eiga

Pridėkite skriemulį ir tuščiąja eiga
Pridėkite skriemulį ir tuščiąja eiga

Linijinis kaitinamojo siūlo judėjimas skriemuliu virsta sukamuoju kodavimo judesiu. Kaitinamąjį siūlą prieš skriemulį laiko tuščiosios eigos vožtuvas.

Skriemulys turi du griovelius, kurių kiekvienas turi ištemptą sandarinimo žiedą, todėl neslysta, Tuščiosios eigos vožtuvas turi vieną v formos griovelį, kad kaitinimo siūlas būtų centre su kodavimo skriemuliu. Jis stovi ant 608ZZ guolio, kurį aš uždėjau, ir jis sumontuotas ant spiralinės spyruoklės, atspausdintos tiesiai pagrindiniame mano projekto korpuse. (STL failai pridedami žemiau.)

Tam reikėjo bandymų ir klaidų, kad išsispręstume, tačiau mano dizainas turėtų atitikti įvairius kampus ir ritės spindulius, kad siūlas galėtų atsiskleisti nuo bet kurios ritės dalies iki pat spausdinimo pradžios. O atspausdinta spyruoklė leidžia lengvai įstumti ar išimti kaitinamąjį siūlą keičiant ritinius.

3 žingsnis: kodavimas

Image
Image

Norint tik skaičiuoti gijas, tiks bet kuri dev plokštė su dviem skaitmeniniais įėjimais. Mano pasirinktas kodavimo įrenginys turi keturis kaiščius: Vcc, įžemintą ir du kodavimo kaiščius. Čia yra tikrai gražus užrašas, paaiškinantis, kaip veikia sukamieji kodavimo įrenginiai ir kaip juos sujungti su „Arduino“. (Taip pat: šis straipsnis apie 3 kontaktų kodavimo įrenginius.)

Pagrindinis skaičiavimas yra paprastas: du įėjimai - nustatyti taip, kad jie būtų pakelti viduje, kad nereikėtų lituoti išorinių rezistorių prie Vcc - ir vienas pertraukimas. Aš taip pat pridėjau nulinio/atstatymo mygtuką, reikalaujantį dar vieno įvesties ir pertraukimo:

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)) {pozicija += 1; } else {pozicija -= 1; }} void IRAM_ATTR zeroButtonPressed () {// tvarkyti nulį ir nustatyti iš naujo}

Bet aš norėjau ne tik kvailo skaitiklio. Turėdamas ESP32 (arba ESP8266) ir jame įmontuotą „WiFi“, aš iš tikrųjų galiu ką nors padaryti su savo renkamais duomenimis. Naudodamas paprastą skirtojo laiko kodą (paaiškinta žemiau), galiu nustatyti, kada prasideda ir baigiasi spausdinimas, ir išsiųsti tuos įvykius kaip pranešimus į savo telefoną. Ateityje galiu pridėti išsekimo jutiklį ir pranešti sau (ir pristabdyti spausdintuvą), kai man reikia dėmesio.

Visas kodas yra „Github“.

Keletas pastabų apie kodą:

Norėdami tai pritaikyti prie savo konstrukcijos, jums reikia tik skiriamosios gebos (kodavimo priemonė PRPR) - impulsais per apsisukimą, kuri paprastai yra dvigubai didesnė už nurodytą specifikaciją, ir skriemulio spindulys (wheelRadius). Šios vertės, taip pat „wifi“SSID ir slaptažodis bei konkretūs kaiščiai, prijungti prie mygtuko, kodavimo įrenginio ir OLED ekrano, yra konfigūruojami

Nulinis mygtukas taip pat veikia kaip atstatymas - laikykite nuspaudę, kad iš naujo paleistumėte plokštę, o tai naudinga derinant

Nutraukimai yra galingi - kartais per stiprūs. Vieną kartą paspaudus mygtuką „nulis“, funkcija „zeroButtonPressed“() gali būti iškviesta 10–20 kartų, todėl pridėjau šiek tiek atmetimo logikos. Mano optiniam koduotojui to neprireikė, bet YMMV

Nors pertraukikliai rūpinasi įėjimais asinchroniškai, ciklo () rutina tvarko buhalteriją. „EncoderState“- „enum“, kuris gali būti tiekiamas, įtraukiamas arba sustabdomas, atnaujinamas keičiant kodavimo įrenginio padėtį. Laiko skirtumai nustato, kada spausdintuvas pradėjo ir baigė spausdinti. Tačiau sudėtingiausia yra tai, kad 3D spausdintuvai dažnai pradeda ir sustabdo judėjimą, todėl geriausiai pavyko apibrėžti „spausdinimo užbaigimo“įvykį, kuris nepertraukiamai sustabdomas mažiausiai 5 sekundes. Bet koks judesys suaktyvina antrą laikmatį, kuris apibrėžia „spausdinimo pradžią“tik tuo atveju, jei per 15 sekundžių neįvyksta nė vienas įvykis „spausdinimas baigtas“. Praktiškai tai veikia plaukiant

Taigi pagrindinės kilpos () kodas gali veikti neapkrautas, atmetimo kodas veikia RTOS užduočių cikle. Panašiai ir „http“užklausos išsiųsti pranešimus yra sinchroniškos ir todėl yra pagrįstos. Taigi animacija vyksta sklandžiai ir skaičiavimas nesustoja

Mano pavyzdyje yra daugybė papildomų kodų, skirtų (A) užmegzti ir palaikyti tinklo ryšį naudojant „WiFi“ir „mDNS“, (B) gauti laiką iš NTC serverio, kad galėčiau žymėti savo pradžios ir pabaigos pranešimus ir rodyti nešvarų laikrodį mano OLED ir (C) tvarko OTA atnaujinimus, kad man nereikėtų fiziškai prijungti plokštės prie „Mac“, kad galėčiau atnaujinti kodą. Šiuo metu viskas yra viename monolitiniame C ++ faile, tik todėl, kad neskyriau laiko jį geriau organizuoti

Aš naudoju nuostabią (ir nemokamą) „Prowl iOS“programą, norėdamas siųsti tiesioginius pranešimus į savo telefoną naudodamas tik HTTP gavimo metodus

Norėdami sukurti kodą ir atnaujinti plokštę, aš naudoju įspūdingą „PlatformIO“, veikiantį „Visual Studio Code“, abu nemokamai

Savo projektui panaudojau šias bibliotekas: „Oliver“u8g2, „Paulis Stoffregen“, „elapsedMillis“ir „Markus Sattler“„HTTPClient“, kuris pateikiamas kartu su „Espressif ESP32“platforma. Visa kita pateikiama kartu su „Arduino“biblioteka arba „ESP32“platforma „PlatformIO“

Galiausiai sukūriau šešis paprastus pagrindinio skriemulio bitų žemėlapius skirtingais kampais, kad galėčiau parodyti tvarkingą mažą besisukančio rato animaciją ant OLED už prekystalio. Jis juda tinkama kryptimi su koduotuvu, nors ir daug greičiau, kad būtų pasiektas dramatiškesnis efektas

4 žingsnis: laidų prijungimas

Laidai
Laidai

Aš tai suprojektavau taip, kad laidai būtų labai paprasti, daugiausia todėl mano korpusas gali būti mažas, bet taip pat derinimas būtų tiesioginis. Atkreipkite dėmesį į ankštas sąlygas mano mažoje dėžutėje.:)

Pirmasis reikalavimas buvo mano rotacinio kodavimo įrenginio 5 V maitinimo įtampa. Iš įvairių ESP32 kūrėjų plokščių, kurias turėjau savo saugykloje, tik kelios tiekė tikrą 5 V įtampą prie „Vcc“kaiščio, kai maitinama iš USB. (Kiti matavo 4,5–4,8 V, o tuo atveju, jei jūsų matematika yra bloga, yra mažesnė nei 5 V.) Mano naudojama lenta buvo „Wemos Lolin32“.

Tada eikite į du sukamuosius kodavimo signalo kaiščius. Kadangi naudoju pertraukas, pagrindinis rūpestis yra tas, kad mano naudojami kaiščiai niekam netrukdo. ESP32 dokumentuose nurodyta, kad ADC2 negalima naudoti tuo pačiu metu kaip „WiFi“, todėl, deja, reiškia, kad negaliu naudoti nė vieno ADC2 GPIO kaiščio: 0, 2, 4, 12, 13, 14, 15, 25, 26 arba 27. Aš pasirinkau 16 ir 17.

Patarimas profesionalams: jei, visa tai sujungus, jūsų kodavimo įrenginys skaičiuoja atgal, galite tiesiog sukeisti du kaiščio priskyrimus konfigūracijoje h.

Galiausiai prijunkite sukamojo kodavimo įžeminimo laidą prie … būgno ritinėlio … įžeminimo kaiščio.

Tada nulinis/atstatymo mygtukas prijungiamas tarp žemės ir kito laisvo kaiščio (aš pasirinkau GPIO 18).

Mygtukas, kurį naudojau, buvo nedidelis momentinis jungiklis, kurį išgelbėjau nuo minėtos kompiuterio pelės, tačiau bet koks mygtukas, kurį turite, bus tinkamas. Galite pamatyti, kad jis ilsisi mažame laikiklyje, kurį padariau tiesiai virš lentos.

Galiausiai, jei OLED dar nėra prijungtas prie jūsų plokštės, jam reikia tik keturių kontaktų: 3V3, įžeminimo, „i2c“laikrodžio ir „i2c“duomenų. Mano kūrėjų lentoje laikrodis ir duomenys yra atitinkamai 22 ir 21.

5 žingsnis: išspausdinkite dalis

Atspausdinkite dalis
Atspausdinkite dalis

Šiai konstrukcijai sukūriau septynias dalis:

Skriemulys, kuris tvirtinamas tiesiai ant sukamojo kodavimo veleno

Tvirtiklis, kuris telpa virš 608ZZ guolio (nuimkite apvalkalus ir nuriebalinkite WD40, kad jis laisvai suktųsi)

Laikiklis, ant kurio sumontuoti du ratukai ir kodavimo įrenginys - atkreipkite dėmesį į spyruoklinę laisvos eigos spyruoklę

Kronšteinas laikikliui stabilizuoti. Šio veiksmo nuotraukoje parodyta, kaip laikiklis pritvirtinamas prie laikiklio

Korpusas (apačioje), skirtas laikyti mano ESP32 dev plokštę, su vieta USB kabeliui šone ir kita viršuje jungčiai, kurią pridėjau prie kodavimo laidų. Šis yra pritaikytas „Wemos Lolin32“, todėl gali tekti šiek tiek pakeisti šį dizainą, kad tilptų kita plokštė

Korpusas (viršuje), skirtas laikyti OLED ekraną, dar viena spiralė, skirta nulinio / atstatymo mygtukui

Mygtuko laikiklis, pritaikytas mažam jungikliui, kurį turėjau, skirtas pailsėti tarp dviejų lentynų apatinio korpuso viduje. Aš lituokliu „priklijavau“jungiklį prie laikiklio; žr. ankstesnį nuotraukos žingsnį

Viskas skirta spausdinti be atramų. Viskas, ko jums reikia, yra įprasta pasirinktos spalvos PLA.

Sujunkite viską, prijunkite prie spausdintuvo (čia gali prireikti šiek tiek kūrybiškumo), ir viskas gerai.

Rekomenduojamas: