INHOUDSOPGAWE:

Die robotgloeidispenser vir Arduino: 8 stappe (met foto's)
Die robotgloeidispenser vir Arduino: 8 stappe (met foto's)

Video: Die robotgloeidispenser vir Arduino: 8 stappe (met foto's)

Video: Die robotgloeidispenser vir Arduino: 8 stappe (met foto's)
Video: Lesson 10: Conditional Statement in Arduino and Using Array | SunFounder Robojax 2024, Julie
Anonim
Image
Image

Waarom 'n gemotoriseerde werktuig

3D -drukkers filament - gewoonlik byna robuust - word deur die ekstruder getrek terwyl die rol naby die drukker geplaas word, sodat dit kan draai. Ek het betekenisvolle verskille in die materiaalgedrag waargeneem, afhangende van die gebruiksvlak, verwys na 1 kg filamentrolletjies. 'N Nuwe (vol) filamentdraad vloei amper goed, maar die krag wat deur die ekstruder uitgeoefen word, behoort relatief relevant te wees: die gewig is minstens 1,5 kg.

Die ekstruderingsmotor (in die meeste gevalle 'n Nema17-stepper) beskik oor voldoende krag om die werk te verrig, maar die twee ratte van die ekstruder druk die filament na die warmkant terwyl dit werk, versamel deeltjies van die filament as gevolg van die toegepaste kragte; Dit vereis gereelde onderhoud van die ekstruder om te voorkom dat die spuitstuk verstop word. Hierdie deeltjies is geneig om los te maak en te meng met die skoon filament terwyl dit gevoer word, wat die spuitstukprobleme verhoog en die spuitpunte meer gereeld voorkom; dit kom meer gereeld voor met spuitpunte van 0,3 mm in deursnee.

As die filamentrol half of meer gebruik word, word die spirale kleiner en in sommige omgewingstoestande is die filament geneig om te gereeld te breek. Langdrukwerk word minder betroubaar en stresvol; Ek kan nie die drukker 'n hele nag alleen laat werk sonder om dit te beheer nie. Sodoende beheer die filamentvoer deur motorfigure wat 'n reeks probleme oplos.

Die kit is beskikbaar op Tindie.com

Stap 1: Die kitinhoud

Die kitinhoud
Die kitinhoud
Die kitinhoud
Die kitinhoud

Die kit bevat al die 3D -gedrukte onderdele en meganika om die gemotoriseerde filamentdispenser te monteer. Daar is in plaas daarvan twee opsionele dele: die motor en die motorbeheerbord.

In my opstelling het ek 'n 12 V -motor met McLennan -tandwiel gebruik, maar enige motor met 'n deursnee van 37 mm kan behoorlik in die motorsteun pas.

Die beste prestasies word bereik met 'n TLE94112LE Arduino -skild deur Infineon (volledige resensie hier); hierdie DC -motorbeheerbord kan tot 6 verskillende robotiese dispenser -kits gelyktydig ondersteun.

Ek het die hele stelsel op beide 'n Arduino UNO R3 en die Arduino -versoenbare kaart XMC1100 Boot kit deur Infineon getoets, en die stelsel reageer baie goed met beide die mikrobeheerborde.

Die gebruik van die TLE94112LE -skild word voorgestel, maar nie noodsaaklik nie. Enige DC -motorbeheerder vir Arduino - insluitend u eie projek! - kan goed werk met hierdie instrument

Die kit is verdeel in twee stelle komponente, aangesien twee dele gebou is om saam te werk. Die basisplatform ondersteun die filamentrol wat op die vier wiele laers draai. Die basis is vasgemaak aan die gewigsensor om die roterende meganisme te beheer wat die aktivering veroorsaak, asook om die toestande van die filament te monitor: gewig, meter en persentasie. Baie inligting sowel as 'n volledige opdragstel is toeganklik vanaf die Arduino via 'n seriële terminaal.

Gereedskap wat u benodig

Om die samestelling te voltooi, benodig u 'n robuuste plastiekgom vir 'n paar dele, 'n skroewedraaier en 'n stel inboutskroewe.

Stap 2: Die projek en ontwerp

Die projek en ontwerp
Die projek en ontwerp
Die projek en ontwerp
Die projek en ontwerp
Die projek en ontwerp
Die projek en ontwerp

Hierdie projek is die derde evolusie van die 3D -printer filament dispenser reeks 'n Paar keer gelede het ek die roterende basis geskep om die vloei van die filament te optimaliseer as dit deur die 3D -drukker -ekstruder getrek word.

Die tweede model bevat 'n gewigsensor vir intydse monitering van die filamentgebruik met 'n Arduino -bord. Hierdie laaste projek bevat die outomatiese vrystelling van die filament, afhangende van die behoeftes van die 3D -drukkerwerk. Dit is gebaseer op die virtuele gewigsvariasie wanneer die ekstruder die filament begin trek. Hierdie gebeurtenis veroorsaak dat die mikrobeheerder deur die gewigsensor begin, en die gemotoriseerde filamentrol begin 'n paar sentimeter materiaal vrystel, dan vertraag en stop.

Die komponente is uitgevoer in STL -formaat en 3D -gedruk, daarna verfyn en saamgestel. Ek het 'n pasgemaakte ondersteuning geskep om die bewegingsgedeelte aan die basis te pas. Die langer aluminiumrail is ook gebruik om die Arduino en die motorskerm te ondersteun om die hele gereedskap kompak en beweegbaar te maak.

By die ontwerp van die ontwerp het ek 'n reeks aannames gevolg:

  • Dit maak die outomatiese enjin amper eenvoudig en maklik om weer te gee
  • Verminder die aantal nie-3D-drukbare komponente soveel as moontlik om dit te maak
  • Verminder die spanning wat tydens die druk op die ekstruder toegepas word, soveel as moontlik
  • Gebruik 'n goedkoop en maklike programmeerbare mikrobeheerbord
  • Gebruik die gewigslagsensor om die filamentverbruik en die voer van die filament onder beheer te hou.

Dit is die resultaat wat ek bereik het.

Stap 3: Monteer die basis

Die samestelling van die basis
Die samestelling van die basis
Die samestelling van die basis
Die samestelling van die basis
Die samestelling van die basis
Die samestelling van die basis

Die eerste stap is om die basis met die gewigsensor saam te stel.

  1. Plaas die buis met die klein asas in die laergat
  2. Sit die twee skeiderskyfies aan die kante van die laer
  3. Stel die komponente binne -in die "U" -grootte laersteun in lyn met die gate
  4. steek die inbusschroef aan die een kant en die wasser en die moer aan die ander kant en maak die moer toe sonder om te veel moeite te doen

U moet die operasie herhaal op al die vier laerstutte. Toets dan die samestelling: die laers moet vrylik kan draai.

Maak nou die vier laerstutte op die boonste voet met die vier skroefgate vas met die inboutskroewe. Rig die laerstutte in lyn om dit ewewydig te hou. Reguleer die afstand, afhangende van die breedte van u filamentrolletjies.

Die volgende stap is die samestelling van die gewigsensorstaaf wat die onder- en boonste basis bymekaar hou. Die gewigsensor het twee verskillende inbusskroewe aan albei kante, en u moet dit oriënteer sodat die maksimum gewigsetiket leesbaar is as die basis korrek geplaas is. Die onderste voet het twee ekstra sygate om die gewigsensor A/D -versterker vas te maak. Die versterker wat op die HX711 IC gebaseer is, sal deur die vier drade aangedryf word en aan die Arduino -bord gekoppel word, soos aangedui in die aangehegte sensorblad.

Die laaste stap is die samestelling van die volledige boonste basis oor die gewigsensor wat reeds aan die onderkant vasgemaak is.

Die eerste komponent is opgestel!

Stap 4: Montering van die Spool Motion Engine Parts

Montering van die Spool Motion Engine Parts
Montering van die Spool Motion Engine Parts
Montering van die Spool Motion Engine Parts
Montering van die Spool Motion Engine Parts
Montering van die Spool Motion Engine Parts
Montering van die Spool Motion Engine Parts

Die makliker proses om die spoel -enjin te monteer, is om die vier belangrikste komponente afsonderlik te monteer en dan die finale gebou te voltooi:

Die gemotoriseerde GS -motor in die motor -transmissiekas

Die GS -motor moet in die sentrale deel van die struktuursteun gemonteer word; Voordat u die motor vasskroef, moet u besluit watter kant u verkies, waar u die ratte se kant moet plaas om die twee arms wat die motor en die aangedrewe groot rat bevat, korrek in lyn te bring.

Die aangedrewe groot rat

Die groot rat moet met die afgekapte keëlblok met die vier inbusschroewe vasgeskroef word. Hierdie rat word deur die moere op die roterende as geblokkeer; die koniese deel hou die filamentolspoel vas wat aan die ander kant deur 'n soortgelyke slotmoere in 'n ander afgeknotte keëlblok vasgesluit is. Hierdie oplossing hou nie net die bewegende meganisme in plek nie, maar rig ook al die gewig na die basis, en dit is die massa van die stelsel.

Die kloshouer

Dit is die afgeknotte kegelblok wat saam met die aangedrewe rat die soortgelyke sykant die bewegingsmeganisme teen die filamentdraad hou. As 'n kwessie van takt is dit die filamentrol wat die gebou voltooi, terwyl die beweging van twee arms vrylik aan die ander kant kan beweeg.

Soos in die afbeeldings getoon word, is die houer van die spoelslot in twee dele opgebou. Steek eers die M4 -moer in die groter deel van die blok, en plak dan die tweede deel (die omslag) en hou die blokke bymekaar. Die moer bly in die slothouer vasgeklem wat aan die skroefdraadas vasgeskroef sal word.

Die laers boks

Die laerbak het twee funksies: verleen goeie ondersteuning aan die ratkas en 'n gladde en stille beweging. Volg die maklike stappe om die laerbak te monteer:

  1. Skroef die eerste M4 -moer vas aan een van die twee ente van die as met die draaddraad
  2. Plaas die eerste laer
  3. Plaas die skeider
  4. Steek die tweede laer in
  5. Skroef die tweede moer vas en maak dit matig vas. Die interne plastiese skeier sal genoeg krag teenstaan om die goed op sy plek te hou vir langdurige gebruik.
  6. Plaas die gemonteerde laers in die laerkas. Dit moet gedwing word om beter resultate te gee, dus moenie die binnekant van die boks te veel uitbrei as u die plastiekonderdele verfyn nie.

Ons is gereed vir die montering van die laaste komponente!

Stap 5: Voltooi die montering van die bewegingsenjin

Voltooi die samestelling van die bewegingsenjin
Voltooi die samestelling van die bewegingsenjin
Die montering van die bewegingsenjin voltooi
Die montering van die bewegingsenjin voltooi
Die montering van die bewegingsenjin voltooi
Die montering van die bewegingsenjin voltooi

Ons is op die punt om die struktuur te voltooi, dan kan ons beweeg om die beweging te toets. Nou benodig u weer 'n paar gom. Die laerkas - wat in die vorige stap gemonteer is - moet in die houer van die houer van die twee -arm -enjinsteun geplaas word en moontlik vasgeplak word om die boksdeksel te skroef.

Waarskuwing: moenie die boks se deksel plak nie, maar skroef dit vas. Die omslag is belangrik vir stofbeskerming en moet verwyderbaar wees vir enige toekomstige instandhouding.

As hierdie opstelling voltooi is voordat die aangedrewe rat (die groter) bygevoeg word, voeg die klein skeidingsring by: dit hou die groot rat in lyn met die motorrat wat as 'n wasser dien om die aangedrewe bewegende eenheid vas te maak.

Steek dan die dryfrat (die klein) in die motoras. Let daarop dat daar 'n plat kant in die motor sowel as in die sentrale gat van die rat is om die rat te laat draai deur die GS -motor.

Plaas die laaste stap die groot aangedrewe rat soos op die foto's, en sluit dit met twee M4 -moere aan die skroefas.

Die meganika -gebou is voltooi!

Stap 6: Bonus: hoe ek die ondersteuning aangepas het om die kit te bestuur

Bonus: hoe ek die ondersteuning aangepas het om die kit te bestuur
Bonus: hoe ek die ondersteuning aangepas het om die kit te bestuur
Bonus: hoe ek die ondersteuning aangepas het om die kit te bestuur
Bonus: hoe ek die ondersteuning aangepas het om die kit te bestuur
Bonus: hoe ek die ondersteuning aangepas het om die kit te bestuur
Bonus: hoe ek die ondersteuning aangepas het om die kit te bestuur

Om die kit op sy plek te hou, het ek 'n baie eenvoudige struktuur gemaak op grond van twee vierkantige aluminiumbuise om die basis en die bewegingsstruktuur te ondersteun. Die voetstuk is met vier skroewe aan die twee relings (ongeveer 25 cm lank) vasgemaak, en met 'n paar klein 3D -gedrukte steunpunte het ek die bewegingsenjin reggestel om te beweeg sodat die filamentrol maklik ingevoeg en verwyder kan word.

Almal kan sy eie oplossing kies, afhangende van hoe sy werkbank georganiseer is.

Stap 7: Bedrading en verbinding met Arduino

Image
Image
Bedrading en aansluiting by Arduino
Bedrading en aansluiting by Arduino

Soos verduidelik in die Kit -inhoudstap, het ek 'n Infineon TLE94112LE DC -motorskerm vir Arduino gebruik en die enjin op beide Arduino UNO R3 en Infineon XMC110 Boot Kit getoets.

As u die motor (met PWM -funksies benodig) beheer met 'n DC -beheerbord van u keuse, pas die instruksies aan by die tegniese spesifikasies van u skild.

'N Nota oor die TLE04112LE Arduino Shield

Een van die beperkings wat ek met ander motorbeheerskerms vir Arduino ervaar het, is dat hulle die funksies van dieselfde mikrobeheerder gebruik (dws PWM- en GPIO -penne); dit beteken dat u raad toegewyd is aan hierdie take, terwyl slegs enkele ander hulpbronne (MPU en GPIO) vir ander gebruike beskikbaar is.

Met die moontlikheid om die TLE94122LE Arduino -skild in die hande te sit vir padtoetse, is die duidelikste voordeel van die IC waarop die bord gebaseer is, net die volledigheid daarvan. Die Arduino -bord kommunikeer met die SPI -protokol met die skild met slegs twee penne. Elke opdrag wat u na die skild stuur, word outonoom deur die TLE94112LE IC verwerk sonder om MPU -hulpbronne te gebruik. 'N Ander merkwaardige kenmerk van die Infineon -bord is die moontlikheid om tot ses geborstelde motors met drie programmeerbare PWM -kanale te bestuur. Dit beteken dat Arduino een of meer motors kan instel, kan begin en aan ander take kan werk. Hierdie skild is perfek geopenbaar om tot ses verskillende filamentrolletjies op dieselfde tyd te ondersteun, maar die beweging is slegs een van die take van die MPU. vir elke filamentkontroleerder vir minder as 5 euro.

Die gewigsensor

Na 'n paar eksperimente het ek gesien dat dit moontlik was om die hele stelsel - monitering en outomatiese voeding - met 'n enkele sensor te beheer; 'n laadsel (gewigsensor) kan die gewigvariasies van die filamentdraad dinamies meet, met al die inligting wat ons benodig.

Ek het 'n goedkoop laaisel in die reeks 0-5 Kg gebruik, tesame met 'n klein bordjie gebaseer op die HX711 AD-versterker, 'n IC wat spesifiek is vir die bestuur van die laagselle-sensors. Daar was geen koppelprobleme nie, aangesien dit beskikbaar is in 'n goed werkende Arduino -biblioteek.

Drie stappe om die hardeware in te stel

  1. Plaas die skild bo -op die Arduino -bord of die Infineon XMC110 Boot Kit
  2. Koppel die motordrade aan die Out1 en Out2 skroefverbindings van die skerm
  3. Koppel die krag en seine van die HX711 AD -gewigsensorversterker aan die Arduino -penne. In hierdie geval het ek penne 2 en 3 gebruik, maar al die gratis penne is goed.

Waarskuwing: bladsye 8 en 10 word deur die TLE94113LE -skild voorbehou vir die SPI -verbinding

Dit is al! Klaar om die sagteware op te stel? Gaan voort.

Stap 8: Die sagteware- en beheeropdragstel

Die sagteware- en beheeropdragstel
Die sagteware- en beheeropdragstel
Die sagteware- en beheeropdragstel
Die sagteware- en beheeropdragstel
Die sagteware- en beheeropdragstel
Die sagteware- en beheeropdragstel
Die sagteware- en beheeropdragstel
Die sagteware- en beheeropdragstel

Die volledige gedokumenteerde sagteware kan afgelaai word van die GitHub -bewaarplek 3DPrinterFilamentDispenserAndMonitor

hier beskou ons slegs die mees betekenisvolle dele en die beheeropdragte.

Daar is 'n rede vir die aantal beskikbare penne op die Arduino UNO I het besluit om die stelsel via die USB -seriële aansluiting te beheer; Aangesien elke gemotoriseerde eenheid op 'n gewigsensor gebaseer is, is die beheer van ses verskillende filamentdispensers nodig om data van ses gewigsensors te lees. Elke lassel "verbruik" twee penne, pen 0 en 1 is gereserveer (Tx/Rx) vir die reeks en penne 8 en 10 is gereserveer vir die SPI -kanaal wat die TLE94112LE -skild verbind.

Stelselstatus

Die beheersagteware werk deur vier verskillende toestande, gedefinieer in filament.h:

#define SYS_READY "Gereed" // Stelsel gereed

#define SYS_RUN "Running" // Filament in gebruik #define SYS_LOAD "Laai" // Roll gelaai #define SYS_STARTED "Begin" // Aansoek begin // Statuskodes #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Status: Begin

Hierdie status kom voor na 'n hardeware -herstel of as die stelsel aangeskakel is. Die aanskakel (en opstel () oproep wanneer die skets begin) initialiseer die interne standaardwaardes en moet sonder ekstra gewig op die platform begin word, as deel van die initialiseringsvolgorde, is die verkryging van die absolute tarra om die fisiese nulgewig te bereik.

Status: gereed

Die gereed -toestand vind plaas na 'n sagte herstel (gestuur vanaf die seriële terminale). Dit is soortgelyk aan die fisiese resek, maar geen tarra word bereken nie; die reset -opdrag kan ook begin word as die stelsel werk.

Status: Laai

Die laai -status vind plaas wanneer die lasopdrag deur die terminale gestuur word. Dit beteken dat die filamentrol gelaai is en die dinamiese tarra bereken is. Die presiese filamentgewig word verkry deur die soort rolopstelling wat die gewig van die motoreenheid en die leë rol aftrek.

Status: hardloop

Hierdie status maak die outomatiese gewigsberekening en die outomatiese filamentdispenser moontlik.

Terminale boodskappe

Die huidige weergawe van die sagteware gee menslike leesbare boodskappe terug na die terminale, afhangende van die opdragte. Die stringboodskappe word gedefinieer in twee koptekstlêers: command.h (opdragverwante boodskappe en antwoorde) en filament.h (stringe wat die ontleder gebruik om saamgestelde boodskappe te skep).

Opdragte

Twee verskillende lêers is betrokke by die opdragbestuur: commands.h insluitend al die opdragte en verwante parameters en filament.h insluitend al die konstantes en definisies wat deur die weegstelsel en deur die ontleder gebruik word.

Terwyl die interne berekeninge outomaties deur sagteware gedoen word, het ek 'n reeks opdragte geïmplementeer om die gedrag van die stelsel in te stel en 'n paar parameters met die hand te beheer.

Opdrag sleutelwoorde is hooflettergevoelig en moet net vanaf die terminale gestuur word. As 'n opdrag nie geskik is vir die huidige status nie, word 'n verkeerde opdragboodskap teruggestuur, anders word die opdrag uitgevoer.

Status opdragte

Verander die huidige status van die stelsel en die gedrag word ook aangepas

Filament opdragte

Met behulp van aparte opdragte is dit moontlik om die filament- en rolkenmerke op te stel op grond van die algemeenste gewig en groottes wat vandag op die mark beskikbaar is

Eenhede opdragte

Dit is 'n paar opdragte om die visualisering van die maateenhede in gram of sentimeter in te stel. In werklikheid is dit moontlik om hierdie opdragte uit te skakel en altyd data in beide eenhede voor te stel.

Inligting opdragte

Wys groepe inligting, afhangende van die stelselstatus

Motoriese opdragte

Beheer die motor vir filamentvoer of trek.

Alle motoropdragte volg 'n versnellings-/vertragingspad. Die twee opdragte voer en trek voer 'n kort reeks uit soos gedefinieer in motor.h deur die konstante FEED_EXTRUDER_DELAY terwyl feedc en pullc opdragte onbepaald loop totdat 'n stopopdrag nie ontvang word nie.

Hardloopmodus opdragte

Die lopende status aanvaar twee modusse; mode -man lees net gereeld die gewig en die motor beweeg totdat 'n motorbeheeropdrag nie gestuur word nie. Mode auto voer in plaas daarvan twee voeropdragte uit wanneer die ekstruder meer filament benodig.

Die beginsel is gebaseer op die gewiglesings wat in hierdie spesifieke omgewing gekontekstualiseer word. Ons verwag dat die filamentverbruik relatief stadig is, 3D -drukkers amper traag is en die normale gewigsswingings hang af van die vibrasie in die omgewing (beter as u nie die hele spul op die 3D -drukker plaas nie)

As die ekstruder die filament trek, neem die gewigsverskil dramaties toe (50 g of meer) in baie min tyd, gewoonlik tussen twee of drie metings. Hierdie inligting word gefiltreer deur die sagteware wat "aftrek" dat nuwe filament nodig is. Om verkeerde metings te vermy, word gewigsveranderings glad nie geïgnoreer nie.

Toepassingslogika

Die toepassingslogika word versprei in die.ino main (die Arduino -skets) oor drie funksies: setup (), loop () en parseCommand (commandString)

Die skets gebruik twee afsonderlike klasse: FilamentWeight -klas om al die filamentberekeninge en sensorlesing te bestuur via die HX711 IC- en MotorControl -klas wat die lae vlakmetodes van die TLE94112LE Arduino -skild koppel.

stel op()

Een keer van stapel gestuur tydens aanskakeling of nadat 'n hardeware herstel is, initialiseer die gevalle van die klasse, stel die hardeware en die terminale kommunikasie op.

lus ()

Die hooflusfunksie bestuur drie verskillende toestande.

Alhoewel daar twee klasse vir gewigsensors en motors relatief kompleks is, is daar die voordeel dat die gevolglike skets baie maklik is om te verstaan en te bestuur.

  1. Kontroleer (outomaties in die modus) of die ekstruder meer filament benodig
  2. As die motor loop, kyk na hardeware foute (teruggestuur deur die TLE94112LE)
  3. Ontleed die opdrag as daar seriële data beskikbaar is

parseCommand (commandString)

Die ontledingsfunksie kyk na die snare wat uit die reeks kom, en as 'n opdrag herken word, word dit onmiddellik verwerk.

Elke opdrag dien as 'n staatsmasjien wat 'n invloed het op 'n parameter van die stelsel; na aanleiding van hierdie logika word alle opdragte verminder tot drie opeenvolgende aksies:

  1. Stuur 'n opdrag na die FilamentWeight -klas (gewigskommando's) of na die MotorControl -klas (motoropdragte)
  2. Voer 'n berekening uit om gewigwaardes by te werk of om een van die interne parameters op te dateer
  3. Wys op die terminaal en inligtinguitset wanneer die uitvoering voltooi is

Installeer die HX711 Arduino -biblioteek, laai die sagteware van GitHub af en laai dit op u Arduino -bord, en geniet dit dan!

Aanbeveel: