Cuprins:

Dispenserul de filament robotizat pentru Arduino: 8 pași (cu imagini)
Dispenserul de filament robotizat pentru Arduino: 8 pași (cu imagini)

Video: Dispenserul de filament robotizat pentru Arduino: 8 pași (cu imagini)

Video: Dispenserul de filament robotizat pentru Arduino: 8 pași (cu imagini)
Video: Reliable and cleaner method for PET filament splicing #3dprinting #3dprint #artillerysidewinderx2 2024, Iulie
Anonim
Image
Image

De ce un instrument motorizat

Filamentul pentru imprimante 3D - de obicei aproape robust - este tras de extruder în timp ce rola este plasată în apropierea imprimantei, liberă pentru a se roti. Am observat diferențe semnificative în comportamentul materialului în funcție de nivelul de utilizare, referite la role de filament de 1 kg. O nouă bobină de filament (completă) curge aproape bine, dar forța aplicată de extruder ar trebui să fie relativ relevantă: greutatea este de cel puțin 1,5 kg.

Motorul extruderului (în majoritatea cazurilor un pas cu pas Nema17) are o putere suficientă pentru a face treaba, dar cele două trepte de viteză ale extruderului împingând filamentul spre partea de capăt fierbinte în timp ce lucrează colectează particule din filament datorită forțelor aplicate; acest lucru necesită întreținerea frecventă a extruderului pentru a evita înfundarea duzei. Aceste particule tind să se detașeze și să se amestece cu filamentul curat în timp ce se alimentează, crescând problemele de duză și o uzură mai frecventă a duzei; acest lucru se întâmplă mai frecvent cu duze cu diametrul de 0,3 mm.

Când rola de filament este pe jumătate folosită sau mai mult, spiralele sale devin mai mici și, în unele condiții de mediu, filamentul tinde să se rupă prea frecvent. Lucrările de tipărire lungă devin mai puțin fiabile și mai stresante; Nu pot lăsa imprimanta să funcționeze singură o noapte întreagă fără să o controlez. Astfel, controlul alimentării filamentului prin figuri motorii rezolvă o serie de probleme.

Kitul este disponibil pe Tindie.com

Pasul 1: Conținutul kitului

Conținutul kitului
Conținutul kitului
Conținutul kitului
Conținutul kitului

Kitul include toate piesele imprimate 3D și mecanica pentru asamblarea distribuitorului de filamente motorizat. În schimb, există două părți opționale: motorul și placa controlerului motorului.

În configurația mea am folosit un motor cu perii McLennan cu 12 V, dar orice motor cu diametru de 37 mm se poate potrivi în interiorul suportului motorului.

Cele mai bune performanțe sunt atinse cu un scut Arduino TLE94112LE de la Infineon (recenzie completă aici); această placă de control al motorului de curent continuu poate suporta până la 6 kituri diferite de distribuție robotică în același timp.

Am testat întregul sistem atât pe un Arduino UNO R3 cât și pe placa compatibilă Arduino XMC1100 Kit de încărcare de la Infineon, iar sistemul a fost foarte bine receptiv atât cu plăcile cu microcontroler.

Utilizarea scutului TLE94112LE este sugerată, dar nu esențială. Orice controler de motor DC pentru Arduino - inclusiv propriul dvs. proiect! - poate funcționa bine cu acest instrument

Kitul este împărțit în două seturi de componente, deoarece două părți sunt construite pentru a funcționa împreună. Platforma de bază va susține rola filamentului care se rotește pe cei patru rulmenți cu roți libere. Baza este fixată pe senzorul de greutate pentru a controla mecanismul rotativ declanșând activarea acestuia, precum și pentru a monitoriza condițiile filamentului: greutate, metri și procent. O mulțime de informații, precum și un set complet de comenzi sunt accesibile de pe Arduino printr-un terminal serial.

Unelte de care aveți nevoie

Pentru a finaliza ansamblul, aveți nevoie de un lipici robust din plastic pentru unele piese, o șurubelniță și un set de șuruburi Allen.

Pasul 2: Proiectul și proiectarea

Proiectul și proiectarea
Proiectul și proiectarea
Proiectul și proiectarea
Proiectul și proiectarea
Proiectul și proiectarea
Proiectul și proiectarea

Acest proiect este a treia evoluție a seriei de distribuitoare de filamente de imprimantă 3D Cu câteva ori în urmă, am creat baza rotativă pentru a optimiza fluxul filamentului atunci când este tras de extruderul de imprimantă 3D.

Al doilea model a inclus un senzor de greutate pentru monitorizarea în timp real a utilizării filamentului cu o placă Arduino. Acest ultim proiect include eliberarea automată a filamentului în funcție de necesitățile lucrării de imprimantă 3D. Se bazează pe variația virtuală a greutății atunci când extruderul începe să tragă de filament. Acest eveniment declanșează microcontrolerul prin senzorul de greutate și rola de filament motorizată începe să elibereze câțiva centimetri de material, apoi decelerează și se oprește.

Componentele au fost exportate în format STL și imprimate 3D, apoi rafinate și asamblate împreună. Am creat un suport personalizat pentru a alinia partea de mișcare la bază. Șina din aluminiu mai lungă a fost, de asemenea, utilizată pentru a sprijini Arduino și scutul motorului pentru a face întregul instrument compact și ușor de deplasat.

Crearea designului am urmat o serie de ipoteze:

  • Facând motorul automat aproape simplu și ușor de reprodus
  • Reduceți cât mai mult posibil numărul de componente care nu pot fi tipărite 3D pentru realizarea acestuia
  • Reduceți cât mai mult posibil stresul aplicat extruderului în timpul imprimării
  • Folosiți o placă de microcontroler cu cost redus și ușor de programat
  • Folosiți senzorul de încărcare a greutății pentru a menține sub control consumul de filament și alimentarea cu filament Gestionați zgomotul din mediu care interferează cu măsurile de greutate ale filamentului

Acesta este rezultatul la care am ajuns.

Pasul 3: Asamblarea bazei

Asamblarea bazei
Asamblarea bazei
Asamblarea bazei
Asamblarea bazei
Asamblarea bazei
Asamblarea bazei

Primul pas este asamblarea bazei cu senzorul de greutate.

  1. Introduceți tubul mic al axei lagărului în orificiul lagărului
  2. Puneți cele două discuri de separare pe părțile laterale ale rulmentului
  3. Introduceți componentele în interiorul suportului lagărului de dimensiuni "U" aliniat găurile
  4. introduceți șurubul Allen într-o parte și șaiba și piulița pe cealaltă parte închizând piulița fără prea mult efort

Ar trebui să repetați operația pe toate cele patru suporturi ale lagărelor. Apoi testați ansamblul: rulmenții trebuie să se rotească liber.

Acum fixați cu șuruburile Allen cele patru suporturi ale lagărului de pe baza superioară cu cele patru găuri de reglare. Aliniați suporturile lagărului pentru a le menține paralele. Reglați distanța în funcție de lățimea rolelor de filament.

Următorul pas este asamblarea barei senzorului de greutate care ține împreună baza inferioară și cea superioară. Senzorul de greutate are două șuruburi Allen diferite pe ambele părți și ar trebui să îl orientați astfel încât eticheta greutății maxime să poată fi citită atunci când baza este poziționată corect. Baza inferioară are două găuri laterale suplimentare pentru a fixa amplificatorul A / D al senzorului de greutate. Amplificatorul bazat pe IC HX711 va fi alimentat și conectat la placa Arduino prin cele patru fire așa cum se arată în foaia de date a senzorului atașat.

Ultimul pas este asamblarea bazei superioare complete peste senzorul de greutate deja fixat pe partea inferioară.

Prima componentă a fost configurată!

Pasul 4: Asamblarea pieselor motorului de mișcare a bobinei

Asamblarea pieselor motorului de mișcare a bobinei
Asamblarea pieselor motorului de mișcare a bobinei
Asamblarea pieselor motorului de mișcare a bobinei
Asamblarea pieselor motorului de mișcare a bobinei
Asamblarea pieselor motorului de mișcare a bobinei
Asamblarea pieselor motorului de mișcare a bobinei

Procedura mai ușoară de asamblare a motorului de mișcare a bobinei este asamblarea separată a celor mai importante patru componente, apoi finalizarea clădirii finale:

Motorul DC cu transmisie din cutia de transmisie a motorului

Motorul continuu trebuie montat în partea centrală a suportului structurii; înainte de a înșuruba motorul, ar trebui să decideți care va fi partea dvs. preferată unde să puneți roțile dințate pentru a alinia corect cele două brațe care țin motorul și angrenajul mare antrenat.

Angrenajul mare acționat

Angrenajul mare trebuie înșurubat cu blocul conic trunchiat cu cele patru șuruburi Allen. Acest angrenaj va fi blocat pe axa rotativă de piulițe; partea conică va ține bobina de filament care este blocată de cealaltă parte de o piuliță de blocare similară în interiorul unui alt bloc conic trunchiat. Această soluție nu ține doar mecanismul în mișcare, ci direcționează toată greutatea spre bază și este greutatea tare a sistemului.

Suportul de blocare a bobinei

Acesta este blocul conic trunchiat care, împreună cu partea de blocare similară a angrenajului condus, va ține mecanismul de mișcare a bobinei filamentului. Ca o chestiune de tact, rola de filament este cea care completează clădirea, în timp ce mișcarea cu două brațe este liberă să se miște de cealaltă parte.

Așa cum se arată în imagini, suportul de blocare a bobinei este construit în două părți. Mai întâi introduceți piulița M4 în partea mai mare a blocului, apoi lipiți a doua parte (capacul) menținând blocurile împreună. Piulița rămâne închisă în interiorul suportului de blocare care va fi înșurubat pe axa cu filet.

Cutia de rulmenți

Cutia de rulmenți are două funcții: acordă un bun suport transmisiei de transmisie și o mișcare lină și silențioasă. Pentru a asambla cutia de rulmenți urmați acești pași simpli:

  1. Înșurubați prima piuliță M4 la unul dintre cele două capete ale axei antrenate a suportului bobinei filetate
  2. Introduceți primul rulment
  3. Introduceți separatorul
  4. Introduceți al doilea rulment
  5. Înșurubați a doua piuliță și blocați-o moderat. Separatorul intern din plastic se va opune unei forțe suficiente pentru a menține lucrurile la locul lor și pentru o utilizare îndelungată.
  6. Introduceți lagărele asamblate în cutia rulmentului. Ar trebui să se facă forțat pentru a oferi rezultate mai bune, așa că nu extindeți prea mult interiorul cutiei atunci când rafinați piesele din plastic.

Suntem pregătiți pentru asamblarea componentelor finale!

Pasul 5: Finalizarea ansamblului Motion Engine

Finalizarea ansamblului Motion Engine
Finalizarea ansamblului Motion Engine
Finalizarea ansamblului Motion Engine
Finalizarea ansamblului Motion Engine
Finalizarea ansamblului Motion Engine
Finalizarea ansamblului Motion Engine

Suntem pe punctul de a termina ansamblul structurii, apoi putem trece la testarea mișcării. Acum ai nevoie din nou de câteva lipici. Cutia de rulmenți - asamblată la pasul anterior - trebuie introdusă în orificiul suportului cutiei de pe suportul motorului cu două brațe și eventual lipită înainte de a înșuruba capacul cutiei.

Atenție: nu lipiți capacul cutiei, ci doar înșurubați-l. Capacul este important pentru protecția împotriva prafului și ar trebui să fie detașabil pentru orice operațiune de întreținere viitoare.

Când această configurare este completă înainte de adăugarea angrenajului antrenat (cu atât mai mare) adăugați inelul de separare mic: menține angrenajul mare aliniat cu angrenajul motorului acționând ca o mașină de spălat pentru a fixa ansamblul mobil antrenat.

Apoi introduceți angrenajul șoferului (cel mic) în arborele motorului. Rețineți că există o parte plană în motor, precum și în orificiul central al angrenajului, pentru a menține angrenajul rotit acționat de motorul DC.

Ultimul pas, introduceți angrenajul mare, așa cum se arată în imagini, și blocați-l pe axa filetată cu două piulițe M4.

Clădirea mecanică este completă!

Pasul 6: Bonus: Cum am personalizat asistența pentru a gestiona kitul

Bonus: Cum am personalizat asistența pentru a gestiona kitul
Bonus: Cum am personalizat asistența pentru a gestiona kitul
Bonus: Cum am personalizat asistența pentru a gestiona kitul
Bonus: Cum am personalizat asistența pentru a gestiona kitul
Bonus: Cum am personalizat asistența pentru a gestiona kitul
Bonus: Cum am personalizat asistența pentru a gestiona kitul

Pentru a menține kitul pe loc, am realizat o structură foarte simplă bazată pe două tuburi pătrate din aluminiu pentru a susține atât baza, cât și structura de mișcare. Baza a fost fixată cu patru șuruburi pe cele două șine (aproximativ 25 cm lungime) și cu câteva suporturi mici imprimate 3D am fixat motorul de mișcare liber pentru a fi mutat pentru a ușura inserarea și îndepărtarea rolei de filament.

Oricine își poate alege propria soluție în funcție de modul în care este organizat bancul său de lucru.

Pasul 7: Cablarea și conectarea la Arduino

Image
Image
Cablarea și conectarea la Arduino
Cablarea și conectarea la Arduino

Așa cum s-a explicat în pasul de conținut al kitului, am folosit un scut de motor DC Infineon TLE94112LE pentru Arduino și am testat motorul atât pe Arduino UNO R3, cât și pe kitul de încărcare Infineon XMC110.

Dacă veți controla motorul (aveți nevoie de caracteristici PWM) cu o placă de control DC la alegere, adaptați instrucțiunile la specificațiile tehnice ale scutului.

O notă despre TLE04112LE Arduino Shield

Una dintre limitele pe care le-am experimentat cu alte scuturi de control al motorului pentru Arduino este că folosesc caracteristicile aceluiași microcontroler (adică pinii PWM și GPIO); acest lucru înseamnă că placa dvs. devine dedicată acestor sarcini, în timp ce doar câteva alte resurse (MPU și GPIO) sunt disponibile pentru alte utilizări.

Având posibilitatea de a pune mâna pe ecranul TLE94122LE Arduino pentru testarea rutieră, cel mai evident avantaj al IC-ului pe care se bazează placa este doar completitudinea sa. Placa Arduino comunică scutului prin protocolul SPI folosind doar doi pini. Fiecare comandă pe care o trimiteți la ecran este procesată autonom de IC-ul TLE94112LE fără a consuma resurse MPU. O altă caracteristică remarcabilă a plăcii Infineon este posibilitatea de a controla până la șase motoare periate cu trei canale PWM programabile. Aceasta înseamnă că Arduino poate configura unul sau mai multe motoare, le poate porni și continua să lucreze la alte sarcini. Acest scut s-a dezvăluit perfect pentru a suporta până la șase role diferite de filament în același timp, mișcarea este doar una dintre sarcinile care îi revin MPU. Având în vedere posibilitatea de a gestiona șase bobine de filament diferite cu un singur scut Arduino + impactul asupra costului microcontrolerului pe fiecare controler cu filament pentru mai puțin de 5 euro.

Senzorul de greutate

După ce am făcut câteva experimente, am văzut că era posibil să controlez întregul sistem - monitorizare și alimentare automată - cu un singur senzor; o celulă de încărcare (senzor de greutate) este capabilă să măsoare dinamic variațiile de greutate ale bobinei filamentului oferind toate informațiile de care avem nevoie.

Am folosit o celulă de încărcare ieftină în intervalul 0-5 Kg împreună cu o placă mică bazată pe amplificatorul AD HX711, un IC specific pentru gestionarea senzorilor celulelor de încărcare. Nu au existat probleme de interfață, deoarece este disponibilă o bibliotecă Arduino care funcționează bine.

Trei pași pentru setarea hardware-ului

  1. Introduceți scutul deasupra plăcii Arduino sau a kitului de încărcare Infineon XMC110
  2. Conectați firele motorului la conectorii înșurubați Out1 și Out2 ai ecranului
  3. Conectați puterea și semnalele de la amplificatorul senzorului de greutate HX711 AD la pinii Arduino. În acest caz, am folosit pinii 2 și 3, dar toți pinii liberi sunt bine.

Avertisment: paginile 8 și 10 sunt rezervate de ecranul TLE94113LE pentru conexiunea SPI

Asta e tot! Sunteți gata să configurați software-ul? Dați-i drumul.

Pasul 8: Setul de comenzi software și control

Setul de comenzi software și control
Setul de comenzi software și control
Setul de comenzi software și control
Setul de comenzi software și control
Setul de comenzi software și control
Setul de comenzi software și control
Setul de comenzi software și control
Setul de comenzi software și control

Software-ul complet documentat poate fi descărcat din depozitul GitHub 3DPrinterFilamentDispenserAndMonitor

aici considerăm doar cele mai semnificative părți și comenzile de control.

Există un motiv impus de numărul de pini disponibili pe Arduino UNO. Am decis să controlez sistemul prin terminalul serial USB; Deoarece fiecare unitate motorizată se bazează pe un senzor de greutate, controlul a șase distribuitoare de filamente diferite necesită citirea datelor de la șase senzori de greutate. Fiecare celulă de încărcare „consumă” doi pini, pinii 0 și 1 sunt rezervați (Tx / Rx) pentru serial și pinii 8 și 10 sunt rezervați pentru canalul SPI care conectează ecranul TLE94112LE.

Starea sistemului

Software-ul de control funcționează prin patru stări diferite, definite în filament.h:

#define SYS_READY "Ready" // Sistemul este gata

#define SYS_RUN "Running" // Filament în uz #define SYS_LOAD "Load" // Roll încărcat #define SYS_STARTED "Started" // Aplicația a început // Coduri de stare #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Stare: Început

Această stare apare după o resetare hardware sau când sistemul este pornit. Apelul de pornire (și configurare () când începe schița) inițializează valorile implicite interne și ar trebui să înceapă fără greutate suplimentară pe platformă, deoarece parte a secvenței de inițializare este achiziționarea tarei absolute pentru a atinge greutatea zero fizică.

Stare: gata

Starea gata apare după o resetare soft (trimisă de la terminalul serial). Este similar cu rezectul fizic, dar nu se calculează nicio tare; comanda de resetare poate fi lansată și atunci când sistemul rulează.

Stare: Încărcare

Starea de încărcare apare atunci când comanda de încărcare este trimisă de terminal. Aceasta înseamnă că rola de filament a fost încărcată și tara dinamică a fost calculată. Greutatea exactă a filamentului se obține prin tipul de setare a rolei, scăzând greutatea unității motor și a rolei goale.

Stare: Rularea

Această stare permite calcularea automată a greutății și distribuitorul automat de filamente.

Mesaje terminale

Versiunea actuală a software-ului returnează la terminal mesaje lizibile de către oameni, în funcție de comenzi. Mesajele șir sunt definite în două fișiere antet: comenzi.h (mesaje și răspunsuri legate de comandă) și filament.h (șiruri utilizate de parser pentru a crea mesaje compuse).

Comenzi

Două fișiere diferite sunt implicate în gestionarea comenzilor: comenzi.h incluzând toate comenzile și parametrii asociați și filament.h incluzând toate constantele și definițiile utilizate de sistemul de ponderare și de analizor.

În timp ce calculele interne sunt efectuate automat de software, am implementat o serie de comenzi pentru a seta comportamentul sistemului și pentru a controla manual unii parametri.

Cuvintele cheie de comandă sunt sensibile la majuscule și minuscule și trebuie trimise doar de la terminal. Dacă o comandă nu este adecvată pentru starea curentă a acesteia nu este recunoscută, se returnează un mesaj de comandă greșit, altfel comanda este executată.

Comenzi de stare

Schimbați starea curentă a sistemului și comportamentul este adaptat, de asemenea

Comenzi filament

Folosind comenzi separate, este posibil să configurați caracteristicile filamentului și ruloului pe baza celei mai comune greutăți și dimensiuni disponibile astăzi pe piață

Comenzi Unități

Acestea sunt câteva comenzi pentru a seta vizualizarea unităților de măsură în grame sau centimetri. De fapt, este posibil să eliminați aceste comenzi și să reprezentați întotdeauna date în ambele unități.

Comenzi de informații

Afișați grupuri de informații în funcție de starea sistemului

Comenzi motor

Controlați motorul pentru alimentarea sau tragerea filamentului.

Toate comenzile motorului urmează o cale de accelerare / decelerare. Cele două comenzi feed and pull execută o scurtă secvență definită în motor.h de constanta FEED_EXTRUDER_DELAY în timp ce comenzile feedc și pullc rulează la nesfârșit până când nu este recepționată o comandă stop.

Comenzi în modul de rulare

Starea de rulare acceptă două moduri; modul om tocmai a citit periodic greutatea și motorul se deplasează până când nu este trimisă o comandă de control al motorului. Modul auto execută în schimb două comenzi de alimentare atunci când extruderul are nevoie de mai mult filament.

Principiul se bazează pe citirile de greutate, contextualizate la acest mediu special. Ne așteptăm ca consumul de filament să fie relativ lent, imprimantele 3D sunt aproape lente, iar oscilațiile normale ale greutății depind de vibrațiile mediului (mai bine dacă nu puneți toate lucrurile pe imprimanta 3D)

Când extruderul trage filamentul, diferența de greutate crește dramatic (50 g sau mai mult) în foarte puțin timp, de obicei între două sau trei citiri. Aceste informații sunt filtrate de software-ul care „deduce” că este necesar un nou filament. Pentru a evita citirile greșite, variațiile de greutate în timp ce motorul funcționează sunt ignorate deloc.

Logica aplicației

Logica aplicației este distribuită în.ino main (schița Arduino) de-a lungul a trei funcții: setup (), loop () și parseCommand (commandString)

Schița utilizează două clase separate: Clasa FilamentWeight pentru a gestiona toate calculele filamentului și citirea senzorilor prin intermediul clasei IC HX711 și MotorControl interfațând metodele de nivel scăzut ale ecranului TLE94112LE Arduino.

înființat()

Lansat o dată când la pornire sau după o resetare hardware inițializați instanțele claselor, configurați hardware-ul și comunicația terminalului.

buclă()

Funcția buclă principală gestionează trei condiții diferite.

Deși există două clase pentru senzori de greutate și motoare relativ complexe, există avantajul că schița rezultată este foarte ușor de înțeles și de gestionat.

  1. Verificați (în modul automat) dacă extruderul are nevoie de mai mult filament
  2. Dacă motorul funcționează, verificați dacă există erori hardware (returnate de TLE94112LE)
  3. Dacă există date de serie disponibile, analizați comanda

parseCommand (commandString)

Verificarea funcției de analiză pentru șirurile provenite din serial și atunci când o comandă este recunoscută, este procesată imediat.

Fiecare comandă acționează ca o mașină de stare care afectează un parametru al sistemului; urmând această logică, toate comenzile sunt reduse la trei acțiuni secvențiale:

  1. Trimiteți o comandă la clasa FilamentWeight (comenzi de greutate) sau la clasa MotorControl (comenzi la motor)
  2. Execută un calcul pentru actualizarea valorilor de greutate sau actualizarea unuia dintre parametrii interni
  3. Afișați pe terminal și ieșirea informațiilor la finalizarea executării

Instalați biblioteca HX711 Arduino, descărcați software-ul de pe GitHub și încărcați-l pe placa Arduino, apoi bucurați-vă!

Recomandat: