Sadržaj:

CNC ploter za bubnjeve: 13 koraka (sa slikama)
CNC ploter za bubnjeve: 13 koraka (sa slikama)

Video: CNC ploter za bubnjeve: 13 koraka (sa slikama)

Video: CNC ploter za bubnjeve: 13 koraka (sa slikama)
Video: 10 Best Arduino Projects On Instructables 2024, Studeni
Anonim
Image
Image
CNC ploter za bubnjeve
CNC ploter za bubnjeve

Ova instrukcija opisuje ploter A4/A3 napravljen od dijela plastične cijevi, dva koračna motora BYJ-48 i servo SG-90. U biti, to je ploter s ravnim krevetima smotan u bubanj.

Jedan motor okreće bubanj, a drugi pomiče ispisnu glavu. Servo se koristi za podizanje i spuštanje olovke.

Ovaj ploter ima niz prednosti u odnosu na tradicionalni ploter ploter:

  • znatno manji otisak
  • potrebna je samo jedna linearna vodilica
  • jednostavan za izgradnju
  • jeftino

Ugrađeni tumač prihvaća gcode izlaz iz Inkscapea.

Komunikacija s ploterom odvija se putem bluetooth veze.

Ploter je kompatibilan s CNC grafičkim tabletom opisanim u mojim uputama

Iako nije precizan instrument, točnost ovog plotera je zadovoljavajuća za namjeravanu svrhu prenošenja obrisa akvarela na papir.

Korak 1: Krug

Krug
Krug

Krug se sastoji od Arduino UNO R3 mikrokontrolera i prilagođenog štita na koji su montirane diskretne komponente. Napajanje se vrši putem vanjskog regulatora od 1 volti od 1 volta. Prosječna struja je oko 500mA.

Koračni motori BYJ-48 priključeni su na PORTB (pinovi D8, D9, D10, D11) i PORTC (pinovi A0, A1, A2, A3). Servo za podizanje olovke SG-90 pričvršćen je na pin D3.

Otpornici od 560 ohma, koji se mogu izostaviti, pružaju mjeru zaštite od kratkog spoja arduinu u slučaju da nešto pođe po zlu. Također olakšavaju ožičenje štita jer djeluju kao "skakači" preko opskrbnih tračnica.

Otpornici 1k2 i 2K2 sprječavaju oštećenje HC-06 bluetooth modula [1] spuštanjem 5 voltnog izlaza s arduina na 3,3 volta.

[1] Isključite bluetooth modul HC-06 prilikom postavljanja koda na arduino putem USB priključka. Time ćete izbjeći sukobe serijskog porta.

Korak 2: Linearni pogon

Linearni pogon
Linearni pogon
Linearni pogon
Linearni pogon
Linearni pogon
Linearni pogon

Linearni pogon izrađen je od aluminijske šipke duljine 3 mm x 32 mm, trake od aluminijskog lima i četiri male remenice s kugličnim ležajevima.

Aluminij je dostupan u većini prodavaonica hardvera. U624ZZ remenice U-utora 4x13x7 mm dostupne su na

Jednostavni ručni alati su sve što vam je potrebno. Izrežite aluminijsku šipku tako da odgovara vašim dimenzijama plotera.

Sklop motora

Montirajte koračni motor BJY-48 kroz šipku na jednom kraju i pričvrstite zupčanik GT2 20, otvor od 5 mm, remenicu na osovinu motora. Sada montirajte drugu remenicu GT2 na drugi kraj šipke tako da se remenica može slobodno okretati. Za to sam upotrijebio cijevni (radijski) odstojnik promjera 5 mm i vijak od 3 mm.

Sada oko remenica obmotite duljinu razvodnog remena GT2. Krajeve zupčastog remena spojite pomoću poluvrtanja tako da se zubi isprepleću i učvršćuju vezicom za kabel.

Na kraju kabelskom vezicom pričvrstite sklop nosača na razvodni remen.

Sklop kočije

Sklop kolica izrađen je od trake od aluminijskog lima [1] na koju su pričvršćene remenice U624ZZ. Ako je potrebno, podloškom od 4 mm odvojite remenice od aluminijskog lima.

Remenice, koje imaju utor od 4 mm, leže na vrhu i na dnu aluminijske šipke tako da nema okomitog pomicanja, ali se aluminijska traka slobodno kreće lijevo i desno.

Kako biste osigurali nesmetano kretanje kolica, prvo postavite dvije gornje remenice, a zatim s remenicama koje sjede na šipci označite položaje dvaju donjih remenica. Sada se mogu izbušiti rupe za ove dvije remenice. Najprije upotrijebite malu "pilot" bušilicu kako biste spriječili da veća 4mm bušilica ne zanese.

Prije savijanja aluminijske trake u "U", izbušite gornju i donju rupu koja odgovara vašem promjeru olovke. Sada dovršite zavoje.

Pričvrstite razvodni remen na nosač pomoću kabelske vezice i vijka od 3 mm između gornje dvije remenice.

Sklop za podizanje olovke

Pričvrstite servo SG-90 na vrh nosača pomoću jedne ili dvije kabelske vezice.

Bacite olovku niz dvije rupe koje ste izbušili. Pazite da olovka slobodno klizi gore -dolje.

Pričvrstite "ogrlicu" na olovku tako da olovka bude samo dalje od bubnja kada je servo u položaju za podizanje olovke.

[1] Aluminij se može rezati tako da se oštrim nožem (nožem za rezanje kutija) režu obje strane lista, a zatim se savijanje savije preko ruba stola. Nekoliko se vrckanja i plahte će slomiti ostavljajući ravno lom. Za razliku od kositra, ova metoda ne lomi aluminij.

Korak 3: Bubanj

Bubanj
Bubanj
Bubanj
Bubanj
Bubanj
Bubanj

Bubanj sadrži dio plastične cijevi s dva drvena čepa [1].

Upotrijebite kompas, postavljen na unutarnji radijus cijevi, kako biste nacrtali obrise krajnjeg utikača. Sada izrežite svaki obris pomoću fine pile ("suočavanje", "fret"), a zatim prilagodite svaki krajnji čep uz pomoć drvene rašpe. Pričvrstite krajnje čepove malim vijcima za drvo.

Inženjerski vijak od 6 mm kroz središte svakog čepa čini osovinu.

Dimenzije bubnja

Dimenzije bubnja određuju se veličinom papira. Promjer bubnja od 100 mm podržava A4 portret i A3 pejzaž. Promjer bubnja od 80 mm podržavat će samo krajolik formata A4. Upotrijebite što manji promjer bubnja za smanjenje inercije … motori BYJ-48 su samo mali.

Promjer bubnja od 90 mm idealan je za A4 portretni i A3 pejzažni papir jer se suprotni rubovi, kad su omotani oko bubnja, preklapaju za otprilike 10 mm, što znači da morate zalijepiti samo jedan šav.

Rotiranje bubnja

Svaka osovina prolazi kroz aluminijski završni držač tako da se bubanj može slobodno okretati. Krajnji plovak spriječen je pomoću GT-2, 20 zubaca, 6 mm provrta, remenice pričvršćene na osovinu na jednom kraju. Kontinuirani razvodni remen GT-2 povezuje koračni motor BJY-48 s bubnjem. Za motor je potrebna remenica s promjerom otvora 5 mm.

[1] Plastični čepovi dostupni su za većinu promjera cijevi, ali su odbijeni jer pristaju preko cijevi, a ne iznutra, a plastika se savija. Vjerojatno bi bilo u redu da se umjesto vijaka koristi kontinuirana osovina … ali tada trebate neki način pričvršćivanja osovine na krajnje utikače.

Korak 4: Savjeti za izgradnju

Pazite da olovka ide po sredini bubnja. To se može postići izrezivanjem uglova iz drvenih nosača. Ako olovka nije centrirana, klizit će prema dolje sa strane bubnja.

Precizno bušenje dviju rupa za olovke važno je. Svako njihanje u vodilici olovke ili nosaču uzrokovat će ljuljanje duž osi X.

Nemojte previše zatezati zupčaste remene GT-2 … samo ih treba zategnuti. Koračni motori BYJ-48 nemaju veliki okretni moment.

Koračni motori BJY-48 često pokazuju male količine zazora koji su beznačajni duž osi X, ali zabrinjavaju kada se radi o osi Y. Razlog tome je što se jedna rotacija motora Y-osi izjednačuje s jednom rotacijom bubnja, dok nosač olovke zahtijeva mnogo okretaja motora X-osi kako bi prešao duljinu bubnja. Svaki zazor na osi Y može se ukloniti održavanjem konstantnog zakretnog momenta na bubnju. Jednostavna metoda je pričvršćivanje male težine na najlonsku vrpcu omotanu oko bubnja.

Korak 5: Bresenhamov algoritam za crtanje linija

Bresenhamov algoritam za crtanje linija
Bresenhamov algoritam za crtanje linija
Bresenhamov algoritam za crtanje linija
Bresenhamov algoritam za crtanje linija

Ovaj ploter koristi optimiziranu verziju [1] Bresenhamovog algoritma za crtanje linija. Nažalost, ovaj algoritam vrijedi samo za nagibe linija koji su manji ili jednaki 45 stupnjeva (tj. Jedan oktant kruga).

Da bih zaobišao ovo ograničenje, "preslikavam" sve XY ulaze u prvi "oktant", a zatim ih "poništavam" kada dođe vrijeme za crtanje. Funkcije preslikavanja ulaza i izlaza za to su prikazane na gornjem dijagramu.

Izvođenje

Ostatak ovog koraka može se izostaviti ako ste upoznati s Bresenhamovim algoritmom.

Povucimo crtu od (0, 0) do (x1, y1) gdje:

  • x1 = 8 = vodoravna udaljenost
  • y1 = 6 = okomita udaljenost

Jednadžba za ravnu liniju koja prolazi kroz ishodište (0, 0) dana je jednadžbom y = m*x gdje je:

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

Jednostavan algoritam

Jednostavan algoritam za iscrtavanje ove linije je:

  • int x1 = 8;
  • int y1 = 6;
  • plovak m = y1/x1;
  • nacrt (0, 0);
  • za (int x = 1; x <= x1; x ++) {
  • int y = okruglo (m*x);
  • parcela (x, y);
  • }

Tablica 1: Jednostavan algoritam

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

S ovim jednostavnim algoritmom postoje dva problema:

  • glavna petlja sadrži sporo množenje
  • koristi brojeve s pomičnim zarezom koji su također spori

Grafikon y u odnosu na x za ovu liniju prikazan je gore.

Bresenhamov algoritam

Bresenham je uveo koncept pojma greške 'e' koji je inicijaliziran na nulu. Shvatio je da se vrijednosti m*x prikazane u tablici 1 mogu dobiti uzastopnim dodavanjem 'm' u 'e'. Dalje je shvatio da se y povećava samo ako je razlomljeni dio m*x veći od 0,5. Kako bi njegova usporedba bila unutar raspona 0 <= 0,5 <= 1, on oduzima 1 od 'e' kad god se y poveća.

  • int x1 = 8;
  • int y1 = 6;
  • plovak m = y1/x1;
  • int y = 0;
  • float e = 0;
  • nacrt (0, 0);
  • za (int x = 1; x <= x1; x ++) {
  • e+= m;
  • ako je (e> = 0,5) {
  • e -= 1;
  • y ++;
  • }
  • parcela (x, y);
  • }

Tablica 2: Bresenhamov algoritam

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

Ako proučite algoritam i tablicu 2, primijetit ćete da;

  • glavna petlja koristi samo zbrajanje i oduzimanje … nema množenja
  • uzorak za y je isti kao i za tablicu 1.

Ali još uvijek koristimo brojeve s pomičnim zarezom … popravimo ovo.

Bresenhamov (optimizirani) algoritam

Bresenhamov algoritam s pomičnim zarezom može se pretvoriti u cjelobrojni oblik ako mjerimo 'm' i 'e' za 2*x1 u tom slučaju m = (y1/x1)*2*x1 = 2*y1

Osim skaliranja 'm' i 'e' algoritam je sličan onome gore, osim:

  • dodajemo 2*y1 u 'e' svaki put kad povećamo 'x"
  • povećavamo y ako je e jednako ili veće od x1.
  • oduzimamo 2*x1 od 'e' umjesto 1
  • Za usporedbu se koristi x1 umjesto 0,5

Brzina algoritma može se dodatno povećati ako petlja koristi nulu za test. Da bismo to učinili, moramo dodati pomak pojmu greške 'e'.

  • int x1 = 8;
  • int y1 = 6;
  • int m = (y1 << 1); // konstanta: nagib skaliran za 2*x1
  • int E = (x1 << 1); // konstanta: 2*x1 za upotrebu u petlji
  • int e = -x1; // pomak od -E/2: test je sada obavljen na nuli
  • nacrt (0, 0);
  • int y = 0;
  • za (x = 1; x <= x1; x ++) {
  • e += m;
  • ako je (e> = x1) {
  • e -= E
  • y ++;
  • }
  • parcela (x, y);
  • }

Tablica 3: Bresenhamov (optimizirani) algoritam

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

Još jednom je uzorak za y isti kao u ostalim tablicama. Zanimljivo je napomenuti da tablica 3 sadrži samo cijele brojeve i da omjer m/E = 12/16 = 0,75 što je nagib 'm' linije.

Ovaj je algoritam iznimno brz jer glavna petlja uključuje samo zbrajanje, oduzimanje i usporedbu s nulom. Množenje se ne koristi osim kada inicijaliziramo vrijednosti za 'E' i 'm' pomoću "pomaka ulijevo" da udvostručimo vrijednosti x1 i y1.

[1] Ova optimizirana verzija Bresenhamovog algoritma potječe iz rada "Bresenhamovo crtanje crteža i krugova", autorsko pravo © 1994-2006, W Randolph Franklin (WRF). Njegov se materijal može koristiti za neprofitna istraživanja i obrazovanje, pod uvjetom da mu date kredit i povežete se na njegovu početnu stranicu,

Korak 6: Kôd

Preuzmite priloženu datoteku u mapu s istim imenom, a zatim je prenesite na ploter koristeći svoj arduino IDE (integrirano razvojno okruženje).

Prije pokušaja učitavanja isključite HC-06 bluetoorh modul. To je potrebno kako bi se izbjegao sukob serijskog porta s USB kabelom.

Kodeks treće strane

Osim gore navedenog.ino koda, trebat će vam sljedeći besplatni softverski paketi / donatorska oprema:

  • Teraterm dostupan je na
  • Inkscape koji je dostupan na

Upute za instaliranje i korištenje svakog od gore navedenih paketa trećih strana mogu se pronaći u mom članku

Korak 7: Izbornik

Jelovnik
Jelovnik

Uspostavite bluetooth vezu s vašim ploterom koristeći "Teraterm".

Uključite "caps lock" jer su sve naredbe napisane velikim slovima.

Upišite slovo 'M' i izbornik bi se trebao pojaviti kao što je prikazano gore.

Jelovnik je razumljiv sam po sebi:

  • M (ili M0) otvara izbornik
  • G0 omogućuje slanje olovke na određenu koordinatu XY s podignutom olovkom.
  • G1 vam omogućuje slanje olovke na određenu koordinatu XY sa spuštenom olovkom.
  • T1 vam omogućuje da postavite olovku iznad koordinate 0, 0. Upišite 'E' za izlaz.
  • T2 vam omogućuje da povećate crtež. Na primjer, "T2 S2.5" će skalirati vaš crtež za 250%. Zadana ljestvica je 100%
  • T3 i T4 omogućuju vam podizanje ili spuštanje olovke.
  • T5 crta "ABC" test uzorak.
  • T6 izvlači "metu".
  • T7 crta skup radijalnih linija čija je svrha provjeriti radi li Bresenhamov algoritam u svakom od osam "oktanata"

Bilješke:

  • svi pokreti olovke koriste ljestvicu crteža postavljenu pomoću opcije izbornika T2
  • brojevi "17:" i "19:" su kodovi rukovanja terminala "Xon" i "Xoff" iz tumača arduino.

Korak 8: Kalibracija

Vrijednosti za X_STEPS_PER_MM i Y_STEPS_PER_MM odnose se na bubanj promjera 90 mm.

Vrijednosti za druge promjere bubnja mogu se izračunati pomoću sljedećih odnosa:

  • opseg bubnja ima promjer PI*
  • 2048 koraka jednako je jednom okretaju svake osovine motora
  • jedan okret remenice GT-2 jednak je linearnom pomicanju razvodnog remena od 40 milimetara

Druga metoda je unos sljedećih naredbi,

  • G1 X0 Y100
  • G1 X100 Y100

zatim izmjerite duljinu rezultirajućih redaka i "skalirajte" vrijednosti za X-STEPS_PER_MM i Y_STEPS_PER_MM

Korak 9: Gcode predprocesiranje

Gcode predprocesiranje
Gcode predprocesiranje
Gcode predprocesiranje
Gcode predprocesiranje

Ovaj crtač zahtijeva samo četiri Inkscape g koda (naime: G0, G1, G2, G3). Kôd će se izvršiti znatno brže ako uklonimo sve nepotrebne gkodove i komentare.

Da biste to učinili, potrebna vam je kopija "Notepad ++". Ovaj besplatni uređivač teksta sadrži tražilicu "regular izraz" za pronalaženje i uklanjanje neželjenog teksta. Notepad ++ dostupan je na

Otvorite datoteku koju želite izmijeniti pomoću programa Notepad ++ i postavite kursor na vrh datoteke.

Odaberite "Prikaz/prikaz simbola/svi znakovi", a zatim "Traži/zamijeni …" na gornjoj traci izbornika.

Kliknite potvrdni okvir "Regular Expression" (pogledajte 1. sliku) i unesite svaki od sljedećih kodova u okvir za pretraživanje.

Kliknite "Zamijeni sve" nakon svakog unosa:

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

Gore navedeni regularni izrazi uklanjaju sve simbole %, sve komentare prikazane u zagradama, sve M kodove, sve Z kodove i kodove koji slijede.

Sada kliknite potvrdni okvir "Prošireni izraz" (vidi drugu sliku) i unesite sljedeći kodni niz:

r / n / r / n / r / n

Ovaj izraz uklanja neželjene povratne prijenose i unose redaka stvorene prvim nizom.

Spremite datoteku pod drugim imenom pomoću "Spremi kao".

Gotovo.

Korak 10: Rezultati

Rezultati
Rezultati

Ovaj ploter napravljen je kao "dokaz koncepta" i nikada nije namjeravao biti savršen. Rekavši da rezultati nisu loši. Definitivno ispunjavaju moj dizajnerski cilj prenošenja obrisa akvarela na papir.

Prve tri slike su ugrađeni testni uzorci T5, T6, T7.

"Hello World!" uzorak je poslan na ploter putem bluetootha. U privitku se nalazi "unaprijed obrađena" kopija ove datoteke.

Korak 11: Ažuriranje koda

Ažuriranje koda
Ažuriranje koda

Kôd za ovaj ploter je ažuriran na Drum_Plotter_V2.ino.

Promjene u odnosu na izvorni Drum_Plotter.ino uključuju:

  • glatko pozicioniranje olovke
  • sada prepoznaje G02 upute za gcode (lukovi u smjeru kazaljke na satu)
  • sada prepoznaje G03 upute za gcode (lukovi suprotni od kazaljke na satu)

Priloženi dijagram prikazuje moju metodu izračuna lučnog kuta.

Korak 12: Drum_plotter_v3.ino

Priloženo je ažuriranje koda za "CNC ploter za bubnjeve".

"drum_plotter_v3.ino" popravlja manju grešku koja je utjecala na točnost plotera.

Promijenite povijest

Verzija 2:

Dodane bi-lučne krivulje

Verzija 3:

Sljedeće su funkcije prepisane radi rješavanja manje greške koja je utjecala na točnost plotera.

  • (int) zamijenjeno s round () u funkciji move_to ().
  • draw_line () funkcija "oktantan" algoritam pretraživanja poboljšan
  • Tumač sada koristi nizove, a ne pokazivače, što pojednostavljuje dizajn. Na primjer, sada možemo tražiti "MENU", a ne tražiti slovo "M", a zatim izdvojiti cijeli broj koji slijedi. To vam omogućuje personalizaciju plotera vlastitim naredbama.

Korak 13: Drum_plotter_plotter_v4.ino

16. siječnja 2017.:

Kod za ovaj ploter bubnja dodatno je optimiziran. Dodane su dodatne značajke.

Promjene uključuju:

  • brži algoritam draw_line ()
  • podudaranje funkcije move_to ()
  • brojači koraka
  • ispravak manjih grešaka

Za dodatne pojedinosti pročitajte komentare unutar "drum_plotter_v4.ino" u privitku.

Kliknite ovdje da biste vidjeli moje ostale upute.

Preporučeni: