Sommario:

Il distributore robotico di filamenti per Arduino: 8 passaggi (con immagini)
Il distributore robotico di filamenti per Arduino: 8 passaggi (con immagini)

Video: Il distributore robotico di filamenti per Arduino: 8 passaggi (con immagini)

Video: Il distributore robotico di filamenti per Arduino: 8 passaggi (con immagini)
Video: Costruiamo una macchinina smart con arduino! || Parte 1 2024, Luglio
Anonim
Image
Image

Perché uno strumento motorizzato

Il filamento delle stampanti 3D - solitamente quasi robusto - viene tirato dall'estrusore mentre il rotolo viene posizionato vicino alla stampante, libero di ruotare. Ho osservato differenze significative nel comportamento del materiale a seconda del livello di utilizzo, riferito a rotoli di filamento da 1Kg. Una nuova bobina di filamento (piena) scorre quasi bene ma la forza applicata dall'estrusore dovrebbe essere relativamente rilevante: il peso è di almeno 1,5 Kg.

Il motore dell'estrusore (nella maggior parte dei casi uno stepper Nema17) ha una potenza sufficiente per svolgere il lavoro ma i due ingranaggi dell'estrusore che spingono il filamento verso il lato hot-end mentre lavorano raccolgono particelle del filamento a causa delle forze applicate; ciò richiede una frequente manutenzione dell'estrusore per evitare l'intasamento dell'ugello. Queste particelle tendono a distaccarsi e mescolarsi con il filamento pulito durante l'alimentazione, aumentando i problemi degli ugelli e una più frequente usura degli ugelli; ciò si verifica più frequentemente con ugelli di diametro 0,3 mm.

Quando il rotolo di filamento è utilizzato a metà o più le sue spirali si riducono e in alcune condizioni ambientali il filamento tende a rompersi troppo frequentemente. I lavori di stampa lunghi diventano meno affidabili e stressanti; Non posso lasciare la stampante in funzione da sola per un'intera notte senza controllarla. Controllando così l'alimentazione del filamento dalle figure del motore risolvendo una serie di problemi.

Il kit è disponibile su Tindie.com

Passaggio 1: il contenuto del kit

Il contenuto del kit
Il contenuto del kit
Il contenuto del kit
Il contenuto del kit

Il kit include tutte le parti stampate in 3D e la meccanica per assemblare il distributore di filamenti motorizzato. Ci sono invece due parti opzionali: il motore e la scheda controller del motore.

Nella mia configurazione ho utilizzato un motoriduttore McLennan a spazzole da 12 V, ma qualsiasi motoriduttore con diametro di 37 mm può adattarsi correttamente all'interno del supporto del motore.

Le migliori prestazioni si ottengono con uno shield Arduino TLE94112LE di Infineon (recensione completa qui); questa scheda controller del motore CC può supportare fino a 6 diversi kit di distributori robotici contemporaneamente.

Ho testato l'intero sistema sia su un Arduino UNO R3 che sulla scheda compatibile Arduino XMC1100 Boot kit di Infineon e il sistema è stato molto reattivo con entrambe le schede micro controller.

L'utilizzo della schermatura TLE94112LE è consigliato ma non indispensabile. Qualsiasi controller per motori CC per Arduino, incluso il tuo progetto! - può funzionare bene con questo strumento

Il kit è diviso in due set di componenti poiché due parti sono costruite per funzionare insieme. La piattaforma di base, sosterrà il rotolo di filamento rotante sui quattro cuscinetti a ruota libera. La base è fissata al sensore di peso per controllare il meccanismo di rotazione che ne innesca l'attivazione oltre a monitorare le condizioni del filamento: peso, metri e percentuale. Molte informazioni e un set completo di comandi sono accessibili da Arduino tramite un terminale seriale.

Strumenti di cui hai bisogno

Per completare l'assemblaggio è necessaria della colla per plastica robusta per alcune parti, un cacciavite e un set di viti a brugola.

Fase 2: Il progetto e il design

Il progetto e il design
Il progetto e il design
Il progetto e il design
Il progetto e il design
Il progetto e il design
Il progetto e il design

Questo progetto è la terza evoluzione della serie di filamenti per stampante 3D Qualche tempo fa ho creato la base rotante per ottimizzare il flusso del filamento quando tirato dall'estrusore della stampante 3D.

Il secondo modello includeva un sensore di peso per il monitoraggio in tempo reale dell'utilizzo del filamento con una scheda Arduino. Quest'ultimo progetto prevede il rilascio automatizzato del filamento a seconda delle esigenze del lavoro della stampante 3D. Si basa sulla variazione di peso virtuale quando l'estrusore inizia a tirare il filamento. Questo evento attiva il microcontrollore attraverso il sensore di peso e il rullo di filamento motorizzato inizia a rilasciare alcuni pollici di materiale, quindi decelera e si ferma.

I componenti sono stati esportati in formato STL e stampati in 3D, quindi rifiniti e assemblati insieme. Ho creato un supporto personalizzato per allineare la parte di movimento alla base. La guida in alluminio più lunga è stata utilizzata anche per supportare l'Arduino e lo scudo del motore per rendere l'intero strumento compatto e facile da spostare.

Creando il disegno ho seguito una serie di presupposti:

  • Rendere il motore automatizzato quasi semplice e facile da riprodurre
  • Riduci il più possibile il numero di componenti non stampabili in 3D per realizzarlo
  • Ridurre il più possibile lo stress applicato all'estrusore durante la stampa
  • Utilizzare una scheda micro controller a basso costo e facile da programmare
  • Utilizzare il sensore di carico del peso per tenere sotto controllo il consumo e l'alimentazione del filamento Gestire il rumore ambientale interferendo con le misure di peso del filamento

Questo è il risultato che ho raggiunto.

Passaggio 3: assemblaggio della base

Assemblaggio della base
Assemblaggio della base
Assemblaggio della base
Assemblaggio della base
Assemblaggio della base
Assemblaggio della base

Il primo passo è assemblare la base con il sensore di peso.

  1. Inserire il tubo dell'asse del cuscinetto piccolo nel foro del cuscinetto
  2. Mettere i due dischi separatori ai lati del cuscinetto
  3. Introdurre i componenti all'interno del supporto del cuscinetto a "U" allineando i fori
  4. inserire la vite a brugola da un lato e la rondella e il dado dall'altro chiudendo il dado senza troppa fatica

Occorre ripetere l'operazione su tutti e quattro i supporti dei cuscinetti. Quindi testare l'assemblaggio: i cuscinetti dovrebbero ruotare liberamente.

Fissare ora con le viti a brugola i quattro supporti cuscinetti sulla base superiore con i quattro fori di regolazione. Allineare i supporti dei cuscinetti per mantenerli paralleli. Regola la distanza in base alla larghezza dei tuoi rotoli di filamento.

Il passaggio successivo consiste nell'assemblare la barra del sensore di peso che tiene insieme la base inferiore e superiore. Il sensore di peso ha due diverse viti a brugola su entrambi i lati e dovresti orientarlo in modo che l'etichetta del peso massimo sia leggibile quando la base è posizionata correttamente. La base inferiore ha due fori laterali extra per fissare l'amplificatore A/D del sensore di peso. L'amplificatore basato sull'IC HX711 sarà alimentato e collegato alla scheda Arduino tramite i quattro fili come mostrato nella scheda tecnica del sensore allegata.

L'ultimo passaggio consiste nell'assemblare la base superiore completa sul sensore di peso già fissato alla parte inferiore.

Il primo componente è stato configurato!

Passaggio 4: assemblaggio delle parti del motore del movimento della bobina

Assemblaggio delle parti del motore Spool Motion
Assemblaggio delle parti del motore Spool Motion
Assemblaggio delle parti del motore Spool Motion
Assemblaggio delle parti del motore Spool Motion
Assemblaggio delle parti del motore Spool Motion
Assemblaggio delle parti del motore Spool Motion

La procedura più semplice per assemblare il motore del movimento della bobina è assemblare separatamente i quattro componenti più importanti, quindi completare la costruzione finale:

Il motoriduttore DC nella scatola di trasmissione del motore

Il motore DC va montato nella parte centrale del supporto della struttura; prima di avvitare il motore dovresti decidere quale sarà il tuo lato preferito dove mettere il lato ingranaggi per allineare correttamente i due bracci che tengono il motore e l'ingranaggio grande condotto.

Il grande ingranaggio condotto

L'ingranaggio grande va avvitato al blocco tronco conico con le quattro viti a brugola. Questo ingranaggio sarà bloccato sull'asse di rotazione da dadi; la parte conica manterrà la bobina del filamento che è bloccata all'altro lato da un controdado simile all'interno di un altro blocco tronco conico. Questa soluzione non solo mantiene in posizione il meccanismo di movimento, ma dirige tutto il peso verso la base ed è la tara del sistema.

Il supporto per il blocco della bobina

Questo è il blocco tronco conico che, insieme all'analogo lato di bloccaggio dell'ingranaggio condotto, manterrà il meccanismo di movimento alla bobina del filamento. Per una questione di tatto è il rotolo di filamento che completa l'edificio mentre il supporto a due bracci di movimento è libero di muoversi dall'altra parte.

Come mostrato nelle immagini il portarocchetto è costruito in due parti. Inserire prima il dado M4 nella parte più grande del blocco poi incollare la seconda parte (il coperchio) tenendo insieme i blocchi. Il dado rimane imprigionato all'interno del portaserratura che verrà avvitato all'asse condotto filettato.

La scatola dei cuscinetti

La scatola dei cuscinetti ha due funzioni: garantire un buon supporto agli ingranaggi di trasmissione e un movimento fluido e silenzioso. Per assemblare la scatola dei cuscinetti segui questi semplici passaggi:

  1. Avvitare il primo dado M4 ad una delle due estremità dell'asse condotto del portarocchetto filettato
  2. Inserire il primo cuscinetto
  3. Inserisci il separatore
  4. Inserire il secondo cuscinetto
  5. Avvitare il secondo dado e bloccarlo moderatamente. Il separatore di plastica interno oppone una forza sufficiente per mantenere le cose in posizione anche per un uso prolungato.
  6. Inserire i cuscinetti assemblati nella scatola dei cuscinetti. Dovrebbe essere fatto in modo forzato per garantire i migliori risultati, quindi non dilatare troppo l'interno della scatola durante la rifinitura delle parti in plastica.

Siamo pronti per l'assemblaggio finale dei componenti!

Passaggio 5: completamento dell'assemblaggio del motore di movimento

Completamento dell'assemblaggio del motore di movimento
Completamento dell'assemblaggio del motore di movimento
Completamento dell'assemblaggio del motore di movimento
Completamento dell'assemblaggio del motore di movimento
Completamento dell'assemblaggio del motore di movimento
Completamento dell'assemblaggio del motore di movimento

Stiamo per terminare l'assemblaggio della struttura, quindi possiamo passare alla prova di movimento. Ora hai di nuovo bisogno di un po' di colla. La scatola cuscinetti - montata nel passaggio precedente - va inserita nel foro porta scatola del supporto motore a due bracci ed eventualmente incollata prima di avvitare il coperchio scatola.

Attenzione: non incollare il coperchio della scatola, solo avvitarlo. Il coperchio è importante per la protezione dalla polvere e dovrebbe essere rimovibile per qualsiasi futura operazione di manutenzione.

Quando questa configurazione è completa prima di aggiungere l'ingranaggio condotto (il più grande) aggiungere l'anello separatore piccolo: mantiene l'ingranaggio grande allineato con l'ingranaggio del motore fungendo da rondella per fissare il gruppo mobile condotto.

Quindi inserire l'ingranaggio conduttore (quello piccolo) nell'albero motore. Notare che c'è un lato piatto nel motore anche nel foro centrale dell'ingranaggio per mantenere l'ingranaggio in rotazione guidato dal motore CC.

Ultimo passaggio, inserire l'ingranaggio condotto grande come mostrato nelle immagini e bloccarlo all'asse filettato con due dadi M4.

L'edificio della meccanica è completo!

Passaggio 6: Bonus: come ho personalizzato il supporto per gestire il kit

Bonus: come ho personalizzato il supporto per gestire il kit
Bonus: come ho personalizzato il supporto per gestire il kit
Bonus: come ho personalizzato il supporto per gestire il kit
Bonus: come ho personalizzato il supporto per gestire il kit
Bonus: come ho personalizzato il supporto per gestire il kit
Bonus: come ho personalizzato il supporto per gestire il kit

Per mantenere il kit in posizione ho realizzato una struttura molto semplice basata su due tubi quadrati in alluminio per supportare sia la base che la struttura di movimento. La base è stata fissata con quattro viti ai due binari (lunghezza circa 25 cm) e con un paio di piccoli supporti stampati in 3D ho fissato il motore di movimento libero di essere spostato per facilitare l'inserimento e la rimozione del rotolo di filamento.

Chiunque può scegliere la propria soluzione a seconda di come è organizzato il proprio banco di lavoro.

Passaggio 7: cablaggio e connessione ad Arduino

Image
Image
Cablaggio e collegamento ad Arduino
Cablaggio e collegamento ad Arduino

Come spiegato nella fase del contenuto del kit, ho utilizzato uno shield motore Infineon TLE94112LE DC per Arduino e ho testato il motore sia su Arduino UNO R3 che su Infineon XMC110 Boot Kit.

Se controllerai il motore (necessita di funzionalità PWM) con una scheda controller DC di tua scelta, adatta le istruzioni alle specifiche tecniche del tuo shield.

Una nota su Arduino Shield TLE04112LE

Uno dei limiti che ho riscontrato con altri shield di controllo motore per Arduino è che utilizzano le funzionalità dello stesso micro controller (ad esempio pin PWM e GPIO); questo significa che la tua scheda diventa dedicata a queste attività mentre solo poche altre risorse (MPU e GPIO) sono disponibili per altri usi.

Avendo la possibilità di mettere le mani sullo shield Arduino TLE94122LE per prove su strada, il vantaggio più evidente dell'IC su cui si basa la scheda è proprio la sua completezza. La scheda Arduino comunica con lo shield tramite il protocollo SPI utilizzando solo due pin. Ogni comando inviato allo shield viene elaborato autonomamente dall'IC TLE94112LE senza consumare risorse MPU. Un'altra caratteristica notevole della scheda Infineon è la possibilità di controllare fino a sei motori a spazzole con tre canali PWM programmabili. Ciò significa che Arduino può configurare uno o più motori, avviarli e continuare a lavorare su altre attività. Questo shield si è rivelato perfetto per supportare fino a sei diversi rotoli di filamento contemporaneamente Il movimento del microcontrollore è solo uno dei compiti affidati alla MPU. Considerando la possibilità di gestire sei differenti bobine di filamento con un unico Arduino + shield il micro controller incide su ogni singolo controller di filamento a meno di 5 Euro.

Il sensore di peso

Dopo aver fatto alcuni esperimenti ho visto che era possibile controllare l'intero sistema - monitoraggio e alimentazione automatica - con un unico sensore; una cella di carico (sensore di peso) è in grado di misurare dinamicamente le variazioni di peso della bobina del filamento fornendo tutte le informazioni di cui abbiamo bisogno.

Ho utilizzato una cella di carico economica nel range 0-5 Kg insieme a una piccola scheda basata sull'amplificatore HX711 AD, un IC specifico per gestire i sensori delle celle di carico. Non ci sono stati problemi di interfacciamento in quanto è disponibile una libreria Arduino ben funzionante.

Tre passaggi per impostare l'hardware

  1. Inserisci lo shield sopra la scheda Arduino o il Boot Kit Infineon XMC110
  2. Collegare i cavi del motore ai connettori a vite Out1 e Out2 dello schermo
  3. Collegare l'alimentazione e i segnali dall'amplificatore del sensore di peso AD HX711 ai pin Arduino. In questo caso ho usato i pin 2 e 3 ma tutti i pin liberi vanno bene.

Attenzione: i pin 8 e 10 sono riservati dallo shield TLE94113LE per la connessione SPI

È tutto! Pronto per configurare il software? Andare avanti.

Passaggio 8: il set di comandi software e di controllo

Il software e il set di comandi di controllo
Il software e il set di comandi di controllo
Il software e il set di comandi di controllo
Il software e il set di comandi di controllo
Il software e il set di comandi di controllo
Il software e il set di comandi di controllo
Il software e il set di comandi di controllo
Il software e il set di comandi di controllo

Il software completo documentato può essere scaricato dal repository GitHub 3DPrinterFilamentDispenserAndMonitor

qui consideriamo solo le parti più significative e i comandi di controllo.

C'è un motivo imposto dal numero di pin disponibili su Arduino UNO ho deciso di controllare il sistema tramite il terminale seriale USB; Poiché ogni unità motorizzata si basa su un sensore di peso, il controllo di sei diversi erogatori di filamenti richiede la lettura dei dati da sei sensori di peso. Ogni cella di carico "consuma" due pin, i pin 0 e 1 sono riservati (Tx/Rx) per la seriale e i pin 8 e 10 sono riservati per il canale SPI che collega lo shield TLE94112LE.

Stato del sistema

Il software di controllo funziona attraverso quattro diversi stati, definiti in filament.h:

#define SYS_READY "Pronto" // Sistema pronto

#define SYS_RUN "Running" // Filamento in uso #define SYS_LOAD "Load" // Rotolo caricato #define SYS_STARTED "Started" // Applicazione avviata // Codici di stato #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Stato: iniziato

Questo stato si verifica dopo un ripristino hardware o all'accensione del sistema. La chiamata power-on (e setup() all'avvio dello sketch) inizializza i valori interni di default e deve essere avviata senza peso aggiuntivo sulla piattaforma in quanto parte della sequenza di inizializzazione è l'acquisizione della tara assoluta per raggiungere il peso zero fisico.

Stato: pronto

Lo stato di pronto si verifica dopo un soft reset (inviato dal terminale seriale). È simile alla resezione fisica ma non viene calcolata la tara; il comando di reset può essere lanciato anche quando il sistema è in funzione.

Stato: Carica

Lo stato di caricamento si verifica quando il comando di caricamento viene inviato dal terminale. Ciò significa che il rotolo di filamento è stato caricato ed è stata calcolata la tara dinamica. Il peso esatto del filamento si ottiene dal tipo di installazione del rotolo sottraendo il peso dell'unità motore e il rotolo vuoto.

Stato: in esecuzione

Questo stato abilita il calcolo automatico del peso e l'erogatore automatico del filamento.

Messaggi del terminale

La versione corrente del software restituisce messaggi leggibili dall'uomo al terminale a seconda dei comandi. I messaggi di stringa sono definiti in due file di intestazione: command.h (messaggi e risposte relativi ai comandi) e filament.h (stringhe utilizzate dal parser per creare messaggi composti).

Comandi

Nella gestione dei comandi sono coinvolti due diversi file: commands.h che include tutti i comandi e relativi parametri e filament.h che include tutte le costanti e definizioni utilizzate dal sistema di pesatura e dal parser.

Mentre i calcoli interni vengono eseguiti automaticamente dal software ho implementato una serie di comandi per impostare il comportamento del sistema e controllare manualmente alcuni parametri.

Le parole chiave dei comandi fanno distinzione tra maiuscole e minuscole e devono essere inviate semplicemente dal terminale. Se un comando non è appropriato per lo stato corrente o non viene riconosciuto, viene restituito un messaggio di comando errato, altrimenti il comando viene eseguito.

Comandi di stato

Cambia lo stato attuale del sistema e anche il comportamento viene adattato

Comandi del filamento

Utilizzando comandi separati è possibile impostare le caratteristiche del filamento e del rotolo in base al peso e alle dimensioni più comuni oggi disponibili sul mercato

Comandi unità

Questi sono un paio di comandi per impostare la visualizzazione delle unità di misura in grammi o centimetri. È infatti possibile eliminare questo comando e rappresentare sempre i dati in entrambe le unità.

Comandi informativi

Mostra gruppi di informazioni a seconda dello stato del sistema

Comandi motore

Controllare il motore per l'alimentazione o la trazione del filamento.

Tutti i comandi del motore seguono un percorso di accelerazione/decelerazione. I due comandi feed e pull eseguono una breve sequenza come definito in motor.h dalla costante FEED_EXTRUDER_DELAY mentre i comandi feedc e pullc vengono eseguiti indefinitamente finché non viene ricevuto un comando di arresto.

Comandi della modalità di esecuzione

Lo stato di esecuzione accetta due modalità; mode man si limita a leggere periodicamente il peso e il motore si muove fino a quando non viene inviato un comando di controllo motore. La modalità auto invece esegue due comandi di alimentazione quando l'estrusore necessita di più filamento.

Il principio si basa sulle letture del peso, contestualizzate a questo particolare ambiente. Ci aspettiamo che il consumo di filamento sia relativamente lento, le stampanti 3D sono quasi lente e le normali oscillazioni del peso dipendono dalle vibrazioni dell'ambiente (meglio se non metti tutto sulla stampante 3D)

Quando l'estrusore tira il filamento invece la differenza di peso aumenta drasticamente (50 go più) in pochissimo tempo, tipicamente tra due o tre letture. Queste informazioni vengono filtrate dal software che "deduce" la necessità di nuovo filamento. Per evitare letture errate, le variazioni di peso durante il funzionamento del motore vengono del tutto ignorate.

Logica dell'applicazione

La logica dell'applicazione è distribuita nel main.ino (lo sketch Arduino) lungo tre funzioni: setup(), loop() e parseCommand(commandString)

Lo sketch utilizza due classi separate: la classe FilamentWeight per gestire tutti i calcoli del filamento e la lettura del sensore tramite l'IC HX711 e la classe MotorControl che interfaccia i metodi di basso livello dello shield Arduino TLE94112LE.

impostare()

Lanciato una volta all'accensione o dopo un reset hardware, inizializza le istanze delle classi, imposta l'hardware e la comunicazione del terminale.

ciclo continuo()

La funzione loop principale gestisce tre diverse condizioni.

Sebbene ci siano due classi relativamente complesse per sensori di peso e motori, c'è il vantaggio che lo schizzo risultante è davvero facile da capire e gestire.

  1. Controllare (in modalità automatica) se l'estrusore necessita di più filamenti
  2. Se il motore è in funzione verificare la presenza di errori hardware (restituito dal TLE94112LE)
  3. Se sono disponibili dati seriali, analizza il comando

parseCommand(CommandString)

La funzione di parsing verifica la presenza di stringhe provenienti dalla seriale e quando viene riconosciuto un comando viene immediatamente elaborato.

Ogni comando agisce come una macchina a stati impattando su alcuni parametri del sistema; seguendo questa logica tutti i comandi si riducono a tre azioni sequenziali:

  1. Invia un comando alla classe FilamentWeight (comandi peso) o alla classe MotorControl (comandi motore)
  2. Esegue un calcolo per aggiornare i valori di peso o aggiornare uno dei parametri interni
  3. Mostra sul terminale e l'output delle informazioni quando l'esecuzione è completata

Installa la libreria Arduino HX711, scarica il software da GitHub e caricalo sulla tua scheda Arduino, quindi divertiti!

Consigliato: