Obsah:

Počítadlo vlákien inteligentnej 3D tlačiarne: 5 krokov (s obrázkami)
Počítadlo vlákien inteligentnej 3D tlačiarne: 5 krokov (s obrázkami)

Video: Počítadlo vlákien inteligentnej 3D tlačiarne: 5 krokov (s obrázkami)

Video: Počítadlo vlákien inteligentnej 3D tlačiarne: 5 krokov (s obrázkami)
Video: 2022-02 [prednáška] Mutex, multiplex, rendezvous, bariéra 2024, December
Anonim
Inteligentné počítadlo vlákien 3D tlačiarne
Inteligentné počítadlo vlákien 3D tlačiarne

Prečo sa trápiť s počítaním vlákna? Niekoľko dôvodov:

Úspešné výtlačky vyžadujú správne kalibrovaný extrudér: keď kód gcode povie extrudéru, aby posunul vlákno o 2 mm, musí sa posunúť presne o 2 mm. Zlé veci sa stávajú, ak sa extrudujú alebo nedostatočne vytláčajú. Dobre kalibrovaný počítač môže udržať extrudér úprimný

Krájače približne odhadujú, koľko celkového vlákna bude daný výtlačok trvať (v dĺžke aj v hmotnosti) a rád by som tieto hodnoty skontroloval

Meranie pohybu vlákna mi tiež dáva vedieť, kedy sa tlač začala a kedy sa zastavila

Potreboval som niečo na zakrytie priestoru, ktorý zostal po odstránení škaredého obrovského loga na prednej strane mojej tlačiarne

Je to v pohode

Inšpiroval som sa týmto návodom, ktorý repasoval starú myš PS/2 ako počítadlo vlákien pre 3D tlačiareň. Nielenže pridal užitočnú funkciu k 3D tlačiarni, ale upravil aj staré zariadenie, ktoré by inak skončilo na skládke. Tento projekt bol však postavený na rozhraní PS/2 myši, ktoré sa zdalo zbytočne ťažkopádne. Bral som to teda ako príležitosť dozvedieť sa o jedinej podstatnej súčasti: rotačnom kodéri.

Zásoby

Rotačný kodér

Vývojová doska na báze ESP32

I2C OLED displej (dvojfarebná jednotka vyzerá obzvlášť cool)

Drobné chvíľkové tlačidlo

Odmasťované ložisko 608ZZ

Dva o -krúžky z železiarstva (~ 33 mm ID x ~ 1,5 mm priemer profilu - pozri komentáre)

Dve 2,5 mm samorezné skrutky do krytu

Dve 4 mm skrutky, matice a podložky na pripevnenie držiaka k tlačiarni

Zväzok drôtov

3D tlačiareň a nejaké vlákno

Krok 1: Vyberte rotačný kodér

Vyberte rotačný kodér
Vyberte rotačný kodér
Vyberte rotačný kodér
Vyberte rotačný kodér

Rotačné snímače prenášajú rotačný pohyb na elektrické impulzy. Všetky myši zo starej školy ich používali na meranie pohybu valiacej sa loptičky a modernejšie (ha ha) optické myši ich stále používali na rolovacie koliesko, čo som mal položené a používané na počiatočné experimentovanie. Ten môj bohužiaľ neponúkal žiadne zrejmé body pripojenia a jeho rozlíšenie bolo zlé.

Ak to stojí za to, stojí to za to. Kúpil som si teda veľký, priateľský, 360-pulzný kodér na otáčku a postavil som okolo toho svoj projekt. Rozhodol som sa pre inkrementálny optický rotačný kodér Signswise, typ LPD3806-360BM-G5-24C. Ale každý slušný kodér to urobí.

Krok 2: Pridajte kladku a napínacie koleso

Pridajte kladku a napínacie kladivo
Pridajte kladku a napínacie kladivo

Lineárny pohyb vlákna je kladkou prenášaný do rotačného pohybu kodéra. A vlákno drží napínaciu kladku proti kladke.

Kladka má dve drážky, z ktorých každá drží natiahnutý o-krúžok, takže nedochádza k skĺznutiu, Napínacie koleso má jednu v-drážku, ktorá udržuje vlákno v strede na remenici snímača. Sedí na ložisku 608ZZ, okolo ktorého som ležal, a ktoré je namontované na špirálovej pružine vytlačenej priamo v hlavnom telese môjho projektu. (Súbory STL sú priložené nižšie.)

Správne riešenie trvalo nejaký pokus a omyl, ale môj návrh by mal vyhovovať rôznym uhlom a polomerom cievky, aby sa vlákno odvíjalo z akejkoľvek časti cievky, od začiatku do konca tlače. A tlačená pružina uľahčuje vysúvanie alebo vysúvanie vlákna pri výmene cievok.

Krok 3: Kódovanie

Image
Image

Na počítanie vlákien poslúži akákoľvek doska pre vývojárov s dvoma digitálnymi vstupmi. Kodér, ktorý som si vybral, má štyri piny: Vcc, uzemňovací a dva piny kodéra. Toto je skutočne pekný zápis, ktorý vysvetľuje, ako rotačné kodéry fungujú a ako ich prepojiť s Arduino. (Tiež: tento článok o 3-kolíkových snímačoch.)

Základné počítanie je jednoduché: dva vstupy - nastavené na interné vytiahnutie, takže externé odpory nie je potrebné spájkovať s Vcc - a jedno prerušenie. Tiež som pridal tlačidlo nulovania/resetovania, ktoré vyžaduje ešte jeden vstup a prerušenie:

zrušiť 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); } neplatné IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {pozícia += 1; } else {pozícia -= 1; }} neplatné IRAM_ATTR zeroButtonPressed () {// zvládnuť nulu a resetovať}

Ale chcel som viac ako len hlúpy pult. S ESP32 (alebo ESP8266) a vstavaným WiFi môžem v skutočnosti niečo urobiť s údajmi, ktoré zbieram. Pomocou jednoduchého kódu časového limitu (vysvetleného nižšie) môžem určiť, kedy sa tlač začína a končí, a odoslať tieto udalosti ako oznámenia na môj telefón. V budúcnosti môžem pridať senzor vybitia a upozorniť seba (a pozastaviť tlačiareň), keď bude potrebná moja pozornosť.

Celý kód je na Github.

Niekoľko poznámok ku kódu:

Aby ste to prispôsobili svojmu zostaveniu, potrebujete iba rozlíšenie (encoderPPR) - v impulzoch na otáčku, čo je zvyčajne dvojnásobok uvedených špecifikácií - a polomer kladky (wheelRadius). Tieto hodnoty, plus ssid a heslo vašej siete Wi -Fi a konkrétne piny pripojené k tlačidlu, kodéru a obrazovke OLED, všetky idú do konfigurácie.h

Tlačidlo nuly slúži aj ako reset - podržte ho a reštartujte dosku, čo je užitočné pri ladení

Prerušenia sú silné - niekedy príliš silné. Jediné poklepanie na tlačidlo nula môže spôsobiť, že sa funkcia zeroButtonPressed () vyvolá 10-20-krát, preto som pridal nejakú logiku odskoku. Môj optický kodér to nepotreboval, ale YMMV

Kým sa prerušenia starajú o vstupy asynchrónne, rutina loop () zvláda účtovníctvo. EnkodérState - enum, ktorý sa môže podávať, zasúvať alebo zastavovať - sa aktualizuje so zmenou polohy kodéra. Časové limity potom určujú, kedy tlačiareň začala a ukončila tlač. Zložité však je, že 3D tlačiarne často spúšťajú a zastavujú pohyb, takže najlepšie fungovalo definovanie udalosti „dokončenie tlače“, ktorá sa nepretržite zastavovala najmenej na 5 sekúnd. Akýkoľvek pohyb spustí druhý časovač, ktorý definuje udalosť „spustená tlač“, iba ak v časovom rámci 15 sekúnd nenastane žiadna udalosť „dokončená tlač“. V praxi to funguje ako plávanie

Kód hlavnej slučky () teda môže bežať nezaťažený, kód pre odskok je spustený v slučke úloh RTOS. Podobne sú požiadavky HTTP na odosielanie upozornení synchrónne, a preto sú na pozadí. Animácie teda bežia hladko a počítanie sa nikdy nezastaví

V mojom prípade je veľa ďalších kódov na (A) nadviazanie a udržanie sieťového pripojenia pomocou WiFi a mDNS, (B) načítanie času zo servera NTC, aby som mohol časovo označiť svoje oznámenia o začiatku a konci a zobraziť hodiny s nadhľadom. na mojom OLED a (C) zvláda aktualizácie OTA, aby som kvôli aktualizácii kódu nemusel fyzicky pripojiť svoju dosku k počítaču Mac. V tejto chvíli je to všetko v jednom monolitickom súbore C ++, len preto, že som si nenašiel čas na jeho lepšiu organizáciu

Použil som úžasnú (a bezplatnú) aplikáciu Prowl iOS na odosielanie upozornení push na môj telefón iba pomocou metód HTTP Get

Na vývoj kódu a flashovanie dosky som použil veľkolepý PlatformIO spustený pod kódom Visual Studio Code, oba zadarmo

Pre svoj projekt som použil tieto knižnice: u8g2 od Olivera, elapsedMillis od Paula Stoffregena a HTTPClient od Markusa Sattlera, ktorý je dodávaný s platformou Espressif ESP32. Všetko ostatné je dodávané s knižnicou Arduino alebo platformou ESP32 v PlatformIO

Nakoniec som vytvoril šesť jednoduchých bitových máp svojej hlavnej kladky v rôznych uhloch, aby som mohol predviesť úhľadnú malú animáciu točivého kolieska na OLED za pultom. Pohybuje sa príslušným smerom pomocou kodéra, aj keď oveľa rýchlejšie pre dramatickejší efekt

Krok 4: Zapojenie

Elektrické vedenie
Elektrické vedenie

Navrhol som to tak, aby zapojenie bolo jednoduché, väčšinou aby bol môj kryt malý, ale aby ladenie bolo priame. Všimnite si stiesnených podmienok v mojej malej škatuľke.:)

Prvou požiadavkou bolo napájacie napätie 5 V môjho rotačného snímača. Z rôznych vývojových dosiek ESP32, ktoré som mal v skrýši, iba niekoľko dodávalo na pin Vcc skutočných 5 V pri napájaní z USB. (Ostatné merali 4,5-4,8 V, čo je v prípade zlej matematiky nižšie ako 5 V.) Doska, ktorú som použil, bol Wemos Lolin32.

Ďalej nasledujú dva signálne kolíky rotačného snímača. Keďže používam prerušenia, hlavnou obavou je, aby kolíky, ktoré používam, v ničom nerušili. Dokumenty ESP32 uvádzajú, že ADC2 nemožno používať súčasne s WiFi, takže to bohužiaľ znamená, že nemôžem používať žiadny z pinov GPIO ADC2: 0, 2, 4, 12, 13, 14, 15, 25, 26 alebo 27. Vybral som si 16 a 17.

Profesionálny tip: ak sa vám zdá, že keď to všetko spojíte, váš kodér počíta späť, stačí vymeniť dve priradenia pinov v súbore config.h.

Nakoniec pripojte uzemňovací vodič rotačného snímača k … valcu valca … uzemňovaciemu kolíku.

Ďalej sa tlačidlo nulovania/resetovania pripojí medzi zem a ďalší voľný kolík (vybral som GPIO 18).

Tlačidlo, ktoré som použil, bolo malým momentálnym spínačom, ktorý som zachránil z vyššie uvedenej počítačovej myši, ale akékoľvek tlačidlo, ktoré budete mať pri sebe, bude fungovať. Môžete to vidieť odpočívať v malom držiaku, ktorý som pre to vyrobil, priamo nad doskou.

Nakoniec, OLED, ak ešte nie je pripojený k vašej doske, potrebuje iba štyri piny: 3V3, pozemné, i2c hodiny a i2c údaje. Na mojej doske pre vývojárov sú hodiny a údaje 22 a 21.

Krok 5: Vytlačte diely

Vytlačte diely
Vytlačte diely

Pre túto zostavu som navrhol sedem častí:

Kladka, ktorá sa montuje priamo na hriadeľ rotačného snímača

Voľnobežné koleso, ktoré pasuje na ložisko 608ZZ (odstráňte podložky a odmastite WD40, aby sa voľne otáčalo)

Držiak, na ktorom sú namontované dve kotúče a snímač, - všimnite si špirálovej pružiny pre napínaciu kladku

Konzola na stabilizáciu držiaka. Fotografia v tomto kroku ukazuje, ako sa držiak pripevňuje k držiaku

Kryt (dole) na uloženie mojej dosky ESP32 dev s priestorom pre kábel USB na bočnej strane a druhým na vrchu pre konektor, ktorý som pridal k vodičom snímača. Tento je navrhnutý tak, aby vyhovoval Wemos Lolin32, takže tento dizajn budete možno musieť trochu upraviť, aby sa zmestil na inú dosku

Kryt (horný) na uchytenie obrazovky OLED, ďalšia špirála pre tlačidlo nula / reset

Držiak gombíkov prispôsobený pre malý vypínač, ktorý som mal, navrhnutý tak, aby spočíval medzi dvoma policami vo vnútri spodnej skrinky. Spájkovačkou som „prilepil“vypínač k držiaku; fotografiu nájdete v predchádzajúcom kroku

Všetko je navrhnuté tak, aby sa dalo tlačiť bez podpier. Všetko, čo potrebujete, je obyčajná PLA vo vami zvolenej farbe.

Dajte to všetko dohromady, pripojte k tlačiarni (tu môže byť potrebná určitá kreativita) a môžete ísť.

Odporúča: