Indholdsfortegnelse:

Robotfilamentdispenser til Arduino: 8 trin (med billeder)
Robotfilamentdispenser til Arduino: 8 trin (med billeder)

Video: Robotfilamentdispenser til Arduino: 8 trin (med billeder)

Video: Robotfilamentdispenser til Arduino: 8 trin (med billeder)
Video: Makeblock Untimate Robot Kit Part 2 : Robtic Arm Explaine, Software, Code App and Having Fun demo 2024, Juli
Anonim
Image
Image

Hvorfor et motoriseret værktøj

3D -printere filament - normalt næsten robust - trækkes af ekstruderen, mens rullen placeres i nærheden af printeren, fri til at rotere. Jeg har observeret betydningsfulde forskelle i materialeadfærden afhængigt af brugsniveauet, refereret til 1 kg filamentruller. En ny (fuld) filamentrulle flyder næsten godt, men kraften, som ekstruderen påfører, bør være relativt relevant: vægten er mindst 1,5 kg.

Ekstrudermotoren (de fleste tilfælde Nema17-stepper) har tilstrækkelig kraft til at udføre jobbet, men ekstruderens to gear skubber filamentet til den varme ende, mens de arbejder, samler partikler af filamentet på grund af de påførte kræfter; dette kræver hyppig ekstrudervedligeholdelse for at undgå, at dysen tilstoppes. Disse partikler har en tendens til at løsne sig og blande sig med det rene filament, mens det fodres, hvilket øger dyseproblemerne og en hyppigere slid på dysen; dette sker hyppigere med 0,3 mm diameter dyser.

Når filamentrullen er halvt brugt eller mere, bliver spiralerne mindre, og under nogle miljøforhold har gløden en tendens til at gå i stykker for ofte. Lange printopgaver bliver mindre pålidelige og stressende; Jeg kan ikke lade printeren arbejde alene i en hel nat uden at kontrollere den. Således styrer filamenttilførslen ved hjælp af motorfigurer, der løser en række problemer.

Sættet er tilgængeligt på Tindie.com

Trin 1: Sættets indhold

Sættets indhold
Sættets indhold
Sættets indhold
Sættets indhold

Sættet indeholder alle 3D -trykte dele og mekanik til montering af den motoriserede filamentdispenser. Der er i stedet to valgfri dele: motoren og motorens styrekort.

I mit setup har jeg brugt en 12 V McLennan gearet børstet motor, men enhver gearet 37 mm diameter motor kan passe ordentligt inde i motorstøtten.

De bedste præstationer opnås med et TLE94112LE Arduino -skjold af Infineon (fuld anmeldelse her); dette DC -motorstyrkort kan understøtte op til 6 forskellige robotdispenser -sæt på samme tid.

Jeg har testet hele systemet på både en Arduino UNO R3 og det Arduino kompatible board XMC1100 Boot kit fra Infineon, og systemet reagerede meget godt på begge mikrokontrolkortene.

Brugen af TLE94112LE -skjoldet er foreslået, men ikke afgørende. Enhver DC -motor controller til Arduino - inklusive dit eget projekt! - kan fungere fint med dette værktøj

Sættet er opdelt i to sæt komponenter, da to dele er bygget til at arbejde sammen. Baseplatformen understøtter filamentrullen, der roterer på de fire frie hjullejer. Basen er fastgjort til vægtsensoren for at styre den roterende mekanisme, der aktiverer den, samt overvåge filamentforholdene: vægt, meter og procent. Mange oplysninger samt et komplet kommandosæt er tilgængelige fra Arduino via en seriel terminal.

Værktøjer du har brug for

For at fuldføre samlingen har du brug for en robust plastlim til nogle dele, en skruetrækker og et sæt unbrakoskruer.

Trin 2: Projektet og designet

Projektet og designet
Projektet og designet
Projektet og designet
Projektet og designet
Projektet og designet
Projektet og designet

Dette projekt er den tredje udvikling af 3D -printeren filamentdispenser -serien For nogle gange siden skabte jeg den roterende base for at optimere filamentets strøm, når den trækkes af 3D -printerens ekstruder.

Den anden model inkluderede en vægtsensor til overvågning af filamentforbruget i realtid med et Arduino -kort. Dette sidste projekt omfatter automatisk frigivelse af filamentet afhængigt af behovene i 3D -printerjobbet. Det er baseret på den virtuelle vægtvariation, når ekstruderen begynder at trække filamentet. Denne hændelse udløser mikrokontrolleren gennem vægtsensoren, og den motoriserede filamentrulle begynder at frigive nogle centimeter materiale og derefter bremse og stoppe.

Komponenterne er blevet eksporteret i STL -format og 3D -printet, derefter raffineret og samlet. Jeg har oprettet en brugerdefineret support til at justere bevægelsesdelen til basen. Den længere aluminiumsskinne blev også brugt til at understøtte Arduino og motorskærmen for at gøre hele værktøjet kompakt og let at flytte.

Ved oprettelsen af designet fulgte jeg en række antagelser:

  • Gør den automatiserede motor næsten enkel og let at gengive
  • Reducer så meget som muligt antallet af ikke-3D-printbare komponenter for at lave det
  • Reducer så meget som muligt belastningen på ekstruderen under udskrivning
  • Brug en billig og let at programmere mikrokontrolkort
  • Brug vægtbelastningssensoren til at holde styr på filamentforbruget og filamentfødningen Administrer miljøstøj, der forstyrrer filamentets vægtmål

Dette er det resultat, jeg nåede.

Trin 3: Montering af basen

Montering af basen
Montering af basen
Montering af basen
Montering af basen
Montering af basen
Montering af basen

Det første trin er at samle basen med vægtsensoren.

  1. Indsæt det lille lejerakse -rør i lejehullet
  2. Sæt de to separatorskiver til siderne af lejet
  3. Indfør komponenterne inde i den "U" størrelse lejestøtte, der justerer hullerne
  4. Sæt unbrakoskruen i den ene side, og skiven og møtrikken til den anden side lukker møtrikken uden for stor indsats

Du bør gentage handlingen på alle de fire lejestøtter. Test derefter samlingen: lejerne skal rotere frit.

Nu fastgøres med unbrakoskruerne de fire lejestøtter på topfoden med de fire reguleringshuller. Juster lejebærerne for at holde dem parallelle. Reguler afstanden afhængigt af bredden på dine filamentruller.

Det næste trin er at samle vægtsensorstangen, der holder bunden og den øverste bund sammen. Vægtføleren har to forskellige unbrakoskruer på begge sider, og du skal orientere den, så maksimalvægten kan læses, når basen er korrekt placeret. Den nederste base har to ekstra sidehuller til fastgørelse af vægtsensorens A/D -forstærker. Forstærkeren baseret på HX711 IC vil blive drevet og forbundet til Arduino -kortet gennem de fire ledninger som vist i det vedlagte sensordatablad.

Det sidste trin er at samle den komplette topbase over vægtsensoren, der allerede er fastgjort til den nederste del.

Den første komponent er blevet opsat!

Trin 4: Montering af Spool Motion Motordele

Montering af Spool Motion Motordele
Montering af Spool Motion Motordele
Montering af Spool Motion Motordele
Montering af Spool Motion Motordele
Montering af Spool Motion Motordele
Montering af Spool Motion Motordele

Den lettere procedure til at samle spolemotoren er at samle de fire vigtigste komponenter separat og derefter færdiggøre den sidste bygning:

Den gearede DC -motor i motorens gearkasse

DC -motoren skal monteres i den centrale del af strukturstøtten; Inden du skruer på motoren, skal du beslutte, hvad der vil være din foretrukne side, hvor gearsiden skal placeres for at justere de to arme, der holder motoren og det drevne store gear korrekt.

Det drevne store gear

Det store gear skal skrues med den afkortede koniske blok med de fire unbrakoskruer. Dette gear vil blive blokeret på den roterende akse af møtrikker; den koniske del holder filamentrullen, der er låst til den anden side af en lignende låsemøtrikker inde i en anden afkortet konisk blok. Denne løsning holder ikke kun den bevægelige mekanisme på plads, men retter hele vægten mod basen, og det er systemets egenvægt.

Spolelåsholder

Dette er den afkortede koniske blok, der sammen med det drevne gear lignende låseside vil holde bevægelsesmekanismen til filamentrullen. Som et spørgsmål om takt er det filamentrullen, der fuldender bygningen, mens bevægelsen med to arme understøtter fri bevægelse på den anden side.

Som det er vist på billederne, er spolelåsholderen opbygget i to dele. Før først M4 -møtrikken ind i den større del af blokken, og lim derefter den anden del (dækslet) og hold blokkene sammen. Møtrikken forbliver fængslet inde i låseholderen, der skrues fast på den gevindskårne drevakse.

Lejekassen

Lejekassen har to funktioner: Giv god støtte til gearene og en jævn og lydløs bevægelse. Følg disse lette trin for at samle lejekassen:

  1. Skru den første M4 -møtrik til en af de to ender af den gevindskårne spoleholderdrevne akse
  2. Indsæt det første leje
  3. Indsæt separatoren
  4. Indsæt det andet leje
  5. Skru den anden møtrik fast og lås den moderat. Den interne plastseparator vil modsætte sig tilstrækkelig kraft til at holde tingene på plads også til lang tids brug.
  6. Indsæt de samlede lejer i lejekassen. Det bør gøres tvunget til at give de bedre resultater, så ikke udvid for meget det indre af kassen, når du raffinerer plastdelene.

Vi er klar til den sidste komponentmontering!

Trin 5: Afslutning af samlingen af Motion Engine

Afslutter samlingen af Motion Engine
Afslutter samlingen af Motion Engine
Afslutter samlingen af Motion Engine
Afslutter samlingen af Motion Engine
Afslutter samlingen af Motion Engine
Afslutter samlingen af Motion Engine

Vi er ved at afslutte konstruktionssamlingen, så kan vi gå til test af bevægelse. Nu skal du igen bruge et par lim. Lejekassen - samlet i det foregående trin - skal indsættes i boksholderhullet på de to arme motorstøtte og eventuelt limes før for at skrue boksens dæksel.

Advarsel: lim ikke boksens dæksel, skru det kun fast. Dækslet er vigtigt for støvbeskyttelse og bør kunne tages af ved enhver fremtidig vedligeholdelse.

Når denne opsætning er fuldført, før du tilføjer det drevne gear (jo større), tilføjes den lille separatorring: det holder det store gear på linje med motorhjulet, der fungerer som en skive for at fastgøre den drevne bevægelige samling.

Sæt derefter drivhjulet (det lille) i motorakslen. Bemærk, at der er en flad side i motoren samt i gearets centrale hul for at holde gearet roterende drevet af jævnstrømsmotoren.

Sidste trin skal du indsætte det store gear som vist på billederne og låse det til gevindaksen med to M4 møtrikker.

Mekanikbygningen er færdig!

Trin 6: Bonus: Sådan tilpassede jeg supporten til at administrere sættet

Bonus: Sådan tilpassede jeg supporten til at administrere sættet
Bonus: Sådan tilpassede jeg supporten til at administrere sættet
Bonus: Sådan tilpassede jeg supporten til at administrere sættet
Bonus: Sådan tilpassede jeg supporten til at administrere sættet
Bonus: Sådan tilpassede jeg supporten til at administrere sættet
Bonus: Sådan tilpassede jeg supporten til at administrere sættet

For at holde sættet på plads lavede jeg en meget enkel struktur baseret på to firkantede aluminiumsrør til at understøtte både basen og bevægelsesstrukturen. Basen er fastgjort med fire skruer til de to skinner (ca. 25 cm længde) og med et par små 3D -trykte understøtninger har jeg fikseret bevægelsesmotoren fri til at blive flyttet for let at indsætte og fjerne filamentrullen.

Enhver kan vælge sin egen løsning afhængigt af, hvordan hans arbejdsbord er organiseret.

Trin 7: Ledningsføring og tilslutning til Arduino

Image
Image
Kabelføring og tilslutning til Arduino
Kabelføring og tilslutning til Arduino

Som forklaret i Kit -indholdstrinnet har jeg brugt et Infineon TLE94112LE DC -motorskærm til Arduino og testet motoren på både Arduino UNO R3 og Infineon XMC110 Boot Kit.

Hvis du vil styre motoren (har brug for PWM -funktioner) med et DC -controllerkort efter eget valg, skal du bare tilpasse instruktionerne til de tekniske specifikationer for dit skjold.

En note om TLE04112LE Arduino Shield

En af de grænser, jeg har oplevet med andre motorstyringsskærme til Arduino, er, at de bruger funktionerne i den samme mikrokontroller (dvs. PWM- og GPIO -ben); dette betyder, at dit board bliver dedikeret til disse opgaver, mens kun få andre ressourcer (MPU og GPIO) er tilgængelige til andre formål.

Med muligheden for at lægge hænderne på TLE94122LE Arduino -skjoldet til vejtest, er den tydeligste fordel ved IC'en, kortet er baseret på, bare dens fuldstændighed. Arduino -kortet kommunikerer til skjoldet via SPI -protokollen ved hjælp af kun to ben. Hver kommando, du sender til skjoldet, behandles autonomt af TLE94112LE IC uden at bruge MPU -ressourcer. Et andet bemærkelsesværdigt træk ved Infineon -kortet er muligheden for at styre op til seks børstede motorer med tre programmerbare PWM -kanaler. Det betyder, at Arduino kan opsætte en eller flere motorer, starte dem og fortsætte med at arbejde med andre opgaver. Dette skjold afslørede perfekt til at understøtte op til seks forskellige filamentruller på samme tid s bevægelse er kun en af de opgaver, som MPU har ansvaret for. Overvejer muligheden for at styre seks forskellige filamentruller med en enkelt Arduino + afskærmning af mikrokontrollerens omkostninger på hver enkelt filamentcontroller for mindre end 5 Euro.

Vægtføleren

Efter at have foretaget nogle eksperimenter så jeg, at det var muligt at styre hele systemet - overvågning og automatisk fodring - med en enkelt sensor; en vejecelle (vægtsensor) er i stand til dynamisk at måle variationerne i filamentrullens vægt, der giver alle de oplysninger, vi har brug for.

Jeg brugte en billig vejecelle i området 0-5 Kg sammen med et lille kort baseret på HX711 AD-forstærkeren, en IC, der er specifik til at styre vejecellesensorerne. Der var ikke grænsefladeproblemer, da det er tilgængeligt et velfungerende Arduino -bibliotek.

Tre trin til indstilling af hardwaren

  1. Sæt skærmen oven på Arduino -kortet eller Infineon XMC110 Boot Kit
  2. Tilslut motorkablerne til Out1 og Out2 skruede stik på skærmen
  3. Tilslut strøm og signaler fra HX711 AD -vægtfølerforstærkeren til Arduino -benene. I dette tilfælde har jeg brugt ben 2 og 3, men alle de gratis ben er fine.

Advarsel: side 8 og 10 er reserveret af TLE94113LE -skjoldet til SPI -forbindelsen

Det er alt! Klar til at konfigurere softwaren? Fortsæt.

Trin 8: Software- og kontrolkommandosættet

Software- og kontrolkommandosættet
Software- og kontrolkommandosættet
Software- og kontrolkommandosættet
Software- og kontrolkommandosættet
Software- og kontrolkommandosættet
Software- og kontrolkommandosættet
Software- og kontrolkommandosættet
Software- og kontrolkommandosættet

Den fulde dokumenterede software kan downloades fra GitHub -depotet 3DPrinterFilamentDispenserAndMonitor

her betragter vi kun de mest meningsfulde dele og kontrolkommandoerne.

Der er en årsag til, at antallet af tilgængelige stifter på Arduino UNO I besluttede at styre systemet via USB seriel terminal; Da hver motoriseret enhed er baseret på en vægtsensor, kræver styring af seks forskellige filamentdispensere at læse data fra seks vægtsensorer. Hver vejecelle "forbruger" to ben, pin 0 og 1 er reserveret (Tx/Rx) til serien og ben 8 og 10 er reserveret til SPI -kanalen, der forbinder TLE94112LE -skærmen.

Systemstatus

Kontrolsoftwaren fungerer gennem fire forskellige tilstande, defineret i filament.h:

#define SYS_READY "Klar" // System klar

#define SYS_RUN "Kører" // Filament i brug #define SYS_LOAD "Load" // Roll indlæst #define SYS_STARTED "Startet" // Applikation startet // Statuskoder #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Status: Startet

Denne status opstår efter en hardware -nulstilling, eller når systemet tændes. Power-on (og setup () opkaldet, når skitsen starter) initialiserer de interne standardværdier og bør startes uden ekstra vægt på platformen som en del af initialiseringssekvensen er erhvervelsen af den absolutte tara for at nå den fysiske nulvægt.

Status: Klar

Klar -tilstanden opstår efter en blød nulstilling (sendt fra den serielle terminal). Det ligner den fysiske resekt, men der beregnes ingen tarre; nulstillingskommandoen kan også startes, når systemet kører.

Status: Indlæs

Laststatus opstår, når belastningskommandoen sendes af terminalen. Det betyder, at filamentrullen er blevet fyldt, og den dynamiske tarre er blevet beregnet. Den nøjagtige filamentvægt opnås ved den slags rulleopsætning, der trækker vægten af motorenheden og den tomme rulle fra.

Status: Kører

Denne status muliggør den automatiske vægtberegning og den automatiske filamentdispenser.

Terminalbeskeder

Den aktuelle version af softwaren returnerer læsbare meddelelser til terminalen afhængigt af kommandoerne. Strengmeddelelserne er defineret i to overskriftsfiler: commands.h (kommandorelaterede meddelelser og svar) og filament.h (strenge, der bruges af parseren til at oprette sammensatte meddelelser).

Kommandoer

To forskellige filer er involveret i kommandostyringen: commands.h inklusive alle kommandoer og relaterede parametre og filament.h inklusive alle de konstanter og definitioner, der bruges af vægtningssystemet og af parseren.

Mens de interne beregninger udføres automatisk af software, har jeg implementeret en række kommandoer til at indstille systemets adfærd og manuelt styre nogle parametre.

Kommandonøgleord er store og små bogstaver og skal bare sendes fra terminalen. Hvis en kommando ikke er passende for den aktuelle status, genkendes den ikke en forkert kommandomeddelelse, ellers udføres kommandoen.

Statuskommandoer

Ændre systemets aktuelle status, og adfærden tilpasses også

Filamentkommandoer

Ved hjælp af separate kommandoer er det muligt at opsætte filament- og rulleegenskaberne baseret på den mest almindelige vægt og størrelse, der i dag er tilgængelig på markedet

Enheder kommandoer

Disse er et par kommandoer til at indstille visualisering af måleenhederne i gram eller centimeter. Faktisk er det muligt at fjerne disse kommandoer og altid repræsentere data i begge enheder.

Informationskommandoer

Vis grupper af oplysninger afhængigt af systemstatus

Motoriske kommandoer

Styr motoren for filamentfremføring eller træk.

Alle motorkommandoer følger en accelerations-/decelerationssti. De to kommandoer feed og pull udfører en kort sekvens som defineret i motor. H ved konstant FEED_EXTRUDER_DELAY, mens feedc og pullc kommandoer kører på ubestemt tid, indtil en stopkommando ikke modtages.

Løbstilstandskommandoer

Løbestatus accepterer to tilstande; mode man læste lige periodisk vægten og motoren bevæger sig, indtil en motorstyringskommando ikke sendes. Mode auto udfører i stedet to feedkommandoer, når ekstruderen har brug for mere filament.

Princippet er baseret på vægtaflæsningerne, kontekstualiseret til dette særlige miljø. Vi forventer, at filamentforbruget er relativt langsomt, 3D -printere er næsten langsomme, og svingningerne i normalvægten afhænger af vibrationer i miljøet (bedre hvis du ikke lægger det hele på 3D -printeren)

Når ekstruderen trækker filamentet i stedet, stiger vægtforskellen dramatisk (50 g eller mere) på meget få tid, typisk mellem to eller tre aflæsninger. Disse oplysninger filtreres af softwaren, der "fratrækker", at der er brug for nyt filament. For at undgå forkerte aflæsninger ignoreres overhovedet vægtvariationer, mens motoren kører.

Applikationslogik

Applikationslogikken er distribueret i.ino main (Arduino -skitsen) langs tre funktioner: setup (), loop () og parseCommand (commandString)

Skitsen bruger to separate klasser: FilamentWeight -klasse til at styre alle filamentberegninger og sensoraflæsning via HX711 IC- og MotorControl -klassen, der grænseflader de lave niveaumetoder i TLE94112LE Arduino -skjoldet.

Opsætning()

Lanceret en gang ved opstart eller efter en hardware-nulstilling initialiserer forekomster af klasserne, opsæt hardware og terminalkommunikation.

loop ()

Hovedsløjfe -funktionen styrer tre forskellige forhold.

Selvom der er to klasser for vægtfølere og motorer relativt komplekse, er der fordelen ved, at den resulterende skitse virkelig er let at forstå og administrere.

  1. Kontroller (i tilstand automatisk), om ekstruderen har brug for mere filament
  2. Hvis motoren kører, skal du kontrollere, om der er hardwarefejl (returneret af TLE94112LE)
  3. Hvis der er serielle data tilgængelige, analyseres kommandoen

parseCommand (commandString)

Parsingsfunktionen kontrollerer strengene fra serien og når en kommando genkendes, behandles den straks.

Hver kommando fungerer som en statsmaskine, der påvirker en eller flere parametre i systemet; efter denne logik reduceres alle kommandoer til tre sekventielle handlinger:

  1. Send en kommando til FilamentWeight -klassen (vægtkommandoer) eller til MotorControl -klassen (motorkommandoer)
  2. Udfører en beregning for at opdatere vægtværdier eller opdatere en af de interne parametre
  3. Vis på terminalen og informationsoutput, når udførelsen er fuldført

Installer HX711 Arduino -biblioteket, download softwaren fra GitHub, og upload den til dit Arduino -bord, og nyd det!

Anbefalede: