Innehållsförteckning:

Robotfilamentdispensern för Arduino: 8 steg (med bilder)
Robotfilamentdispensern för Arduino: 8 steg (med bilder)

Video: Robotfilamentdispensern för Arduino: 8 steg (med bilder)

Video: Robotfilamentdispensern för Arduino: 8 steg (med bilder)
Video: Drawing Robot. Робот - Художник на 3D принтере 2024, Juli
Anonim
Image
Image

Varför ett motoriserat verktyg

3D -skrivares filament - vanligtvis nästan robust - dras av extrudern medan rullen placeras i närheten av skrivaren, fri att rotera. Jag har observerat betydande skillnader i materialbeteendet beroende på användningsnivå, hänvisat till 1 kg filamentrullar. En ny (full) filamentrulle flödar nästan bra men kraften som extrudern applicerar bör vara relativt relevant: vikten är minst 1,5 kg.

Extrudermotorn (de flesta fall en Nema17-steg) har tillräcklig kraft för att klara jobbet, men extruderns två kugghjul som skjuter glödtråden till hot-end-sidan under arbetet samlar partiklar av filamentet på grund av de applicerade krafterna; detta kräver frekvent extruderunderhåll för att undvika att munstycket täpps igen. Dessa partiklar tenderar att lossna och blandas med det rena filamentet medan det matas, vilket ökar munstycksproblemen och en vanligare munstycksslitage; detta sker oftare med munstycken med 0,3 mm diameter.

När filamentrullen är halvt använd eller mer blir dess spiraler mindre och under vissa miljöförhållanden tenderar glödtråden att gå sönder för ofta. Långa utskriftsjobb blir mindre pålitliga och påfrestande; Jag kan inte låta skrivaren jobba ensam en hel natt utan att kontrollera den. Således styr filamentmatningen genom att motorfigurer löser en rad problem.

Satsen finns på Tindie.com

Steg 1: Kit -innehållet

Satsens innehåll
Satsens innehåll
Satsens innehåll
Satsens innehåll

Satsen innehåller alla 3D -tryckta delar och mekanik för att montera den motoriserade filamentdispensern. Det finns istället två valfria delar: motorn och motorstyrkortet.

I min installation har jag använt en 12 V McLennan -borstad motor, men alla motorer med 37 mm diameter kan passa ordentligt inuti motorstödet.

De bästa prestationerna uppnås med ett TLE94112LE Arduino -sköld av Infineon (fullständig recension här); detta DC -motorstyrkort kan stödja upp till 6 olika robotdispensersatser samtidigt.

Jag har testat hela systemet på både en Arduino UNO R3 och det Arduino -kompatibla kortet XMC1100 Boot kit från Infineon och systemet reagerade mycket bra på båda mikrokontrollkorten.

Användningen av TLE94112LE -skölden föreslås men är inte nödvändig. Vilken likströmsmotor som helst för Arduino - inklusive ditt eget projekt! - kan fungera bra med det här verktyget

Satsen är uppdelad i två uppsättningar komponenter eftersom två delar är byggda för att fungera tillsammans. Basplattformen stöder glödtråden som roterar på de fyra fria hjullagren. Basen är fäst vid viktgivaren för att styra den roterande mekanismen som aktiverar den samt övervaka glödtrådsförhållandena: vikt, meter och procent. Mycket information samt en komplett kommandoset är tillgänglig från Arduino via en seriell terminal.

Verktyg du behöver

För att slutföra monteringen behöver du ett robust plastlim för vissa delar, en skruvmejsel och en uppsättning insexskruvar.

Steg 2: Projekt och design

Projektet och designen
Projektet och designen
Projektet och designen
Projektet och designen
Projektet och designen
Projektet och designen

Detta projekt är den tredje utvecklingen av 3D -skrivarens filamentdispenser -serie För några gånger sedan skapade jag den roterande basen för att optimera filamentets flöde när den drogs av 3D -skrivarens extruder.

Den andra modellen inkluderade en viktgivare för realtidsövervakning av filamentanvändningen med ett Arduino -kort. Detta sista projekt inkluderar automatiskt frigörande av glödtråden beroende på behoven i 3D -skrivarjobbet. Den är baserad på den virtuella viktvariationen när extrudern börjar dra i glödtråden. Denna händelse utlöser mikrokontrollen genom viktgivaren och den motoriserade filamentrullen börjar släppa några centimeter material och sedan bromsa och stanna.

Komponenterna har exporterats i STL -format och 3D -tryckt, sedan förfinats och monterats ihop. Jag har skapat ett anpassat stöd för att anpassa rörelsesdelen till basen. Den längre aluminiumskenan användes också för att stödja Arduino och motorskyddet för att göra hela verktyget kompakt och lätt att flytta.

När jag skapade designen följde jag en rad antaganden:

  • Gör den automatiserade motorn nästan enkel och lätt att reproducera
  • Minska så mycket som möjligt antalet icke-3D-skrivbara komponenter för att göra det
  • Minska så mycket som möjligt påfrestningen på extrudern under utskrift
  • Använd en låg kostnad och lätt att programmera mikrostyrkort
  • Använd viktbelastningssensorn för att hålla kontroll över glödtrådsförbrukningen och filamentmatningen Hantera miljöbuller som stör filamentets viktmått

Detta är resultatet jag nådde.

Steg 3: Montera basen

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

Det första steget är att montera basen med viktsensorn.

  1. För in det lilla lageraxelröret i lagerhålet
  2. Sätt de två separatorskivorna på lagrets sidor
  3. Presentera komponenterna inuti lagerstödet "U" i linje med hålen
  4. sätt in insexskruven på ena sidan och brickan och muttern till den andra sidan stäng muttern utan alltför stora ansträngningar

Du bör upprepa operationen på alla fyra lagerstöd. Testa sedan enheten: lagren ska rotera fritt.

Fixera nu med insexskruvarna de fyra lagerstöden på den övre basen med de fyra regleringshålen. Rikta in lagerhållarna så att de är parallella. Reglera avståndet beroende på bredden på dina filamentrullar.

Nästa steg är att montera viktsensorstången som håller botten och den övre basen ihop. Viktgivaren har två olika insexskruvar på båda sidor och du bör rikta den så att maxviktsetiketten är läsbar när basen är korrekt placerad. Den nedre basen har två extra sidohål för att fixera viktgivarens A/D -förstärkare. Förstärkaren baserad på HX711 IC kommer att drivas och anslutas till Arduino -kortet genom de fyra ledningarna som visas i det bifogade sensordatabladet.

Det sista steget är att montera hela den övre basen över viktsensorn som redan är fixerad på den nedre delen.

Den första komponenten har installerats!

Steg 4: Montering av spolmotordelarna

Montering av Spool Motion Motordelar
Montering av Spool Motion Motordelar
Montering av Spool Motion Motordelar
Montering av Spool Motion Motordelar
Montering av Spool Motion Motordelar
Montering av Spool Motion Motordelar

Det enklare förfarandet för att montera spolmotorn är att montera separat de fyra viktigaste komponenterna och slutför sedan den slutliga byggnaden:

Den växlade likströmsmotorn i motoröverföringslådan

Likströmsmotorn bör monteras i den centrala delen av konstruktionsstödet; Innan du skruvar på motorn bör du bestämma vilken sida som är din föredragna sida där du vill placera växelsidan för att rätt justera de två armarna som håller motorn och det drivna stora växeln.

Den drivna stora växeln

Det stora kugghjulet ska skruvas med det stympade koniska blocket med de fyra insexskruvarna. Denna växel blockeras på den roterande axeln av muttrar; den koniska delen kommer att hålla glödtråden som är låst till andra sidan av en liknande låsmuttrar inuti ett annat stympat koniskt block. Denna lösning håller inte bara den rörliga mekanismen på plats utan riktar hela vikten mot basen och det är systemets egenvikt.

Spollåshållaren

Detta är det stympade koniska blocket som tillsammans med det drivna kugghjulet liknande låssida kommer att hålla rörelsemekanismen mot glödtråden. Som en fråga om takt är det glödtråden som kompletterar byggnaden medan rörelsen med två armar är fri att röra sig på andra sidan.

Som det visas på bilderna är spollåshållaren byggd i två delar. För först in M4 -muttern i den större delen av blocket, lim sedan den andra delen (locket) och håll kvar blocken. Muttern förblir fängslad inuti låshållaren som kommer att skruvas fast på den gängade drivaxeln.

Lagerboxen

Lagerboxen har två funktioner: ge ett bra stöd åt växellådorna och en mjuk och tyst rörelse. Följ dessa enkla steg för att montera lagerlådan:

  1. Skruva fast den första M4 -muttern på en av de två ändarna av den gängade trådrullehållarens drivaxel
  2. Sätt i det första lagret
  3. Sätt i avskiljaren
  4. Sätt i det andra lagret
  5. Skruva fast den andra muttern och lås den måttligt. Den inre plastavskiljaren motsätter sig tillräcklig kraft för att hålla sakerna på plats även för lång tids användning.
  6. För in de monterade lagren i lagerboxen. Det bör göras tvingat för att ge bättre resultat, så inte expandera för mycket insidan av lådan när du förädlar plastdelarna.

Vi är redo för den sista komponentmonteringen!

Steg 5: Slutföra monteringen av motionsmotorn

Slutför montering av Motion Engine
Slutför montering av Motion Engine
Slutför montering av Motion Engine
Slutför montering av Motion Engine
Slutför montering av Motion Engine
Slutför montering av Motion Engine

Vi är på väg att avsluta konstruktionen så kan vi gå till teströrelse. Nu behöver du igen några lim. Lagerlådan - monterad i föregående steg - bör sättas in i lådhållarhålet på de två armarna motorstöd och eventuellt limmas innan för att skruva lådkåpan.

Varning: lim inte lådan, bara skruva fast den. Skyddet är viktigt för dammskydd och bör vara avtagbart för framtida underhåll.

När denna inställning är klar innan du lägger till den drivna växeln (den större) lägger du till den lilla separatorringen: den håller den stora växeln i linje med motorväxeln som fungerar som en bricka för att fixa den drivna rörliga enheten.

För sedan in drivhjulet (det lilla) i motoraxeln. Observera att det finns en platt sida i motorn samt i växelns centrala hål för att hålla växeln roterande driven av likströmsmotorn.

Sista steget, sätt in den stora drivna växeln som visas på bilderna och lås den till den gängade axeln med två M4 -muttrar.

Mekanikbyggnaden är klar!

Steg 6: Bonus: Hur jag anpassade supporten för att hantera satsen

Bonus: Hur jag anpassade supporten för att hantera satsen
Bonus: Hur jag anpassade supporten för att hantera satsen
Bonus: Hur jag anpassade supporten för att hantera satsen
Bonus: Hur jag anpassade supporten för att hantera satsen
Bonus: Hur jag anpassade supporten för att hantera satsen
Bonus: Hur jag anpassade supporten för att hantera satsen

För att hålla kitet på plats gjorde jag en mycket enkel struktur baserad på två fyrkantiga aluminiumrör för att stödja både basen och rörelsestrukturen. Basen har fixerats med fyra skruvar på de två skenorna (ca 25 cm längd) och med ett par små 3D -tryckta stöd har jag fixat rörelsemotorn som är fri att flytta för att enkelt sätta in och ta bort filamentrullen.

Vem som helst kan välja sin egen lösning beroende på hur hans arbetsbänk är organiserad.

Steg 7: Kabeldragning och anslutning till Arduino

Image
Image
Kabeldragning och anslutning till Arduino
Kabeldragning och anslutning till Arduino

Som förklaras i Kit -innehållssteget har jag använt en Infineon TLE94112LE DC -motorsköld för Arduino och testat motorn på både Arduino UNO R3 och Infineon XMC110 Boot Kit.

Om du kommer att styra motorn (behöver PWM -funktioner) med ett valfritt DC -styrkort, anpassa bara instruktionerna till de tekniska specifikationerna för din skärm.

En anteckning om TLE04112LE Arduino Shield

En av de gränser jag har upplevt med andra motorstyrsköldar för Arduino är att de använder funktionerna hos samma mikrokontroller (dvs PWM- och GPIO -stift); detta innebär att din styrelse blir dedikerad till dessa uppgifter medan endast få andra resurser (MPU och GPIO) är tillgängliga för annan användning.

Med möjligheten att lägga händerna på TLE94122LE Arduino -skölden för vägtester, är den mest uppenbara fördelen med IC: n som styrelsen bygger på bara dess fullständighet. Arduino -kortet kommunicerar till skölden via SPI -protokollet med endast två stift. Varje kommando du skickar till skölden bearbetas autonomt av TLE94112LE IC utan att använda MPU -resurser. En annan anmärkningsvärd egenskap hos Infineon -kortet är möjligheten att styra upp till sex borstade motorer med tre programmerbara PWM -kanaler. Detta innebär att Arduino kan ställa in en eller flera motorer, starta dem och fortsätta arbeta med andra uppgifter. Denna skärm avslöjade perfekt för att stödja upp till sex olika filamentrullar samtidigt. S rörelse är bara en av uppgifterna som ansvarar för MPU. Med tanke på möjligheten att hantera sex olika filamentrullar med en enda Arduino + -skärm påverkar mikrostyrenhetens kostnadseffekter på varje filamentkontrollant för mindre än 5 Euro.

Viktgivaren

Efter att ha gjort några experiment såg jag att det var möjligt att styra hela systemet - övervakning och automatisk matning - med en enda sensor; en lastcell (viktgivare) kan dynamiskt mäta glödtrådens viktvariationer med all information vi behöver.

Jag använde en billig lastcell i intervallet 0-5 Kg tillsammans med ett litet kort baserat på HX711 AD-förstärkaren, en IC som är specifik för att hantera lastcellsensorerna. Det fanns inga gränssnittsproblem eftersom det finns ett väl fungerande Arduino -bibliotek.

Tre steg för att ställa in hårdvaran

  1. Sätt in skyddet ovanpå Arduino -kortet eller Infineon XMC110 Boot Kit
  2. Anslut motorkablarna till Out1 och Out2 skruvade kontakter på skärmen
  3. Anslut ström och signaler från HX711 AD viktgivare förstärkare till Arduino -stiften. I det här fallet har jag använt stift 2 och 3 men alla fria stift är bra.

Varning: sidorna 8 och 10 är reserverade av TLE94113LE -skölden för SPI -anslutningen

Det är allt! Klar att installera programvaran? Varsågod.

Steg 8: Program- och kontrollkommandon

Program- och kontrollkommandon
Program- och kontrollkommandon
Program- och kontrollkommandon
Program- och kontrollkommandon
Program- och kontrollkommandon
Program- och kontrollkommandon
Program- och kontrollkommandosatsen
Program- och kontrollkommandosatsen

Den fullständiga dokumenterade programvaran kan laddas ner från GitHub -förvaret 3DPrinterFilamentDispenserAndMonitor

här betraktar vi bara de mest meningsfulla delarna och kontrollkommandona.

Det finns en anledning till följd av antalet tillgängliga stift på Arduino UNO Jag bestämde mig för att styra systemet via USB -seriell terminal; Eftersom varje motoriserad enhet är baserad på en viktgivare, krävs det att man läser data från sex viktgivare för att styra sex olika filamentdispensrar. Varje lastcell "förbrukar" två stift, stift 0 och 1 är reserverade (Tx/Rx) för serien och stift 8 och 10 är reserverade för SPI -kanalen som ansluter TLE94112LE -skärmen.

System status

Kontrollprogramvaran fungerar genom fyra olika tillstånd, definierade i filament.h:

#define SYS_READY "Ready" // System redo

#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: Startade

Denna status inträffar efter en hårdvaruåterställning eller när systemet slås på. Starten (och setup () -anropet när skissen startar) initierar de interna standardvärdena och bör startas utan extra vikt på plattformen som en del av initialiseringssekvensen är förvärvet av den absoluta taran för att nå den fysiska nollvikten.

Status: Klar

Klarläget inträffar efter en mjuk återställning (skickas från seriell terminal). Det liknar den fysiska resekten men ingen tarra beräknas; Återställningskommandot kan startas även när systemet körs.

Status: Ladda

Laststatus inträffar när lastkommandot skickas av terminalen. Detta innebär att glödtråden har laddats och den dynamiska taran har beräknats. Den exakta filamentvikten erhålls genom den typ av rulluppsättning som subtraherar vikten på motorenheten och den tomma rullen.

Status: Kör

Denna status möjliggör automatisk viktberäkning och automatisk filamentdispenser.

Terminalmeddelanden

Den aktuella versionen av programvaran returnerar mänskliga läsbara meddelanden till terminalen beroende på kommandon. Strängmeddelandena definieras i två huvudfiler: command.h (kommandorelaterade meddelanden och svar) och filament.h (strängar som används av parsern för att skapa sammansatta meddelanden).

Kommandon

Två olika filer är inblandade i kommandohanteringen: commands.h inklusive alla kommandon och relaterade parametrar och filament.h inklusive alla konstanter och definitioner som används av viktningssystemet och av parsern.

Medan de interna beräkningarna görs automatiskt med programvara har jag implementerat en serie kommandon för att ställa in systemets beteende och manuellt styra några parametrar.

Kommandosökord är skiftlägeskänsliga och ska bara skickas från terminalen. Om ett kommando inte är lämpligt för den aktuella statusen för det inte känns igen returneras ett felaktigt kommandomeddelande annars utförs kommandot.

Statuskommandon

Ändra systemets nuvarande status och beteendet anpassas också

Glödtrådskommandon

Med hjälp av separata kommandon är det möjligt att ställa in glödtråden och rullningsegenskaperna baserat på den vanligaste vikten och storlekarna som idag finns på marknaden

Enhetskommandon

Det här är ett par kommandon för att ställa in visualiseringen av måttenheterna i gram eller centimeter. I själva verket är det möjligt att eliminera dessa kommandon och alltid representera data i båda enheterna.

Informationskommandon

Visa informationsgrupper beroende på systemstatus

Motorkommandon

Styr motorn för filamentmatning eller drag.

Alla motorkommandon följer en accelerations-/retardationsväg. De två kommandona matar och drar en kort sekvens som definieras i motor. H med konstant FEED_EXTRUDER_DELAY medan feedc och pullc kommandon körs på obestämd tid tills ett stoppkommando inte tas emot.

Kommandon i körläge

Löpningsstatus accepterar två lägen; mode man läste bara regelbundet vikten och motorn rör sig tills ett motorstyrkommando inte skickas. Läge auto kör istället två matarkommandon när extrudern behöver mer glödtråd.

Principen bygger på viktavläsningarna, kontextualiserade till just denna miljö. Vi förväntar oss att filamentförbrukningen är relativt långsam, 3D -skrivare är nästan långsamma och svängningarna i normalvikt beror på miljövibrationerna (bättre om du inte lägger hela grejerna på 3D -skrivaren)

När extrudern drar i glödtråden istället ökar viktskillnaden dramatiskt (50 g eller mer) på mycket få tid, vanligtvis mellan två eller tre avläsningar. Denna information filtreras av programvaran som "drar av" att nytt glödtråd behövs. För att undvika felavläsningar ignoreras viktvariationer medan motorn är igång alls.

Applikationslogik

Applikationslogiken distribueras i.ino main (Arduino -skissen) längs tre funktioner: setup (), loop () och parseCommand (commandString)

Skissen använder två separata klasser: FilamentWeight -klass för att hantera alla filamentberäkningar och sensoravläsning via HX711 IC- och MotorControl -klassen som gränsar mellan lågnivåmetoderna för TLE94112LE Arduino -skärmen.

uppstart()

Lanserades en gång vid påslagning eller efter en hårdvaruåterställning initialiserar instanser av klasserna, konfigurerar hårdvaran och terminalkommunikationen.

slinga()

Huvudslingfunktionen hanterar tre olika förhållanden.

Även om det finns två klasser för viktgivare och motorer relativt komplexa, finns det fördelen att den resulterande skissen är väldigt lätt att förstå och hantera.

  1. Kontrollera (i läget auto) om extrudern behöver mer glödtråd
  2. Om motorn går, kontrollera om det finns maskinvarufel (returneras av TLE94112LE)
  3. Om det finns seriell data tillgänglig analysera kommandot

parseCommand (commandString)

Analysfunktionen kontrollerar om strängarna kommer från serien och när ett kommando känns igen behandlas det omedelbart.

Varje kommando fungerar som en tillståndsmaskin som påverkar någon parameter i systemet; efter denna logik reduceras alla kommandon till tre sekventiella åtgärder:

  1. Skicka ett kommando till FilamentWeight -klassen (viktkommandon) eller till MotorControl -klassen (motorkommandon)
  2. Utför en beräkning för att uppdatera viktvärden eller uppdatera en av de interna parametrarna
  3. Visa på terminalen och informationsutmatning när körningen är klar

Installera HX711 Arduino -biblioteket, ladda ner programvaran från GitHub och ladda upp den till ditt Arduino -kort och njut sedan!

Rekommenderad: