Innholdsfortegnelse:

Robotic Filament Dispenser for Arduino: 8 trinn (med bilder)
Robotic Filament Dispenser for Arduino: 8 trinn (med bilder)

Video: Robotic Filament Dispenser for Arduino: 8 trinn (med bilder)

Video: Robotic Filament Dispenser for Arduino: 8 trinn (med bilder)
Video: Setting up a 3d Printer with MKS sGen L v1.0 Part 3 2024, Juli
Anonim
Image
Image

Hvorfor et motorisert verktøy

3D -skrivere filament - vanligvis nesten robust - trekkes av ekstruderen mens valsen plasseres i nærheten av skriveren, og kan roteres fritt. Jeg har observert betydelige forskjeller i materialadferd avhengig av bruksnivå, referert til 1 kg filamentruller. En ny (full) filamentrulle flyter nesten godt, men kraften som ekstruderen påfører bør være relativt relevant: vekten er minst 1,5 kg.

Ekstrudermotoren (de fleste tilfeller en Nema17-stepper) har tilstrekkelig kraft til å utføre jobben, men ekstruderens to gir skyver filamentet til den varme enden mens de arbeider, samler partikler av filamentet på grunn av de påførte kreftene; dette krever hyppig ekstrudervedlikehold for å unngå at dysen tetter seg. Disse partiklene har en tendens til å løsne og blande seg med det rene filamentet mens det mates, noe som øker dyseproblemer og hyppigere munnslitasje; Dette skjer oftere med 0,3 mm diameter dyser.

Når glødetråden er halvt brukt eller mer, blir spiralene mindre, og under noen miljøforhold har gløden en tendens til å bryte for ofte. Lange utskriftsjobber blir mindre pålitelige og stressende; Jeg kan ikke la skriveren jobbe alene en hel natt uten å kontrollere den. Dermed kontrollerer filamentmatningen med motorfigurer som løser en rekke problemer.

Settet er tilgjengelig på Tindie.com

Trinn 1: Innholdet i settet

Kit -innholdet
Kit -innholdet
Kit -innholdet
Kit -innholdet

Settet inneholder alle 3D -trykte deler og mekanikk for montering av motorisert filamentdispenser. Det er i stedet to valgfrie deler: motoren og motorstyrerkortet.

I oppsettet mitt har jeg brukt en 12 V McLennan -børstet motor, men enhver motor med en diameter på 37 mm kan passe godt inn i motorstøtten.

De beste prestasjonene oppnås med et TLE94112LE Arduino -skjold av Infineon (full anmeldelse her); dette DC -motorstyrkortet kan støtte opptil 6 forskjellige robotdispenser -sett samtidig.

Jeg har testet hele systemet på både en Arduino UNO R3 og det Arduino -kompatible kortet XMC1100 Boot kit fra Infineon, og systemet reagerte veldig godt på begge mikrokontrollerkortene.

Bruken av TLE94112LE -skjoldet er foreslått, men ikke avgjørende. Enhver DC -motorstyring for Arduino - inkludert ditt eget prosjekt! - kan fungere fint med dette verktøyet

Settet er delt i to sett med komponenter da to deler er bygget for å fungere sammen. Baseplattformen støtter filamentrullen som roterer på de fire frie hjullagrene. Basen er festet til vektføleren for å kontrollere den roterende mekanismen som aktiverer den, samt overvåke filamentforholdene: vekt, meter og prosent. Mye informasjon, så vel som et komplett kommandosett er tilgjengelig fra Arduino gjennom en seriell terminal.

Verktøy du trenger

For å fullføre monteringen trenger du noe robust plastlim for noen deler, en skrutrekker og et sett med unbrakoskruer.

Trinn 2: Prosjektet og designet

Prosjektet og designet
Prosjektet og designet
Prosjektet og designet
Prosjektet og designet
Prosjektet og designet
Prosjektet og designet

Dette prosjektet er den tredje utviklingen av 3D -skriveren filamentdispenser -serien For noen ganger siden opprettet jeg den roterende basen for å optimalisere strømmen av filamentet når det ble trukket av 3D -skriverens ekstruder.

Den andre modellen inkluderte en vektsensor for overvåking av filamentbruken i sanntid med et Arduino -kort. Dette siste prosjektet inkluderer automatisk utgivelse av filamentet avhengig av behovene til 3D -skriverjobben. Den er basert på den virtuelle vektvariasjonen når ekstruderen begynner å trekke filamentet. Denne hendelsen utløser mikrokontrolleren gjennom vektføleren og den motoriserte filamentrullen begynner å slippe ut noen centimeter materiale, deretter bremse og stoppe.

Komponentene har blitt eksportert i STL -format og 3D -trykt, deretter raffinert og satt sammen. Jeg har laget en tilpasset støtte for å justere bevegelsesdelen til basen. Den lengre aluminiumsskinnen ble også brukt til å støtte Arduino og motorskjermen for å gjøre hele verktøyet kompakt og lett å flytte.

Ved å lage designet fulgte jeg en rekke forutsetninger:

  • Gjør den automatiserte motoren nesten enkel og lett å reprodusere
  • Reduser så mye som mulig antallet ikke-3D-utskrivbare komponenter for å lage det
  • Reduser så mye som mulig belastningen på ekstruderen mens du skriver ut
  • Bruk en rimelig og enkel å programmere mikrokontrollerkort
  • Bruk vektbelastningssensoren for å holde kontroll over glødetrådforbruket og filamentmating Behandle miljøstøyen som forstyrrer filamentvektstiltakene

Dette er resultatet jeg nådde.

Trinn 3: Montering av basen

Montering av basen
Montering av basen
Montering av basen
Montering av basen
Montering av basen
Montering av basen

Det første trinnet er å montere basen med vektføleren.

  1. Sett det lille lagerakselrøret inn i lagerhullet
  2. Sett de to skilleskivene på sidene av lageret
  3. Introduser komponentene inne i lagerstøtten "U" og juster hullene
  4. Sett inn unbrakoskruen til den ene siden, og skiven og mutteren til den andre siden lukker mutteren uten for mye innsats

Du bør gjenta operasjonen på alle de fire lagerstøttene. Test deretter enheten: lagrene skal rotere fritt.

Fest nå med de fire unbrakoskruene de fire lagerstøttene på toppsokkelen med de fire reguleringshullene. Juster lagerstøttene for å holde dem parallelle. Reguler avstanden avhengig av bredden på filamentrullene.

Det neste trinnet er å montere vektfølerstangen som holder bunnen og toppbunnen sammen. Vektføleren har to forskjellige unbrakoskruer på begge sider, og du bør orientere den slik at etiketten for maks vekt kan leses når basen er riktig plassert. Den nederste basen har to ekstra sidehull for å fikse vektfølerens A/D -forsterker. Forsterkeren basert på HX711 IC vil bli drevet og koblet til Arduino -kortet gjennom de fire ledningene som vist i det vedlagte sensordatabladet.

Det siste trinnet er å montere den komplette toppbasen over vektføleren som allerede er festet til den nedre delen.

Den første komponenten er konfigurert!

Trinn 4: Montering av Spool Motion Motordeler

Montering av Spool Motion Motordeler
Montering av Spool Motion Motordeler
Montering av Spool Motion Motordeler
Montering av Spool Motion Motordeler
Montering av Spool Motion Motordeler
Montering av Spool Motion Motordeler

Den enklere fremgangsmåten for å montere spolemotoren er å sette sammen de fire viktigste komponentene separat, og fullfør den siste bygningen:

Den drevne likestrømsmotoren i motorens overføringsboks

Likestrømsmotoren skal monteres i den sentrale delen av konstruksjonsstøtten; før du skrur på motoren, bør du bestemme hva som vil være din foretrukne side hvor du skal sette girsiden for å justere de to armene som holder motoren og det drevne store giret riktig.

Det drevne store giret

Det store giret skal skrus med den avkortede koniske blokken med de fire unbrakoskruene. Dette giret vil bli blokkert på den roterende aksen av muttere; den koniske delen vil holde glødetråden som er låst til den andre siden av en lignende låsemutter inne i en annen avkortet konisk blokk. Denne løsningen holder ikke bare den bevegelige mekanismen på plass, men retter hele vekten mot basen, og det er egenvekten til systemet.

Snellelåsholder

Dette er den avkortede koniske blokken som sammen med det drevne giret lignende låseside vil holde bevegelsesmekanismen til glødetråden. Som et spørsmål om takt er det filamentrullen som fullfører bygningen mens bevegelsen med to armer er fri til å bevege seg på den andre siden.

Som det er vist på bildene, er spolelåsholderen bygget i to deler. Før først M4 -mutteren inn i den større delen av blokken, lim deretter den andre delen (dekselet) og hold blokkene sammen. Mutteren forblir fengslet inne i låseholderen som skal skrus fast til den gjengede drevaksen.

Lagerkassen

Lagerboksen har to funksjoner: gi god støtte til girene og en jevn og stille bevegelse. Følg disse enkle trinnene for å montere lagerboksen:

  1. Skru den første M4 -mutteren til en av de to endene av den gjengede spoleholder -aksen
  2. Sett inn det første lageret
  3. Sett inn separatoren
  4. Sett inn det andre lageret
  5. Skru den andre mutteren og lås den moderat. Den interne plastskilleren vil motsette seg tilstrekkelig kraft til å holde tingene på plass også for lang tids bruk.
  6. Sett de monterte lagrene inn i lagerboksen. Det bør gjøres med tvang for å gi de bedre resultatene, så ikke utvid esken for mye når du foredler plastdelene.

Vi er klare for den siste komponentmonteringen!

Trinn 5: Fullfør monteringen av Motion Engine

Fullfører monteringen av Motion Engine
Fullfører monteringen av Motion Engine
Fullfører monteringen av Motion Engine
Fullfører monteringen av Motion Engine
Fullfører monteringen av Motion Engine
Fullfører monteringen av Motion Engine

Vi er i ferd med å fullføre konstruksjonsmonteringen, så kan vi gå for å teste bevegelse. Nå trenger du igjen noen få lim. Lagerboksen - montert i forrige trinn - bør settes inn i bokseholderhullet på motoren med to armer og eventuelt limes før for å skru boksdekselet.

Advarsel: ikke lim esken, bare skru den. Dekselet er viktig for støvbeskyttelse og bør kunne tas av ved fremtidig vedlikehold.

Når dette oppsettet er fullført før du legger til det drevne giret (det større), legger du til den lille separatorringen: det holder det store giret på linje med motorgiret som fungerer som en vaskemaskin for å fikse den drevne bevegelige enheten.

Sett deretter drivergiret (det lille) inn i motorakselen. Vær oppmerksom på at det også er en flat side i motoren i tannhullet for å holde giret roterende drevet av likestrømsmotoren.

Siste trinn, sett inn det store drevne giret som vist på bildene og lås det til gjengeaksen med to M4 -muttere.

Mekanikkbygningen er ferdig!

Trinn 6: Bonus: Hvordan jeg tilpasser støtten til å administrere settet

Bonus: Hvordan jeg tilpasser støtten til å administrere settet
Bonus: Hvordan jeg tilpasser støtten til å administrere settet
Bonus: Hvordan jeg tilpasser støtten til å administrere settet
Bonus: Hvordan jeg tilpasser støtten til å administrere settet
Bonus: Hvordan jeg tilpasser støtten til å administrere settet
Bonus: Hvordan jeg tilpasser støtten til å administrere settet

For å holde settet på plass laget jeg en veldig enkel struktur basert på to firkantrør av aluminium for å støtte både basen og bevegelsesstrukturen. Basen er festet med fire skruer til de to skinnene (ca. 25 cm lengde), og med et par små 3D -trykte støtter har jeg fikserer bevegelsesmotoren fri for å bevege seg for å gjøre innsetting og fjerning av filamentrullen enkel.

Alle kan velge sin egen løsning avhengig av hvordan arbeidsbenken er organisert.

Trinn 7: Kabling og tilkobling til Arduino

Image
Image
Kabling og tilkobling til Arduino
Kabling og tilkobling til Arduino

Som forklart i Kit -innholdstrinnet, har jeg brukt et Infineon TLE94112LE DC motorskjerm for Arduino og testet motoren på både Arduino UNO R3 og Infineon XMC110 Boot Kit.

Hvis du vil kontrollere motoren (trenger PWM -funksjoner) med et valgfritt DC -styrekort, kan du bare tilpasse instruksjonene til de tekniske spesifikasjonene til skjoldet ditt.

Et notat om TLE04112LE Arduino Shield

En av grensene jeg har opplevd med andre motorstyringsskjold for Arduino er at de bruker funksjonene til den samme mikrokontrolleren (dvs. PWM- og GPIO -pinner); dette betyr at brettet ditt blir dedikert til disse oppgavene, mens bare få andre ressurser (MPU og GPIO) er tilgjengelige for annen bruk.

Å ha muligheten til å legge hendene på TLE94122LE Arduino -skjoldet for veitesting, er den mest åpenbare fordelen med IC -kortet som er basert på bare dens fullstendighet. Arduino -kortet kommuniserer til skjoldet via SPI -protokollen ved hjelp av bare to pinner. Hver kommando du sender til skjoldet, behandles autonomt av TLE94112LE IC uten å bruke MPU -ressurser. En annen bemerkelsesverdig egenskap ved Infineon -kortet er muligheten til å kontrollere opptil seks børstede motorer med tre programmerbare PWM -kanaler. Dette betyr at Arduino kan sette opp en eller flere motorer, starte dem og fortsette å jobbe med andre oppgaver. Dette skjoldet avslørte perfekt for å støtte opptil seks forskjellige filamentruller samtidig. S bevegelse er bare en av oppgavene som er ansvarlig for MPU. Vurderer muligheten for å administrere seks forskjellige filamentruller med en enkelt Arduino + skjerm mikrokontrollerens kostnadseffekter på hver enkelt filamentkontroller for mindre enn 5 Euro.

Vektføleren

Etter å ha gjort noen eksperimenter så jeg at det var mulig å kontrollere hele systemet - overvåking og automatisk mating - med en enkelt sensor; en lastcelle (vektføler) er i stand til dynamisk å måle glødetrådens vektvariasjoner som gir all informasjon vi trenger.

Jeg brukte en billig lastcelle i området 0-5 Kg sammen med et lite brett basert på HX711 AD-forsterkeren, en IC som er spesifikk for å administrere lastcellesensorene. Det var ingen grensesnittproblemer, ettersom det er tilgjengelig et godt fungerende Arduino -bibliotek.

Tre trinn for innstilling av maskinvaren

  1. Sett inn skjoldet på toppen av Arduino -kortet eller Infineon XMC110 Boot Kit
  2. Koble motortrådene til Out1 og Out2 skruede kontakter på skjermen
  3. Koble strømmen og signalene fra HX711 AD vektfølerforsterker til Arduino -pinnene. I dette tilfellet har jeg brukt pinne 2 og 3, men alle de gratis pinnene er fine.

Advarsel: side 8 og 10 er reservert av TLE94113LE -skjoldet for SPI -tilkoblingen

Det er alt! Klar til å sette opp programvaren? Gå videre.

Trinn 8: Programvare- og kontrollkommandosettet

Programvare- og kontrollkommandosettet
Programvare- og kontrollkommandosettet
Programvare- og kontrollkommandosettet
Programvare- og kontrollkommandosettet
Programvare- og kontrollkommandosettet
Programvare- og kontrollkommandosettet
Programvare- og kontrollkommandosettet
Programvare- og kontrollkommandosettet

Den fullstendige dokumenterte programvaren kan lastes ned fra GitHub -depotet 3DPrinterFilamentDispenserAndMonitor

her vurderer vi bare de mest meningsfulle delene og kontrollkommandoene.

Det er en grunn som pålegges av antall tilgjengelige pinner på Arduino UNO I bestemte meg for å kontrollere systemet via USB -seriell terminal; Siden hver motorisert enhet er basert på en vektsensor, krever det å kontrollere seks forskjellige filamentdispensere å lese data fra seks vektfølere. Hver lastecelle "bruker" to pinner, pin 0 og 1 er reservert (Tx/Rx) for serien og pinnene 8 og 10 er reservert for SPI -kanalen som forbinder TLE94112LE -skjoldet.

System status

Kontrollprogramvaren fungerer gjennom fire forskjellige tilstander, definert i filament.h:

#define SYS_READY "Ready" // System ready

#define SYS_RUN "Running" // Filament in use #define SYS_LOAD "Load" // Roll loaded #define SYS_STARTED "Started" // Application started // Status codes #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Status: Startet

Denne statusen oppstår etter en maskinvaretilbakestilling eller når systemet er slått på. Oppstart (og oppsett () -anropet når skissen starter) initialiserer de interne standardverdiene og bør startes uten ekstra vekt på plattformen, som en del av initialiseringssekvensen er anskaffelsen av absolutt tara for å nå den fysiske nullvekten.

Status: Klar

Klar -tilstanden oppstår etter en myk tilbakestilling (sendt fra den serielle terminalen). Det ligner på den fysiske resekten, men ingen tare beregnes; reset -kommandoen kan startes også når systemet kjører.

Status: Last

Laststatus oppstår når lastkommandoen sendes av terminalen. Dette betyr at filamentrullen er lastet inn og at den dynamiske taren er beregnet. Den nøyaktige filamentvekten oppnås ved den type rulloppsett som trekker vekten til motorenheten og den tomme rullen.

Status: Løper

Denne statusen muliggjør automatisk vektberegning og automatisk filamentdispenser.

Terminalmeldinger

Den nåværende versjonen av programvaren returnerer lesbare meldinger til terminalen, avhengig av kommandoene. Strengmeldingene er definert i to topptekster: commands.h (kommandorelaterte meldinger og svar) og filament.h (strenger som brukes av parseren til å lage sammensatte meldinger).

Kommandoer

To forskjellige filer er involvert i kommandostyringen: commands.h inkludert alle kommandoene og relaterte parametere og filament.h inkludert alle konstantene og definisjonene som brukes av vektingssystemet og av analysatoren.

Selv om de interne beregningene utføres automatisk av programvare, har jeg implementert en rekke kommandoer for å angi systemets oppførsel og manuelt kontrollere noen parametere.

Kommandosøkeord er store og små bokstaver og bør bare sendes fra terminalen. Hvis en kommando ikke er passende for den nåværende statusen for den, blir den ikke gjenkjent, returneres en feil kommandomelding ellers blir kommandoen utført.

Statuskommandoer

Endre systemets nåværende status, og atferden blir også tilpasset

Filamentkommandoer

Ved å bruke separate kommandoer er det mulig å sette opp filament- og rullegenskapene basert på den vanligste vekten og størrelsene som er tilgjengelig på markedet i dag

Enhetskommandoer

Dette er et par kommandoer for å sette visualiseringen av måleenhetene i gram eller centimeter. Faktisk er det mulig å eliminere disse kommandoene og alltid representere data i begge enhetene.

Informasjonskommandoer

Vis grupper av informasjon avhengig av systemstatus

Motorkommandoer

Kontroller motoren for filamentmatning eller trekk.

Alle motorkommandoer følger en akselerasjons-/retardasjonsbane. De to kommandoene mate og pull utfører en kort sekvens som definert i motor.h ved konstant FEED_EXTRUDER_DELAY mens feedc og pullc kommandoer kjøres på ubestemt tid til en stoppkommando ikke mottas.

Kommandoer i kjøremodus

Løpestatusen godtar to moduser; mode man leser bare jevnlig vekten og motoren beveger seg til en motorstyringskommando ikke sendes. Mode auto utfører i stedet to feedkommandoer når ekstruderen trenger mer filament.

Prinsippet er basert på vektavlesningene, kontekstualisert til dette bestemte miljøet. Vi forventer at filamentforbruket er relativt sakte, 3D -skrivere er nesten treg og svingningene i normal vekt avhenger av vibrasjonene i miljøet (bedre hvis du ikke legger alt på 3D -skriveren)

Når ekstruderen trekker i filamentet i stedet øker vektforskjellen dramatisk (50 g eller mer) på svært få tid, vanligvis mellom to eller tre avlesninger. Denne informasjonen filtreres av programvaren som "trekker fra" at nytt filament er nødvendig. For å unngå feil avlesninger ignoreres vektvariasjoner mens motoren er i det hele tatt.

Applikasjonslogikk

Applikasjonslogikken er distribuert i.ino main (Arduino -skissen) langs tre funksjoner: setup (), loop () og parseCommand (commandString)

Skissen bruker to separate klasser: FilamentWeight -klassen for å administrere alle filamentberegningene og sensoravlesningen via HX711 IC- og MotorControl -klassen som grensesnitt til lavnivåmetodene til TLE94112LE Arduino -skjoldet.

oppsett ()

Startet en gang ved oppstart eller etter en maskinvaretilbakestilling initialiserer forekomstene av klassene, konfigurerer maskinvaren og terminalkommunikasjonen.

Løkke()

Hovedløyfefunksjonen håndterer tre forskjellige forhold.

Selv om det er to klasser for vektfølere og motorer relativt komplekse, er det fordelen at den resulterende skissen er veldig lett å forstå og administrere.

  1. Kontroller (i modus automatisk) om ekstruderen trenger mer filament
  2. Hvis motoren går, sjekk for maskinvarefeil (returnert av TLE94112LE)
  3. Hvis det er serielle data tilgjengelig, analyser du kommandoen

parseCommand (commandString)

Parsingsfunksjonen sjekker om strengene som kommer fra serien, og når en kommando blir gjenkjent, blir den umiddelbart behandlet.

Hver kommando fungerer som en statlig maskin som påvirker noen parameter i systemet; etter denne logikken reduseres alle kommandoene til tre sekvensielle handlinger:

  1. Send en kommando til FilamentWeight -klassen (vektkommandoer) eller til MotorControl -klassen (motorkommandoer)
  2. Utfører en beregning for å oppdatere vektverdier eller oppdatere en av de interne parameterne
  3. Vis på terminalen og informasjonsutdata når kjøringen er fullført

Installer HX711 Arduino -biblioteket, last ned programvaren fra GitHub og last den opp til Arduino -kortet, så nyt!

Anbefalt: