Kazalo:

Robotski razpršilnik vlaken za Arduino: 8 korakov (s slikami)
Robotski razpršilnik vlaken za Arduino: 8 korakov (s slikami)

Video: Robotski razpršilnik vlaken za Arduino: 8 korakov (s slikami)

Video: Robotski razpršilnik vlaken za Arduino: 8 korakov (s slikami)
Video: Metal parts automatic 3D Robotic fiber laser cutting machine robot laser cutter machine 2024, Julij
Anonim
Image
Image

Zakaj motorizirano orodje

3D -tiskalnikovo nit, običajno skoraj robustno, potegne ekstruder, medtem ko je zvitek nameščen v bližini tiskalnika in se lahko prosto vrti. Opazil sem pomembne razlike v obnašanju materiala, odvisno od stopnje uporabe, kar se nanaša na 1 kg zvitkov filamentov. Nova (polna) tuljava z nitjo teče skoraj dobro, vendar mora biti sila, ki jo izvaja ekstruder, relativno pomembna: teža je najmanj 1,5 kg.

Motor ekstruderja (v večini primerov koraka Nema17) ima dovolj moči za opravljanje dela, vendar dve prestavi ekstruderja potisnejo žarilno nitko na stran vročega konca, medtem ko med delom zbirajo delce žarilne nitke; to zahteva pogosto vzdrževanje ekstruderja, da se izognete zamašitvi šob. Ti delci se med podajanjem nagibajo k ločitvi in mešanju s čisto nitjo, kar povečuje težave s šobami in pogostejšo obrabo šob; to se pogosteje zgodi s šobami premera 0,3 mm.

Ko se zvitek z žarilno nitko napol uporablja ali več, se njene spirale zmanjšajo in v nekaterih okoljskih razmerah se nitka prepogosto lomi. Dolga tiskalna opravila postanejo manj zanesljiva in stresna; Tiskalnika ne morem pustiti pri miru celo noč, ne da bi ga nadzoroval. Tako krmiljenje dovoda žarilne nitke s pomočjo motornih številk rešuje vrsto vprašanj.

Komplet je na voljo na spletnem mestu Tindie.com

1. korak: Vsebina kompleta

Vsebina kompleta
Vsebina kompleta
Vsebina kompleta
Vsebina kompleta

Komplet vsebuje vse 3D tiskane dele in mehaniko za sestavljanje motornega razpršilnika filamentov. Namesto tega obstajata dva dodatna dela: motor in krmilna plošča motorja.

V svoji nastavitvi sem uporabil 12 V McLennanov motor z zobnikom, vendar se lahko vsak motor s premerom 37 mm pravilno prilega notranjosti nosilca motorja.

Najboljše zmogljivosti dosega Infineon ščit TLE94112LE Arduino (celoten pregled tukaj); ta krmilna plošča enosmernega motorja lahko podpira do 6 različnih kompletov robotskih razpršilnikov hkrati.

Celoten sistem sem preizkusil tako na Arduino UNO R3 kot na Arduino združljivi plošči XMC1100 Boot Kit podjetja Infineon in sistem je bil zelo dobro odziven na obeh mikro krmilnih ploščah.

Uporaba ščita TLE94112LE je predlagana, ni pa nujna. Vsak krmilnik DC motorja za Arduino - vključno z vašim lastnim projektom! - lahko deluje dobro s tem orodjem

Komplet je razdeljen na dva sklopa komponent, saj sta dva dela sestavljena tako, da delujeta skupaj. Osnovna platforma bo podpirala zvitek žarilne nitke, ki se vrti na štirih prostih kolesnih ležajih. Podstavek je pritrjen na senzor za težo za nadzor vrtečega se mehanizma, ki sproži njegovo aktiviranje, in za spremljanje pogojev žarilne nitke: teža, metri in odstotek. Veliko informacij in celoten niz ukazov so dostopni iz Arduina prek serijskega terminala.

Orodja, ki jih potrebujete

Za dokončanje montaže potrebujete robustno plastično lepilo za nekatere dele, izvijač in komplet imbus vijakov.

2. korak: Projekt in oblikovanje

Projekt in oblikovanje
Projekt in oblikovanje
Projekt in oblikovanje
Projekt in oblikovanje
Projekt in oblikovanje
Projekt in oblikovanje

Ta projekt je tretji razvoj serije razpršilnikov filamentov za 3D tiskalnike Pred nekaj časa sem ustvaril vrtljivo podlago za optimizacijo pretoka filamentov, ko jih vleče ekstruder 3D tiskalnika.

Drugi model je vključeval senzor teže za spremljanje porabe filamentov v realnem času s ploščo Arduino. Ta zadnji projekt vključuje avtomatizirano sproščanje žarilne nitke, odvisno od potreb opravila 3D tiskalnika. Temelji na virtualni variaciji teže, ko ekstruder začne vleči nit. Ta dogodek sproži mikro krmilnik skozi senzor teže in motorni zvitek z nitjo začne sproščati nekaj centimetrov materiala, nato se upočasni in ustavi.

Komponente so bile izvožene v formatu STL in 3D natisnjene, nato prečiščene in sestavljene skupaj. Ustvaril sem podporo po meri za poravnavo gibljivega dela z bazo. Daljša aluminijasta tirnica je bila uporabljena tudi za podporo Arduina in motornega ščita, da je bilo celotno orodje kompaktno in enostavno za premikanje.

Pri ustvarjanju modela sem upošteval vrsto predpostavk:

  • Zaradi česar je avtomatiziran motor skoraj preprost in enostaven za reprodukcijo
  • Čim bolj zmanjšajte število komponent za tiskanje, ki niso 3D, da bi to naredili
  • Čim bolj zmanjšajte obremenitve, ki so bile pri tiskanju na ekstruder
  • Uporabite nizkocenovno in enostavno programiranje mikro krmilne plošče
  • S senzorjem obremenitve za težo nadzirajte porabo filamentov in dovajanje filamentov Upravljajte okoljski hrup, ki moti meritve teže filamentov

To je rezultat, ki sem ga dosegel.

3. korak: Sestavljanje osnove

Sestavljanje baze
Sestavljanje baze
Sestavljanje baze
Sestavljanje baze
Sestavljanje baze
Sestavljanje baze

Prvi korak je sestavljanje podstavka s senzorjem teže.

  1. Vstavite majhno cev osi ležaja v ležajno luknjo
  2. Dva ločevalna diska postavite na stranice ležaja
  3. Vstavite komponente v nosilec ležaja velikosti "U" in poravnajte luknje
  4. Vstavite imbus vijak na eno stran, podložko in matico na drugo stran, tako da matico zaprete brez prevelikega napora

Postopek ponovite na vseh štirih nosilcih ležajev. Nato preizkusite sklop: ležaji se morajo prosto vrteti.

Sedaj z imbus vijaki pritrdite štiri ležajne nosilce na zgornji podlagi s štirimi regulacijskimi luknjami. Nosilne ležaje poravnajte tako, da ostanejo vzporedni. Razdaljo prilagodite glede na širino zvitkov z žarilno nitko.

Naslednji korak je sestavljanje palice senzorja teže, ki drži spodnji in zgornji podstavek skupaj. Senzor za težo ima na obeh straneh dva različna imbus vijaka, zato ga morate usmeriti tako, da bo oznaka največje teže berljiva, če je osnova pravilno nameščena. Spodnji del ima dve dodatni stranski luknji za pritrditev A/D ojačevalnika senzorja teže. Ojačevalnik na osnovi HX711 IC bo napajan in povezan s ploščo Arduino prek štirih žic, kot je prikazano v priloženem podatkovnem listu senzorja.

Zadnji korak je sestavljanje celotne zgornje podlage nad senzorjem teže, ki je že pritrjen na spodnji del.

Prva komponenta je nastavljena!

4. korak: Sestavljanje delov motorja za tuljave

Sestavljanje delov motorja za tuljave
Sestavljanje delov motorja za tuljave
Sestavljanje delov motorja za tuljave
Sestavljanje delov motorja za tuljave
Sestavljanje delov motorja za tuljave
Sestavljanje delov motorja za tuljave

Najlažji postopek za sestavljanje tuljavnega motorja je ločeno sestavljanje štirih najpomembnejših sestavnih delov, nato pa zaključite končno gradnjo:

Motor z enosmernim tokom v prenosni omarici motorja

Enosmerni motor je treba namestiti v osrednji del nosilca konstrukcije; preden privijete motor, se morate odločiti, katera stran je vaša najprimernejša, kam stran zobnikov postaviti, da pravilno poravnate dve roki, ki držita motor, in pogonsko veliko prestavo.

Pogon velike prestave

Veliko orodje je treba priviti s okrnjenim stožčastim blokom s štirimi imbus vijaki. To orodje bodo na vrtljivi osi blokirali matice; stožčasti del bo držal tuljavo z žarilno nitko, ki je na drugi strani zaklenjena s podobnimi maticami znotraj drugega okrnjenega stožčastega bloka. Ta rešitev ne drži le premikajočega se mehanizma, ampak tudi usmeri vso težo na podlago in predstavlja težo tare sistema.

Nosilec ključavnice tuljave

To je okrnjeni stožčasti blok, ki bo skupaj s pogonsko prestavo, podobno zaklepno stranjo, držal mehanizem gibanja do tuljave z žarilno nitko. Taktično je, da zgradbo zaključijo zvitki z žarilno nitko, medtem ko se opori dveh rok lahko prosto premikajo na drugi strani.

Kot je prikazano na slikah, je držalo ključavnice tuljave sestavljeno iz dveh delov. Najprej vstavite matico M4 v večji del bloka, nato zlepite drugi del (pokrov), tako da bloke držite skupaj. Matica ostane zaprta v nosilcu ključavnice, ki bo privita na os z navojem.

Škatla za ležaje

Ležajna škatla ima dve funkciji: zagotavlja dobro oporo menjalnikom in gladko in tiho gibanje. Za montažo ležajne škatle sledite tem preprostim korakom:

  1. Privijte prvo matico M4 na enega od obeh koncev osi, ki jo vodi nosilec tuljave z navojem
  2. Vstavite prvi ležaj
  3. Vstavite ločilo
  4. Vstavite drugi ležaj
  5. Privijte drugo matico in jo zmerno zaklenite. Notranji plastični ločevalnik bo nasprotoval zadostni sili, da stvari ostanejo na mestu tudi za dolgotrajno uporabo.
  6. Sestavljene ležaje vstavite v ležajno škatlo. Da bi dosegli boljše rezultate, je treba to storiti prisilno, zato pri rafiniranju plastičnih delov ne razširjajte preveč notranjosti škatle.

Pripravljeni smo na končno montažo sestavnih delov!

5. korak: Dokončanje sestavljanja motorja za gibanje

Dokončanje montaže Motion Engine
Dokončanje montaže Motion Engine
Dokončanje montaže Motion Engine
Dokončanje montaže Motion Engine
Dokončanje montaže Motion Engine
Dokončanje montaže Motion Engine

Končali bomo montažo konstrukcije, nato pa lahko preidemo na preizkus gibanja. Zdaj spet potrebujete nekaj lepila. Ležajno omarico - sestavljeno v prejšnjem koraku - je treba vstaviti v luknjo za držalo škatle na nosilcu motorja z dvema rokama in jo po možnosti lepiti, preden privijete pokrov škatle.

Opozorilo: pokrova škatle ne lepite, ampak ga samo privijte. Pokrov je pomemben za zaščito pred prahom in ga je treba odstraniti za vsa nadaljnja vzdrževalna dela.

Ko je ta nastavitev končana, preden dodate pogonsko prestavo (večjo), dodajte majhen ločilni obroč: tako ohranja veliko prestavo poravnano z motorno prestavo, ki deluje kot podložka za pritrditev gnanega premičnega sklopa.

Nato vstavite gonilnik (majhen) v gred motorja. Upoštevajte, da je v motorju in v osrednji luknji zobnika ravno stran, ki omogoča, da se zobnik vrti z enosmernim motorjem.

Zadnji korak vstavite veliko gnano prestavo, kot je prikazano na slikah, in jo z dvema maticama M4 zaklenite na navojno os.

Zgradba mehanike je končana!

6. korak: Bonus: Kako sem prilagodil podporo za upravljanje kompleta

Bonus: Kako sem prilagodil podporo za upravljanje kompleta
Bonus: Kako sem prilagodil podporo za upravljanje kompleta
Bonus: Kako sem prilagodil podporo za upravljanje kompleta
Bonus: Kako sem prilagodil podporo za upravljanje kompleta
Bonus: Kako sem prilagodil podporo za upravljanje kompleta
Bonus: Kako sem prilagodil podporo za upravljanje kompleta

Za ohranitev kompleta sem naredil zelo preprosto konstrukcijo, ki temelji na dveh aluminijastih kvadratnih ceveh, ki podpirajo osnovo in strukturo gibanja. Podnožje je bilo pritrjeno s štirimi vijaki na obe tirnici (dolžine približno 25 cm) in z nekaj majhnimi 3D natisnjenimi nosilci imam pritrdilne elemente, ki jih je mogoče premikati, da olajšamo vstavljanje in odstranjevanje zvitka z žarilno nitko.

Vsakdo lahko izbere svojo rešitev, odvisno od tega, kako je njegova delovna miza organizirana.

7. korak: Ožičenje in povezovanje z Arduinom

Image
Image
Ožičenje in povezovanje z Arduinom
Ožičenje in povezovanje z Arduinom

Kot je razloženo v koraku vsebine kompleta, sem za Arduino uporabil ščitnik DC motorja Infineon TLE94112LE in preizkusil motor tako na Arduino UNO R3 kot na zagonskem kompletu Infineon XMC110.

Če boste upravljali motor (potrebujete funkcije PWM) z DC krmilno ploščo po vaši izbiri, samo prilagodite navodila tehničnim specifikacijam vašega ščita.

Zapis o Arduino ščitu TLE04112LE

Ena od omejitev, ki sem jih doživel pri drugih ščitih za krmiljenje motorjev za Arduino, je, da uporabljajo funkcije istega mikro krmilnika (npr. PWM in GPIO zatiči); to pomeni, da se vaša plošča posveča tem nalogam, medtem ko je za druge namene na voljo le nekaj drugih virov (MPU in GPIO).

Ker ima možnost dati v roke TLE94122LE Arduino ščit za preizkušanje na cesti, je najbolj očitna prednost IC -ja, na katerem temelji plošča, le njegova popolnost. Plošča Arduino komunicira s ščitom prek protokola SPI z uporabo samo dveh nožic. Vsak ukaz, ki ga pošljete ščitu, avtonomno obdela IC TLE94112LE brez porabe virov MPU. Druga izjemna lastnost plošče Infineon je možnost krmiljenja do šestih krtačenih motorjev s tremi programabilnimi kanali PWM. To pomeni, da lahko Arduino nastavi enega ali več motorjev, jih zažene in nadaljuje z opravljanjem drugih nalog. Ta ščit se je izkazal za popolnega, da podpira do šest različnih zvitkov filamentov hkrati. Gibanje je le ena od nalog zadolženih za MPU. Glede na možnost upravljanja šestih različnih tuljav z žarilno nitko z enim samim ščitom Arduino + vpliv stroškov na mikro krmilnik na vsakem posameznem krmilniku z žarilno nitko za manj kot 5 evrov.

Senzor teže

Po nekaj poskusih sem videl, da je mogoče z enim senzorjem upravljati celoten sistem - spremljanje in samodejno hranjenje; bremenska celica (senzor teže) lahko dinamično izmeri nihanja teže tuljave z žarilno nitko in zagotovi vse potrebne informacije.

Uporabil sem poceni merilno celico v razponu 0-5 kg skupaj z majhno ploščo na osnovi ojačevalnika HX711 AD, IC-ja, ki je poseben za upravljanje senzorjev merilnih celic. Težav ni bilo, saj je na voljo dobro delujoča knjižnica Arduino.

Trije koraki za nastavitev strojne opreme

  1. Vstavite ščit na vrh plošče Arduino ali zagonskega kompleta Infineon XMC110
  2. Priključite žice motorja na vijačna priključka Out1 in Out2 ščita
  3. Napajanje in signale iz ojačevalnika senzorja teže HX711 AD priključite na zatiče Arduino. V tem primeru sem uporabil zatiči 2 in 3, vendar so vsi prosti zatiči v redu.

Opozorilo: vhoda 8 in 10 ščit TLE94113LE rezervira za povezavo SPI

To je vse! Ste pripravljeni na nastavitev programske opreme? Kar daj.

8. korak: Niz ukazov za programsko opremo in nadzor

Komplet ukazov za programsko opremo in nadzor
Komplet ukazov za programsko opremo in nadzor
Komplet ukazov za programsko opremo in nadzor
Komplet ukazov za programsko opremo in nadzor
Komplet ukazov za programsko opremo in nadzor
Komplet ukazov za programsko opremo in nadzor
Komplet ukazov za programsko opremo in nadzor
Komplet ukazov za programsko opremo in nadzor

Celotno dokumentirano programsko opremo lahko prenesete iz skladišča GitHub 3DPrinterFilamentDispenserAndMonitor

tukaj upoštevamo le najpomembnejše dele in ukaze za upravljanje.

Število razpoložljivih zatičev na Arduino UNO je razlog, da sem se odločil za nadzor sistema prek serijskega priključka USB; Ker vsaka motorizirana enota temelji na senzorju teže, krmiljenje šestih razpršilnikov filamentov zahteva branje podatkov iz šestih senzorjev teže. Vsaka merilna celica "porabi" dva zatiča, nožica 0 in 1 sta rezervirana (Tx/Rx) za serijo, nožici 8 in 10 pa za kanal SPI, ki povezuje ščit TLE94112LE.

Stanje sistema

Programska oprema za krmiljenje deluje skozi štiri različna stanja, opredeljena v filament.h:

#define SYS_READY "Pripravljeno" // Sistem pripravljen

#define SYS_RUN "Running" // Filament in use #define SYS_LOAD "Load" // Roll naložen #define SYS_STARTED "Started" // Aplikacija zagnana // Kode stanja #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STA 3

Stanje: Zagnano

To stanje se pojavi po ponastavitvi strojne opreme ali ob vklopu sistema. Klic ob vklopu (in setup (), ko se skica začne) inicializira notranje privzete vrednosti in ga je treba začeti brez dodatne teže na platformi, saj je del zaporedja inicializacije pridobivanje absolutne tare za dosego fizične ničelne teže.

Stanje: pripravljeno

Stanje pripravljenosti nastopi po mehki ponastavitvi (poslano iz serijskega terminala). Podoben je fizični resekciji, vendar se tara ne izračuna; ukaz reset lahko zaženete tudi, ko sistem deluje.

Stanje: Naloži

Stanje nalaganja se pojavi, ko terminal pošlje ukaz za nalaganje. To pomeni, da je bil valj z žarilno nitko naložen in je bila izračunana dinamična tara. Natančno težo filamenta dobimo z vrsto nastavitve valja, ki odšteje težo enote motorja in praznega zvitka.

Stanje: Teče

Ta status omogoča samodejni izračun teže in avtomatski razpršilnik filamentov.

Sporočila terminala

Trenutna različica programske opreme, glede na ukaze, v terminal vrne človeško berljiva sporočila. Sporočila niza so opredeljena v dveh datotekah z glavo: commands.h (sporočila in odzivi, povezani z ukazi) in filament.h (nizi, ki jih razčlenjevalnik uporablja za ustvarjanje sestavljenih sporočil).

Ukazi

Pri upravljanju ukazov sta vključeni dve različni datoteki: commands.h, vključno z vsemi ukazi in povezanimi parametri ter filament.h, vključno z vsemi konstantami in definicijami, ki jih uporabljata sistem za uteževanje in razčlenjevalnik.

Medtem ko se notranji izračuni samodejno izvajajo s programsko opremo, sem izvedel vrsto ukazov za nastavitev obnašanja sistema in ročno krmiljenje nekaterih parametrov.

Ukazne ključne besede razlikujejo med velikimi in malimi črkami in jih je treba poslati samo s terminala. Če ukaz ni primeren za trenutno stanje, ni prepoznan, se vrne napačno ukazno sporočilo, sicer se ukaz izvede.

Ukazi stanja

Spremenite trenutno stanje sistema in prilagodite tudi vedenje

Ukazi za filament

Z ločenimi ukazi je mogoče nastaviti lastnosti žarilne nitke in zvitka glede na najpogostejšo težo in velikosti, ki so danes na voljo na trgu

Ukazi za enote

To je nekaj ukazov za nastavitev vizualizacije merskih enot v gramih ali centimetrih. Pravzaprav je mogoče ukaze odpraviti in vedno predstavljati podatke v obeh enotah.

Ukazi za informacije

Prikažite skupine informacij glede na stanje sistema

Ukazi motorja

Upravljajte motor za dovajanje ali vlečenje filamentov.

Vsi ukazi motorja sledijo poti pospeševanja/pojemka. Oba ukaza "feed and pull" izvedeta kratko zaporedje, kot je definirano v motor.h s konstanto FEED_EXTRUDER_DELAY, medtem ko ukaza feedc in pullc tečeta za nedoločen čas, dokler ukaz stop ni sprejet.

Ukazi načina delovanja

Stanje delovanja sprejema dva načina; način človek le občasno beri težo in motor se premika, dokler se ne pošlje ukaz za upravljanje motorja. Način samodejno izvede dva ukaza za podajanje, ko ekstruder potrebuje več filamentov.

Načelo temelji na odčitkih teže, kontekstualiziranih za to posebno okolje. Pričakujemo, da bo poraba žarilnih nitk razmeroma počasna, 3D -tiskalniki so skoraj počasni in normalna nihanja teže odvisna od vibracij okolja (bolje, če na 3D -tiskalnik ne postavite vseh stvari)

Ko ekstruder vleče filament, se razlika v teži dramatično poveča (50 g ali več) v zelo kratkem času, običajno med dvema ali tremi odčitki. Te podatke filtrira programska oprema, ki "odšteje", da je potrebna nova nit. Da bi se izognili napačnim odčitkom, se razlike v teži med delovanjem motorja sploh ne upoštevajo.

Logika aplikacije

Logika aplikacije je razdeljena v.ino main (skica Arduino) po treh funkcijah: setup (), loop () in parseCommand (commandString)

Skica uporablja dva ločena razreda: razred FilamentWeight za upravljanje vseh izračunov filamentov in odčitavanje senzorjev prek razreda HX711 IC in MotorControl, ki povezuje metode nizkega nivoja ščita TLE94112LE Arduino.

nastaviti()

Zažene se enkrat ob vklopu ali po ponastavitvi strojne opreme inicializira primerke razredov, nastavi strojno opremo in terminalsko komunikacijo.

zanka ()

Funkcija glavne zanke upravlja tri različne pogoje.

Čeprav obstajata dva razreda senzorjev teže in motorjev, ki sta relativno zapletena, je prednost, da je nastalo skico res enostavno razumeti in upravljati.

  1. Preverite (v samodejnem načinu), če ekstruder potrebuje več filamentov
  2. Če motor deluje, preverite napake strojne opreme (vrne TLE94112LE)
  3. Če so na voljo serijski podatki, razčlenite ukaz

parseCommand (commandString)

Funkcija razčlenjevanja preveri nize, ki prihajajo iz zaporedja, in ko je ukaz prepoznan, se takoj obdela.

Vsak ukaz deluje kot državni stroj, ki vpliva na neke parametre sistema; po tej logiki se vsi ukazi zmanjšajo na tri zaporedna dejanja:

  1. Pošljite ukaz razredu FilamentWeight (ukazi za težo) ali razredu MotorControl (ukazi motorja)
  2. Izvede izračun za posodobitev vrednosti teže ali posodobitev enega od notranjih parametrov
  3. Pokažite na terminalu in izhodu informacij, ko je izvedba končana

Namestite knjižnico HX711 Arduino, prenesite programsko opremo iz GitHub in jo naložite na svojo ploščo Arduino, nato pa uživajte!

Priporočena: