Taula de continguts:

El dispensador de filaments robòtics per a Arduino: 8 passos (amb imatges)
El dispensador de filaments robòtics per a Arduino: 8 passos (amb imatges)

Vídeo: El dispensador de filaments robòtics per a Arduino: 8 passos (amb imatges)

Vídeo: El dispensador de filaments robòtics per a Arduino: 8 passos (amb imatges)
Vídeo: TSR2304 4-Axis Dispensing Robot Demonstration 2024, Juliol
Anonim
Image
Image

Per què una eina motoritzada?

El filament de les impressores 3D, generalment gairebé robust, és extret per l’extrusora mentre el rotlle es col·loca a prop de la impressora, perquè no giri. He observat diferències significatives en el comportament del material en funció del nivell d’ús, referit a rotllos de filament d’1 kg. Una nova bobina de filament (plena) flueix gairebé bé, però la força aplicada per l’extrusora hauria de ser relativament rellevant: el pes és d’almenys 1,5 kg.

El motor de l’extrusora (la majoria dels casos és un pas escalonat de Nema17) té una potència suficient per fer la feina, però els dos engranatges de l’extrusora que empenyen el filament cap a la part final mentre treballen recullen partícules del filament a causa de les forces aplicades; això requereix un manteniment freqüent de l’extrusora per evitar l’obstrucció dels broquets. Aquestes partícules tendeixen a separar-se i barrejar-se amb el filament net mentre s’alimenta, augmentant els problemes dels broquets i un desgast més freqüent dels broquets; això passa amb més freqüència amb broquets de 0,3 mm de diàmetre.

Quan el rotlle de filaments es fa servir per la meitat o més, les seves espirals es fan més petites i, en algunes condicions ambientals, el filament tendeix a trencar-se amb massa freqüència. Els treballs d’impressió llarga es tornen menys fiables i estressants; No puc deixar la impressora treballant sola tota una nit sense controlar-la. Controlant així l’alimentació de filaments mitjançant figures motores resolent una sèrie de problemes.

El kit està disponible a Tindie.com

Pas 1: el contingut del kit

El contingut del kit
El contingut del kit
El contingut del kit
El contingut del kit

El kit inclou totes les peces impreses en 3D i la mecànica per muntar el dispensador de filaments motoritzat. En canvi, hi ha dues parts opcionals: el motor i la placa del controlador del motor.

A la meva configuració he utilitzat un motor raspallat de 12 V McLennan, però qualsevol motor de 37 mm de diàmetre pot encaixar correctament dins del suport del motor.

Les millors actuacions s’assoleixen amb un escut Arduino TLE94112LE d’Infineon (ressenya completa aquí); aquesta placa de controlador de motor de corrent continu pot suportar fins a 6 kits de dispensadors de robòtics diferents alhora.

He provat tot el sistema tant en un Arduino UNO R3 com en el kit d’arrencada XMC1100 compatible amb la placa Arduino d’Infineon i el sistema ha estat molt sensible a les dues plaques de microcontroladors.

Es recomana l’ús de l’escut TLE94112LE però no és essencial. Qualsevol controlador de motor de corrent continu per a Arduino, inclòs el vostre propi projecte. - Pot funcionar bé amb aquesta eina

El kit es divideix en dos conjunts de components, ja que es construeixen dues parts per treballar junts. La plataforma base suportarà el rotlle de filament que gira sobre els quatre coixinets de rodes lliures. La base es fixa al sensor de pes per controlar el mecanisme giratori que provoca la seva activació, així com controlar les condicions del filament: pes, metres i percentatge. Des de l’Arduino es pot accedir a molta informació i a un conjunt d’ordres complet a través d’un terminal sèrie.

Eines que necessiteu

Per completar el muntatge, necessiteu una cola de plàstic robusta per a algunes peces, un tornavís i un joc de cargols Allen.

Pas 2: el projecte i el disseny

El Projecte i el Disseny
El Projecte i el Disseny
El Projecte i el Disseny
El Projecte i el Disseny
El Projecte i el Disseny
El Projecte i el Disseny

Aquest projecte és la tercera evolució de la sèrie de dispensadors de filaments de la impressora 3D Fa algunes vegades vaig crear la base giratòria per optimitzar el flux del filament quan l’extreia la impressora 3D.

El segon model incloïa un sensor de pes per controlar en temps real l’ús del filament amb una placa Arduino. Aquest darrer projecte inclou l’alliberament automàtic del filament en funció de les necessitats del treball de la impressora 3D. Es basa en la variació de pes virtual quan l’extrusora comença a estirar el filament. Aquest esdeveniment activa el microcontrolador a través del sensor de pes i el rotlle de filament motoritzat comença a alliberar algunes polzades de material i desaccelera i s’atura.

Els components s’han exportat en format STL i s’han imprès en 3D, després s’han refinat i muntat junts. He creat un suport personalitzat per alinear la part del moviment a la base. El rail d'alumini més llarg també es va utilitzar per suportar l'Arduino i el blindatge del motor per fer que tota l'eina fos compacta i fàcil de moure.

En crear el disseny vaig seguir una sèrie de suposicions:

  • Fent que el motor automatitzat sigui gairebé senzill i fàcil de reproduir
  • Reduïu al màxim el nombre de components que no es poden imprimir en 3D per crear-lo
  • Reduïu al màxim l’estrès aplicat a l’extrusora durant la impressió
  • Utilitzeu una placa de controlador de baix cost i fàcil de programar
  • Utilitzeu el sensor de càrrega de pes per mantenir controlat el consum de filaments i l’alimentació de filaments Gestioneu el soroll ambiental que interfereix amb les mesures de pes del filament

Aquest és el resultat que he assolit.

Pas 3: Muntatge de la base

Muntatge de la base
Muntatge de la base
Muntatge de la base
Muntatge de la base
Muntatge de la base
Muntatge de la base

El primer pas és muntar la base amb el sensor de pes.

  1. Introduïu el petit tub de l’eix del coixinet al forat del coixinet
  2. Col·loqueu els dos discs separadors als costats del rodament
  3. Introduïu els components dins del suport de coixinets de mida "U" alineant els forats
  4. introduïu el cargol Allen per un costat i la volandera i la femella a l’altre costat tancant la femella sense massa esforç

Heu de repetir l'operació en els quatre suports de coixinets. A continuació, proveu el conjunt: els coixinets haurien de girar lliurement.

Ara fixeu amb els cargols Allen els quatre suports de coixinets de la base superior amb els quatre forats de regulació. Alineeu els suports dels coixinets per mantenir-los paral·lels. Reguleu la distància en funció de l’amplada dels rotllos de filament.

El següent pas és muntar la barra del sensor de pes que manté juntes la base inferior i la superior. El sensor de pes té dos cargols Allen diferents a banda i banda i l’haureu d’orientar de manera que es pugui llegir l’etiqueta de pes màxim quan la base estigui col·locada correctament. La base inferior té dos forats laterals addicionals per fixar l'amplificador A / D del sensor de pes. L'amplificador basat en l'IC HX711 s'alimentarà i connectarà a la placa Arduino a través dels quatre cables, tal com es mostra a la fitxa de dades del sensor adjunta.

El darrer pas és muntar la base superior completa sobre el sensor de pes ja fixat a la part inferior.

El primer component s'ha configurat.

Pas 4: Muntatge de les peces del motor de carretó

Muntatge de les peces del motor Spool Motion
Muntatge de les peces del motor Spool Motion
Muntatge de les peces del motor Spool Motion
Muntatge de les peces del motor Spool Motion
Muntatge de les peces del motor Spool Motion
Muntatge de les peces del motor Spool Motion

El procediment més senzill per muntar el motor de moviment de bobina consisteix a muntar per separat els quatre components més importants i completar l’edifici final:

El motor de corrent continu engranat a la caixa de transmissió del motor

El motor de corrent continu s'ha de muntar a la part central del suport de l'estructura; Abans de cargolar el motor, heu de decidir quin serà el vostre costat preferit on posar els engranatges al costat per alinear correctament els dos braços que subjecten el motor i l'engranatge gran accionat.

L’engranatge gran conduït

L'engranatge gran s'ha de cargolar amb el bloc cònic truncat amb els quatre cargols Allen. Aquest engranatge estarà bloquejat a l'eix de rotació per femelles; la part cònica mantindrà el rodet de filament que està bloquejat a l'altre costat per unes femelles de bloqueig similars dins d'un altre bloc cònic truncat. Aquesta solució no només manté el mecanisme mòbil al seu lloc, sinó que dirigeix tot el pes cap a la base i és el pes tara del sistema.

El porta-pany del carret

Aquest és el bloc cònic truncat que, junt amb l’engranatge conduït, té un costat de bloqueig similar que mantindrà el mecanisme de moviment del carret del filament. Com a qüestió de tacte, és el rotllo de filament el que completa l’edifici mentre el moviment de suport de dos braços es pot moure per l’altre costat.

Tal com es mostra a les imatges, el suport del pany de rodet es divideix en dues parts. Primer introduïu la femella M4 a la part més gran del bloc i després enganxeu la segona part (la coberta) mantenint els blocs units. La femella queda empresonada dins del suport del pany que es cargolarà a l'eix roscat.

La caixa de rodaments

La caixa del coixinet té dues funcions: atorgar un bon suport als engranatges de transmissió i un moviment suau i silenciós. Seguiu aquests senzills passos per muntar la caixa del coixinet:

  1. Cargoleu la primera femella M4 a un dels dos extrems de l'eix conduït del suport de la bobina roscada
  2. Inseriu el primer coixinet
  3. Inseriu el separador
  4. Introduïu el segon coixinet
  5. Cargoleu la segona femella i bloquegeu-la moderadament. El separador intern de plàstic s'oposarà a la força suficient per mantenir les coses al seu lloc també durant un temps prolongat.
  6. Introduïu els coixinets muntats a la caixa de coixinets. S’ha de fer forçadament per obtenir els millors resultats, de manera que no amplieu massa l’interior de la caixa en refinar les peces de plàstic.

Estem preparats per al muntatge final dels components.

Pas 5: completar el muntatge del Motion Engine

Finalització del muntatge del Motion Engine
Finalització del muntatge del Motion Engine
Finalització del muntatge del Motion Engine
Finalització del muntatge del Motion Engine
Finalització del muntatge del Motion Engine
Finalització del muntatge del Motion Engine

Estem a punt d’acabar el muntatge de l’estructura i després podem passar a provar el moviment. Ara necessiteu de nou una mica de cola. La caixa de coixinets, muntada al pas anterior, s'ha d'inserir al forat del suport de caixa del suport del motor de dos braços i, possiblement, enganxar-la abans per cargolar la tapa de la caixa.

Advertència: no enganxeu la tapa de la caixa, només cargoleu-la. La coberta és important per protegir la pols i ha de ser extraïble per a qualsevol operació de manteniment futura.

Quan s’hagi completat aquesta configuració abans d’afegir l’engranatge conduït (el més gran), afegiu l’anell separador petit: manté l’engranatge gran alineat amb l’engranatge del motor actuant com una rentadora per fixar el conjunt mòbil impulsat.

A continuació, introduïu l’engranatge del conductor (el petit) a l’eix del motor. Tingueu en compte que també hi ha un costat pla al motor al forat central de l’engranatge per mantenir l’engranatge girant accionat pel motor de corrent continu.

Darrer pas, introduïu l’engranatge gran com es mostra a les imatges i bloquegeu-lo a l’eix roscat amb dues femelles M4.

L’edifici de la mecànica s’ha acabat!

Pas 6: Bonificació: com he personalitzat el suport per gestionar el kit

Bonificació: com he personalitzat el suport per gestionar el kit
Bonificació: com he personalitzat el suport per gestionar el kit
Bonificació: com he personalitzat el suport per gestionar el kit
Bonificació: com he personalitzat el suport per gestionar el kit
Bonificació: com he personalitzat el suport per gestionar el kit
Bonificació: com he personalitzat el suport per gestionar el kit

Per mantenir el kit al seu lloc, vaig fer una estructura molt senzilla basada en dos tubs quadrats d'alumini per recolzar tant la base com l'estructura de moviment. La base s’ha fixat amb quatre cargols als dos rails (uns 25 cm de longitud) i amb un parell de petits suports impresos en 3D tinc fixat el motor de moviment lliure per ser mogut per facilitar la inserció i extracció del rotlle de filament.

Tothom pot triar la seva pròpia solució en funció de com s’organitzi el seu banc de treball.

Pas 7: Cablatge i connexió a Arduino

Image
Image
Cablatge i connexió a Arduino
Cablatge i connexió a Arduino

Tal com s’explica al pas de contingut del kit, he utilitzat un blindatge del motor DC Infineon TLE94112LE per a Arduino i he provat el motor tant a Arduino UNO R3 com a Infineon XMC110 Boot Kit.

Si voleu controlar el motor (necessiteu funcions PWM) amb una placa de controlador de CC que trieu, només cal que adapteu les instruccions a les especificacions tècniques del vostre blindatge.

Una nota sobre el TLE04112LE Arduino Shield

Un dels límits que he experimentat amb altres protectors de control del motor per a Arduino és que utilitzen les funcions del mateix micro controlador (és a dir, pins PWM i GPIO); això significa que el vostre tauler es dedica a aquestes tasques mentre que només hi ha pocs recursos (MPU i GPIO) disponibles per a altres usos.

Tenint la possibilitat de posar les mans a l’escut Arduino TLE94122LE per a proves de carretera, l’avantatge més evident de l’IC en què es basa la placa és només la seva integritat. La placa Arduino es comunica a l'escut mitjançant el protocol SPI mitjançant només dos pins. Totes les ordres que envieu a l'escut són processades de forma autònoma per l'IC TLE94112LE sense consumir recursos MPU. Una altra característica destacable de la placa Infineon és la possibilitat de controlar fins a sis motors raspallats amb tres canals PWM programables. Això significa que Arduino pot configurar un o més motors, engegar-los i continuar treballant en altres tasques. Aquest escut revelat perfecte per suportar fins a sis rotllos de filament diferents al mateix temps, el moviment només és una de les tasques a càrrec de la MPU. Considerant la possibilitat de gestionar sis bobines de filament diferents amb un únic escut Arduino + els impactes del cost del micro controlador en cada controlador de filament per menys de 5 euros.

El sensor de pes

Després de fer alguns experiments, vaig veure que era possible controlar tot el sistema (monitoratge i alimentació automàtica) amb un sol sensor; una cèl·lula de càrrega (sensor de pes) és capaç de mesurar dinàmicament les variacions de pes de la bobina del filament proporcionant tota la informació que necessitem.

Vaig utilitzar una cèl·lula de càrrega barata entre 0-5 kg i una petita placa basada en l’amplificador AD HX711, un CI específic per gestionar els sensors de les cèl·lules de càrrega. No hi ha hagut problemes d'interfície, ja que està disponible una biblioteca Arduino que funciona bé.

Tres passos per configurar el maquinari

  1. Inseriu el blindatge a la part superior de la placa Arduino o el kit d’arrencada Infineon XMC110
  2. Connecteu els cables del motor als connectors cargolats Out1 i Out2 del blindatge
  3. Connecteu la potència i els senyals de l’amplificador del sensor de pes HX711 AD als pins Arduino. En aquest cas he utilitzat els pins 2 i 3, però tots els pins lliures estan bé.

Advertiment: els protectors TLE94113LE reserven les pàgines 8 i 10 per a la connexió SPI

Això és tot! Esteu a punt per configurar el programari? Endavant.

Pas 8: el conjunt d'ordres de programari i control

El conjunt de comandes de programari i control
El conjunt de comandes de programari i control
El conjunt de comandes de programari i control
El conjunt de comandes de programari i control
El conjunt de comandes de programari i control
El conjunt de comandes de programari i control
El conjunt de comandes de programari i control
El conjunt de comandes de programari i control

El programari complet documentat es pot descarregar des del dipòsit GitHub 3DPrinterFilamentDispenserAndMonitor

aquí només considerem les parts més significatives i les ordres de control.

Hi ha una raó imposada pel nombre de pins disponibles a l’Arduino UNO. Vaig decidir controlar el sistema mitjançant el terminal sèrie USB; Com que cada unitat motoritzada es basa en un sensor de pes, per controlar sis dispensadors de filaments diferents cal llegir dades de sis sensors de pes. Cada cel·la de càrrega "consumeix" dos pins, es reserven els pins 0 i 1 (Tx / Rx) per al serial i els pins 8 i 10 es reserven per al canal SPI que connecta el blindatge TLE94112LE.

Estat del sistema

El programari de control funciona a través de quatre estats diferents, definits a filament.h:

#define SYS_READY "Ready" // El sistema està a punt

#define SYS_RUN "Running" // Filament en ús #define SYS_LOAD "Load" // Roll carregat #define SYS_STARTED "Iniciada" // Aplicació iniciada // Codis d'estat #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Estat: Iniciat

Aquest estat es produeix després d'un restabliment del maquinari o quan el sistema està engegat. La trucada d’engegada (i configuració () quan s’inicia l’esbós) inicialitza els valors predeterminats interns i s’hauria d’iniciar sense cap pes addicional a la plataforma ja que part de la seqüència d’inicialització és l’adquisició de la tara absoluta per assolir el pes zero físic.

Estat: llest

L'estat llest es produeix després d'un restabliment programari (enviat des del terminal sèrie). És similar al resecte físic, però no es calcula la tara; l'ordre reset també es pot iniciar quan el sistema s'està executant.

Estat: càrrega

L'estat de càrrega es produeix quan l'ordre de càrrega és enviada pel terminal. Això significa que s'ha carregat el rotlle de filament i s'ha calculat la tara dinàmica. El pes exacte del filament s’obté mitjançant el tipus de configuració del rotlle que resta el pes de la unitat del motor i del rotlle buit.

Estat: en execució

Aquest estat permet el càlcul automàtic de pes i el dispensador automàtic de filaments.

Missatges de terminal

La versió actual del programari retorna al terminal missatges llegibles per humans, en funció de les ordres. Els missatges de cadena es defineixen en dos fitxers de capçalera: commands.h (missatges i respostes relacionats amb les ordres) i filament.h (cadenes utilitzades per l’analitzador per crear missatges compostos).

Ordres

Hi ha dos fitxers diferents implicats en la gestió d'ordres: commands.h que inclou totes les ordres i paràmetres relacionats i filament.h que inclouen totes les constants i definicions utilitzades pel sistema de ponderació i per l'analitzador.

Tot i que els càlculs interns es fan automàticament mitjançant programari, he implementat una sèrie d’ordres per configurar el comportament del sistema i controlar manualment alguns paràmetres.

Les paraules clau d’ordres distingeixen entre majúscules i minúscules i només s’han d’enviar des del terminal. Si una ordre no és adequada per a l'estat actual de la mateixa no es reconeix, es torna un missatge d'ordre incorrecte, en cas contrari s'executa l'ordre.

Ordres d'estat

Canvieu l'estat actual del sistema i el comportament també s'adapta

Ordres de filament

Mitjançant comandes separades és possible configurar les característiques del filament i el rotlle en funció del pes i les mides més habituals disponibles al mercat actualment

Comandes d'unitats

Es tracta d’un parell d’ordres per configurar la visualització de les unitats de mesura en grams o centímetres. De fet, és possible eliminar aquestes ordres i representar sempre les dades en ambdues unitats.

Ordres d'informació

Mostra grups d'informació en funció de l'estat del sistema

Ordres del motor

Controleu el motor per alimentar o treure filaments.

Totes les ordres del motor segueixen un camí d’acceleració / desacceleració. Les dues ordres feed and pull executen una seqüència breu tal com es defineix a motor.h per la constant FEED_EXTRUDER_DELAY mentre que les ordres feedc i pullc s’executen indefinidament fins que no es rep una ordre stop.

Ordres de mode d’execució

L'estat de funcionament accepta dos modes; mode man acaba de llegir periòdicament el pes i el motor es mou fins que no s'envia una ordre de control del motor. El mode automàtic, en canvi, executa dues ordres d’alimentació quan l’extrusora necessita més filament.

El principi es basa en les lectures de pes, contextualitzades en aquest entorn concret. Esperem que el consum de filaments sigui relativament lent, que les impressores 3D siguin gairebé lentes i que les oscil·lacions de pes normals depenguin de la vibració de l’entorn (millor si no col·loqueu tot el material a la impressora 3D)

Quan l'extrusora tira del filament, la diferència de pes augmenta dràsticament (50 g o més) en molt poc temps, normalment entre dues o tres lectures. Aquesta informació és filtrada pel programari que "dedueix" que es necessita un nou filament. Per evitar lectures errònies, les variacions de pes mentre el motor està en marxa s’ignoren en absolut.

Lògica d'aplicació

La lògica de l'aplicació es distribueix a.ino main (l'esbós d'Arduino) al llarg de tres funcions: setup (), loop () i parseCommand (commandString)

L'esbós utilitza dues classes diferents: la classe FilamentWeight per gestionar tots els càlculs de filaments i la lectura del sensor mitjançant la classe IC HX711 i MotorControl que interfacen amb els mètodes de baix nivell del blindatge Arduino TLE94112LE.

setup ()

S'inicia una vegada quan s'engega o després d'un restabliment del maquinari inicialitzeu les instàncies de les classes, configureu el maquinari i la comunicació del terminal.

loop ()

La funció de bucle principal gestiona tres condicions diferents.

Tot i que hi ha dues classes de motors de sensor de pes i relativament complexes, hi ha l’avantatge que l’esbós resultant és realment fàcil d’entendre i gestionar.

  1. Comproveu (en mode automàtic) si l'extrusor necessita més filament
  2. Si el motor funciona, comproveu si hi ha errors de maquinari (retornats pel TLE94112LE)
  3. Si hi ha dades de sèrie disponibles, analitzeu l'ordre

parseCommand (commandString)

La funció d'anàlisi comprova les cadenes que provenen del serial i quan es reconeix una ordre, es processa immediatament.

Totes les ordres actuen com una màquina d'estats que impacta sobre algun paràmetre del sistema; seguint aquesta lògica, totes les ordres es redueixen a tres accions seqüencials:

  1. Enviar una ordre a la classe FilamentWeight (ordres de pes) o a la classe MotorControl (ordres de motor)
  2. Executa un càlcul per actualitzar els valors de pes o actualitzar un dels paràmetres interns
  3. Mostra al terminal i la sortida d'informació quan finalitzi l'execució

Instal·leu la biblioteca Arduino HX711, descarregueu el programari de GitHub i pengeu-lo a la vostra placa Arduino i, a continuació, gaudiu-ne!

Recomanat: