Cuprins:

Plotter de tambur CNC: 13 pași (cu imagini)
Plotter de tambur CNC: 13 pași (cu imagini)

Video: Plotter de tambur CNC: 13 pași (cu imagini)

Video: Plotter de tambur CNC: 13 pași (cu imagini)
Video: How to make mini CNC plotter 2D using scrap DVD 2024, Noiembrie
Anonim
Image
Image
Plotter de tambur CNC
Plotter de tambur CNC

Acest instructabil descrie un plotter A4 / A3 realizat dintr-o secțiune de țeavă de plastic, două motoare pas cu pas BYJ-48 și un servo SG-90. În esență, este un plotter cu pat plat înfășurat într-un tambur.

Un motor rotește tamburul în timp ce celălalt mișcă capul de imprimare. Servo-ul este folosit pentru ridicarea și coborârea stiloului.

Acest plotter are o serie de avantaje față de un plotter tradițional plat:

  • amprentă semnificativ mai mică
  • necesită doar o singură șină de ghidare liniară
  • simplu de construit
  • ieftin

Un interpret de bord acceptă ieșirea gcode de la Inkscape.

Comunicarea cu plotterul se face printr-un link bluetooth.

Plotterul este compatibil cu tableta grafică CNC descrisă în

Deși nu este un instrument de precizie, acuratețea acestui plotter este satisfăcătoare pentru scopul intenționat de a transfera contururile de acuarelă pe hârtie.

Pasul 1: Circuitul

Circuitul
Circuitul

Circuitul cuprinde un microcontroler Arduino UNO R3 și un ecran personalizat pe care sunt montate componentele discrete. Puterea se aplică printr-un regulator extern de 5 volți și 1 amp. Curentul mediu este de aproximativ 500mA.

Motoarele pas cu pas BYJ-48 sunt atașate la PORTB (pinii D8, D9, D10, D11) și PORTC (pinii A0, A1, A2, A3). Servomotoarul SG-90 este fixat la pinul D3.

Rezistențele de 560 ohmi, care pot fi omise, oferă o măsură de protecție împotriva scurtcircuitului arduino în cazul în care ceva nu merge bine. De asemenea, facilitează conectarea scutului, deoarece acționează ca „jumperi” peste șinele de alimentare.

Rezistoarele 1k2 și 2K2 previn deteriorarea modulului bluetooth HC-06 [1] prin scăderea ieșirii de 5 volți de la arduino până la 3,3 volți.

[1] Deconectați modulul bluetooth HC-06 atunci când încărcați codul pe arduino prin portul USB. Acest lucru va evita orice conflict de port serial.

Pasul 2: Unitatea liniară

Unitatea liniară
Unitatea liniară
Unitatea liniară
Unitatea liniară
Unitatea liniară
Unitatea liniară

Unitatea liniară este realizată dintr-o lungime de bare de aluminiu de 3 mm x 32 mm, o bandă de tablă de aluminiu și patru scripeți cu rulmenți cu bile mici.

Aluminiu este disponibil de la majoritatea magazinelor de hardware. Role U624ZZ 4x13x7mm în canelură U sunt disponibile de la

Uneltele manuale simple sunt tot ceea ce aveți nevoie. Tăiați bara de aluminiu pentru a se potrivi dimensiunilor dvs. de plotter.

Ansamblul motorului

Montați motorul pas cu pas BJY-48 prin bară la un capăt și atașați un scripete GT2 20, alezaj de 5 mm, la arborele motorului. Acum montați o altă scripete GT2 la celălalt capăt al barei, astfel încât scripetele să poată roti liber. Am folosit un distanțier tubular (radio) de 5 mm diametru și un șurub de 3 mm pentru a realiza acest lucru.

Acum buclați o lungime de curea de distribuție GT2 în jurul scripetelor. Alăturați capetele curelei de distribuție printr-o jumătate de răsucire, astfel încât dinții să se intercaleze și să se fixeze cu o legătură de cablu.

În cele din urmă atașați ansamblul căruciorului la cureaua de distribuție cu o legătură pentru cablu.

Trăsura se adună

Ansamblul căruciorului este realizat dintr-o fâșie de tablă de aluminiu [1] pe care sunt fixate scripetele U624ZZ. Dacă este necesar, utilizați o mașină de spălat de 4 mm pentru a distanța fuliile de pe foaia de aluminiu.

Scripetele, care au o canelură de 4 mm, traversează partea superioară și inferioară a barei de aluminiu astfel încât să nu existe mișcare verticală, însă banda de aluminiu se mișcă liber la stânga și la dreapta.

Pentru a vă asigura că trăsura funcționează liber, montați mai întâi cele două scripeți superioare apoi, cu scripetele așezate pe bară, marcați pozițiile celor două scripeți inferioare. Găurile pentru aceste două scripeți pot fi acum găurite. Folosiți mai întâi un burghiu mic „pilot” pentru a împiedica derivarea burghiului mai mare de 4 mm.

Înainte de a îndoi banda de aluminiu într-un "U", găuriți o gaură în partea de sus și de jos pentru a se potrivi cu diametrul stiloului dvs. Acum finalizează coturile.

Atașați cureaua de distribuție la ansamblul căruciorului cu ajutorul unei legături de cablu și a unui șurub de 3 mm între cele două scripeți superioare.

Ansamblul pen-lift

Atașați un servo SG-90 la partea superioară a ansamblului căruciorului utilizând una sau două legături de cablu.

Aruncați stiloul pe cele două găuri pe care le-ați forat. Asigurați-vă că pixul alunecă liber în sus și în jos.

Fixați un „guler” de stilou astfel încât stiloul să fie clar de tambur atunci când servo-ul este în poziția creion.

[1] Aluminiu poate fi tăiat prin marcarea ambelor părți ale foii cu un cuțit ascuțit (tăietor de cutii), apoi flexarea tăieturii peste marginea unei mese. Câteva clătinări și foaia se vor rupe, lăsând o pauză dreaptă. Spre deosebire de tăieturi, această metodă nu îndoaie aluminiu.

Pasul 3: Tamburul

Tamburul
Tamburul
Tamburul
Tamburul
Tamburul
Tamburul

Tamburul cuprinde o secțiune de țeavă de plastic cu două dopuri din lemn [1].

Utilizați o busolă, setată pe raza interioară a țevii, pentru a desena contururile dopului final. Acum, tăiați în jurul fiecărui contur folosind un ferăstrău cu lamă fină („coping”, „fret”), apoi personalizați fiecare dop de capăt cu ajutorul unei râpe de lemn. Fixați dopurile de capăt folosind șuruburi mici pentru lemn contracuvat.

Un șurub tehnic de 6 mm prin centrul fiecărui dop de capăt formează axa.

Dimensiuni tambur

Dimensiunile tamburului sunt determinate de dimensiunea hârtiei. Un diametru al tamburului de 100 mm acceptă portretul A4 și peisajul A3. Un diametru al tamburului de 80 mm va suporta doar peisajul A4. Utilizați un diametru de tambur cât mai mic posibil pentru a reduce inerția … motoarele BYJ-48 sunt doar mici.

Un diametru al tamburului de 90 mm este ideal pentru hârtia de portret A4 și A3 ca margini opuse, atunci când este înfășurat în jurul tamburului, se suprapun cu aproximativ 10 mm, ceea ce înseamnă că aveți o singură cusătură pentru a fixa banda.

Rotirea tamburului

Fiecare axă trece printr-un suport de capăt din aluminiu, astfel încât tamburul să poată roti liber. Flotorul final este prevenit cu ajutorul unui GT-2, 20 dinți, alezaj de 6 mm, fulie fixată pe ax la un capăt. O curea de distribuție continuă GT-2 leagă motorul pas cu trepte BJY-48 de tambur. Motorul necesită o scripete cu alezaj de 5 mm.

[1] Dopurile din plastic sunt disponibile pentru majoritatea diametrelor țevii, dar au fost respinse deoarece se potrivesc peste țeavă, mai degrabă decât în interior, iar plasticul tinde să se flexeze. Probabil că ar fi în regulă dacă ar fi folosită o axă continuă în locul șuruburilor … dar atunci aveți nevoie de o metodă de fixare a axei la mufele de capăt.

Pasul 4: Sfaturi de construcție

Asigurați-vă că stiloul se deplasează de-a lungul centrului tamburului. Acest lucru se poate realiza prin tăierea colțurilor de pe suporturile din lemn. Dacă stiloul este descentrat, acesta va tinde să alunece pe partea laterală a tamburului.

Este importantă găurirea precisă a celor două găuri ale stiloului. Orice oscilație din ghidajul stiloului sau ansamblul căruciorului va provoca oscilații de-a lungul axei X.

Nu strângeți excesiv curele de distribuție GT-2 … trebuie doar să fie încordate. Motoarele pas cu pas BYJ-48 nu au prea mult cuplu.

Motoarele pas cu pas BJY-48 prezintă adesea cantități mici de reacție care este nesemnificativă de-a lungul axei X, dar este îngrijorătoare atunci când vine vorba de axa Y. Motivul pentru aceasta este că o rotație a motorului axei Y echivalează cu o rotație a tamburului, în timp ce suportul pentru stilou necesită multe rotații ale motorului axei X pentru a traversa lungimea tamburului. Orice reacție pe axa Y poate fi eliminată prin menținerea unui cuplu constant pe tambur. O metodă simplă este de a atașa o greutate mică la un cablu de nailon înfășurat în jurul tamburului.

Pasul 5: Algoritmul de desen liniar al lui Bresenham

Algoritmul de desenare a liniei lui Bresenham
Algoritmul de desenare a liniei lui Bresenham
Algoritmul de desenare a liniei lui Bresenham
Algoritmul de desenare a liniei lui Bresenham

Acest plotter folosește o versiune optimizată [1] a algoritmului de desen liniar al lui Bresenham. Din păcate, acest algoritm este valabil numai pentru pante de linie mai mici sau egale cu 45 de grade (adică un octant de cerc).

Pentru a depăși această limitare, "mapez" toate intrările XY la primul "octant", apoi le "decomprim" atunci când este timpul să trageți. Funcțiile de mapare de intrare și ieșire pentru a realiza acest lucru sunt prezentate în diagrama de mai sus.

Derivare

Restul acestui pas poate fi omis dacă sunteți familiarizat cu algoritmul lui Bresenham.

Să trasăm o linie de la (0, 0) la (x1, y1) unde:

  • x1 = 8 = distanță orizontală
  • y1 = 6 = distanță verticală

Ecuația pentru o linie dreaptă care trece prin origine (0, 0) este dată de ecuația y = m * x unde:

m = y1 / x1 = 6/8 = 0,75 = panta

Algoritm simplu

Un algoritm simplu pentru trasarea acestei linii este:

  • int x1 = 8;
  • int y1 = 6;
  • plutitor m = y1 / x1;
  • complot (0, 0);
  • for (int x = 1; x <= x1; x ++) {
  • int y = rotund (m * x);
  • complot (x, y);
  • }

Tabelul 1: Algoritm simplu

X m m * x y
0 0.75 0 0
1 0.75 0.75 1
2 0.75 1.5 2
3 0.75 2.25 2
4 0.75 3 3
5 0.75 3.75 4
6 0.75 4.5 5
7 0.75 5.25 5
8 0.75 6 6

Există două probleme cu acest algoritm simplu:

  • bucla principală conține o multiplicare care este lentă
  • folosește numere în virgulă mobilă, care este, de asemenea, lentă

Un grafic de y versus x pentru această linie este prezentat mai sus.

Algoritmul lui Bresenham

Bresenham a introdus conceptul unui termen de eroare „e” care este inițializat la zero. El a realizat că valorile m * x prezentate în tabelul 1 pot fi obținute prin adăugarea succesivă a „m” la „e”. El a realizat în plus că y este incrementat numai dacă partea fracțională a lui m * x este mai mare de 0,5. Pentru a-și păstra comparația în intervalul 0 <= 0.5 <= 1, el scade 1 din „e” ori de câte ori y este incrementat.

  • int x1 = 8;
  • int y1 = 6;
  • plutitor m = y1 / x1;
  • int y = 0;
  • plutitor e = 0;
  • complot (0, 0);
  • pentru (int x = 1; x <= x1; x ++) {
  • e + = m;
  • dacă (e> = 0,5) {
  • e - = 1;
  • y ++;
  • }
  • complot (x, y);
  • }

Tabelul 2: Algoritmul lui Bresenham

X m e e-1 y
0 0.75 0 0 0
1 0.75 0.75 -0.25 1
2 0.75 0.5 -0.5 2
3 0.75 0.25 2
4 0.75 1 0 3
5 0.75 0.75 -0.25 4
6 0.75 0.5 -0.5 5
7 0.75 0.25 5
8 0.75 1 0 6

Dacă examinați algoritmul și tabelul 2, veți observa acest lucru;

  • bucla principală folosește doar adunarea și scăderea … nu există multiplicare
  • modelul pentru y este același ca și pentru tabelul 1.

Dar folosim în continuare numere în virgulă mobilă … hai să reparăm acest lucru.

Algoritmul (optimizat) al lui Bresenham

Algoritmul în virgulă mobilă al lui Bresenham poate fi convertit într-o formă întreagă dacă scalăm „m” și „e” cu 2 * x1 caz în care m = (y1 / x1) * 2 * x1 = 2 * y1

În afară de scalarea „m” și „e”, algoritmul este similar cu cel de mai sus, cu excepția:

  • adăugăm 2 * y1 la „e” de fiecare dată când mărim „x”
  • mărim y dacă e este egal sau mai mare decât x1.
  • scădem 2 * x1 din „e” în loc de 1
  • x1 este utilizat pentru comparație în loc de 0,5

Viteza algoritmului poate fi crescută și mai mult dacă bucla folosește zero pentru test. Pentru a face acest lucru, trebuie să adăugăm un offset la termenul de eroare „e”.

  • int x1 = 8;
  • int y1 = 6;
  • int m = (y1 << 1); // constantă: panta scalată cu 2 * x1
  • int E = (x1 << 1); // constantă: 2 * x1 pentru utilizare în buclă
  • int e = -x1; // offset -E / 2: testul este acum făcut la zero
  • complot (0, 0);
  • int y = 0;
  • pentru (x = 1; x <= x1; x ++) {
  • e + = m;
  • dacă (e> = x1) {
  • e - = E
  • y ++;
  • }
  • complot (x, y);
  • }

Tabelul 3: Algoritmul (optimizat) al lui Bresenham

X m E e e - E y
0 12 16 -8 0
1 12 16 4 -12 1
2 12 16 0 -16 2
3 12 16 -4 2
4 12 16 8 -8 3
5 12 16 4 -12 4
6 12 16 0 -16 5
7 12 16 -4 5
8 12 16 8 -8 6

Din nou, modelul pentru y este același ca în celelalte tabele. Este interesant de observat că tabelul 3 conține numai numere întregi și că raportul m / E = 12/16 = 0,75 care este panta „m” a liniei.

Acest algoritm este extrem de rapid deoarece bucla principală implică doar adunarea, scăderea și o comparație cu zero. Înmulțirea nu este utilizată în afară de momentul în care inițializăm valorile pentru 'E' și 'm' folosind un „shift stânga” pentru a dubla valorile x1 și y1.

[1] Această versiune optimizată a algoritmului Bresenham provine dintr-o lucrare „Bresenham Line and Circle Drawing”, drept de autor © 1994-2006, W Randolph Franklin (WRF). Materialul său poate fi folosit pentru cercetare și educație non-profit, cu condiția să îl acreditați și să faceți legătura înapoi la pagina sa de pornire,

Pasul 6: Codul

Descărcați fișierul atașat într-un folder cu același nume, apoi încărcați-l în plotter folosind ID-ul dvs. arduino (mediu de dezvoltare integrat).

Deconectați modulul HC-06 bluetoorh înainte de a încerca încărcarea. Acest lucru este necesar pentru a evita un conflict de port serial cu cablul USB.

Codul terților

În plus față de codul.ino de mai sus, veți avea nevoie de următoarele pachete software care sunt gratuite / donare-ware:

  • Teraterm care este disponibil de pe
  • Inkscape care este disponibil de pe

Instrucțiunile pentru instalarea și utilizarea fiecăruia dintre pachetele terțe de mai sus pot fi găsite în articolul meu

Pasul 7: Meniu

Meniul
Meniul

Faceți o conexiune bluetooth cu plotterul dvs. folosind „Teraterm”.

Activați „blocarea majusculelor”, deoarece toate comenzile sunt cu majuscule.

Tastați litera „M” și un meniu ar trebui să apară așa cum se arată mai sus.

Meniul se explică în mod rezonabil:

  • M (sau M0) afișează meniul
  • G0 vă permite să trimiteți stiloul la o anumită coordonată XY cu stiloul ridicat.
  • G1 vă permite să trimiteți stiloul la o anumită coordonată XY cu stiloul coborât.
  • T1 vă permite să vă poziționați stiloul deasupra coordonatei 0, 0. Tastați „E” pentru a ieși.
  • T2 vă permite să vă scalați desenul. De exemplu, „T2 S2.5” va scări desenul cu 250%. Scara implicită este de 100%
  • T3 și T4 vă permit să ridicați sau să coborâți stiloul.
  • T5 desenează un model de testare „ABC”.
  • T6 desenează o „țintă”.
  • T7 trasează un set de linii radiale, al căror scop este de a verifica dacă algoritmul lui Bresenham funcționează în fiecare dintre cei opt „octanți”

Note:

  • toate mișcările stiloului utilizează scala de desen setată folosind opțiunea de meniu T2
  • numerele „17:” și „19:„ sunt codurile de strângere de mână ale terminalului „Xon” și „Xoff” de la interpretul arduino.

Pasul 8: Calibrare

Valorile pentru X_STEPS_PER_MM și Y_STEPS_PER_MM sunt pentru un tambur cu diametrul de 90 mm.

Valorile pentru alte diametre ale tamburului pot fi calculate utilizând următoarele relații:

  • circumferința tamburului are diametrul PI *
  • 2048 trepte echivalează cu o rotație a fiecărui arbore al motorului
  • o revoluție a unui scripete GT-2 echivalează cu 40 de milimetri mișcarea liniară a unei curele de distribuție

O altă metodă este să introduceți următoarele comenzi,

  • G1 X0 Y100
  • G1 X100 Y100

apoi măsurați lungimea liniilor rezultate și „scalați” valorile pentru X-STEPS_PER_MM și Y_STEPS_PER_MM

Pasul 9: Preprocesare Gcode

Preprocesare Gcode
Preprocesare Gcode
Preprocesare Gcode
Preprocesare Gcode

Acest plotter necesită doar patru coduri Inkscape gcodes (și anume: G0, G1, G2, G3). Codul se va executa mult mai repede dacă eliminăm toate codurile și comentariile inutile.

Pentru a face acest lucru, aveți nevoie de o copie a „Notepad ++”. Acest editor de text gratuit conține un motor de căutare „expresie regulată” pentru găsirea și eliminarea textului nedorit. Notepad ++ este disponibil de pe

Deschideți fișierul care urmează să fie modificat cu Notepad ++ și poziționați cursorul în partea de sus a fișierului.

Selectați „Vizualizare / Afișare simbol / Toate caracterele” urmat de „Căutare / Înlocuire …” din bara de meniu de sus.

Faceți clic pe caseta de selectare „Expresie regulată” (a se vedea prima imagine) și introduceți fiecare dintre următoarele secvențe de cod în caseta de căutare.

Faceți clic pe „Înlocuiți totul” după fiecare intrare:

  • %
  • (.*)
  • ^ M. * $
  • Z. * $

Expresiile regulate de mai sus elimină toate simbolurile%, toate comentariile afișate între paranteze, toate codurile M, toate codurile Z și codurile care urmează.

Acum faceți clic pe caseta de selectare „Expresie extinsă” (a se vedea a doua imagine) și introduceți următoarea secvență de cod:

r / n / r / n / r / n

Această expresie elimină retururile de transport și linii nedorite create de prima secvență.

Salvați fișierul cu un alt nume folosind „Salvare ca”.

Terminat.

Pasul 10: Rezultate

Rezultate
Rezultate

Acest plotter a fost construit ca „dovadă a conceptului” și nu a intenționat niciodată să fie perfect. Acestea fiind spuse că rezultatele nu sunt prea rele. Ei îndeplinesc cu siguranță obiectivul meu de proiectare de a transfera contururile de acuarelă pe hârtie.

Primele trei imagini sunt modelele de test încorporate T5, T6, respectiv T7.

„Hello World!” modelul a fost trimis plotterului prin Bluetooth. Este atașată o copie „preprocesată” a acestui fișier.

Pasul 11: Actualizare cod

Actualizare cod
Actualizare cod

Codul pentru acest plotter a fost actualizat la Drum_Plotter_V2.ino.

Modificările din versiunea originală Drum_Plotter.ino includ:

  • poziționare mai lină a stiloului
  • acum recunoaște instrucțiunile G02 gcode (arcuri în sensul acelor de ceasornic)
  • acum recunoaște instrucțiunile G03 gcode (arcuri în sens invers acelor de ceasornic)

Diagrama atașată prezintă metoda mea pentru calcularea unghiului arcului.

Pasul 12: Drum_plotter_v3.ino

Este atașată o actualizare de cod pentru „CNC Drum Plotter”.

„drum_plotter_v3.ino” remediază o eroare minoră care a afectat precizia plotterului.

Istoricul modificărilor

Versiunea 2:

S-au adăugat curbe bi-arc

Versiunea 3:

Următoarele funcții au fost rescrise pentru a aborda o eroare minoră care a afectat precizia plotterului.

  • (int) înlocuit cu round () în funcția move_to ().
  • Funcția draw_line () algoritm de căutare „octant” îmbunătățit
  • Interpretul folosește acum funcții de șir mai degrabă decât indicatoare, ceea ce simplifică proiectarea. De exemplu, acum putem căuta „MENIU”, mai degrabă decât să căutăm litera „M”, apoi să extragem numărul întreg care urmează. Acest lucru vă permite să personalizați plotterul cu propriile comenzi.

Pasul 13: Drum_plotter_plotter_v4.ino

16 ianuarie 2017:

Codul pentru acest plotter de tambur a fost optimizat în continuare. Au fost adăugate funcții suplimentare.

Modificările includ:

  • algoritm draw_line () mai rapid
  • potrivirea funcției move_to ()
  • contoare de trepte
  • remedierea erorilor minore

Pentru mai multe detalii, citiți comentariile din „drum_plotter_v4.ino” atașat.

Faceți clic aici pentru a vedea celelalte instructabile ale mele.

Recomandat: