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: Rotary encoder - sensor arrangement 2024, Novembar
Anonim
Image
Image
CNC ploter za bubnjeve
CNC ploter za bubnjeve

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

Jedan motor rotira bubanj, a drugi pomiče glavu za ispis. 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 konstrukciju
  • jeftino

Ugrađeni tumač prihvata gcode izlaz iz Inkscape-a.

Komunikacija s ploterom je putem bluetooth veze.

Kater je kompatibilan sa CNC grafičkim tabletom opisanim u mojim uputstvima

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

Korak 1: Krug

The Circuit
The Circuit

Krug se sastoji od Arduino UNO R3 mikrokontrolera i prilagođenog štita na koji su montirane diskretne komponente. Napajanje se vrši preko vanjskog regulatora od 5 volti 1 amp. 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 izlaza od 5 volti iz 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 dužine 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 sa U-utorom 4x13x7mm 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 5 mm, remenicu na osovinu motora. Sada montirajte drugu GT2 remenicu na drugi kraj vaše šipke tako da se remenica može slobodno okretati. Za to sam upotrijebio cijevni (radio) odstojnik promjera 5 mm i vijak od 3 mm.

Sada oko remenica obmotite dužinu razvodnog remena GT2. Krajeve zupčastog remena spojite pomoću poluvrtanja tako da se zubi isprepleću i fiksiraju vezicom za kabel.

Konačno pričvrstite nosač na razvodni remen pomoću vezice za kabel.

Sklop kolica

Nosač je napravljen 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 vertikalnog pomicanja, ali se aluminijska traka slobodno kreće lijevo i desno.

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

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 sklop nosača pomoću vezice za kablove i vijka od 3 mm između gornje dvije remenice.

Sklop za podizanje olovke

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

Spustite olovku niz dvije rupe koje ste izbušili. Uvjerite se da olovka slobodno klizi gore -dolje.

Pričvrstite "ogrlicu" na svoju olovku tako da olovka bude samo dalje od bubnja kada je servo u položaju pen-up.

[1] Aluminij se može rezati tako što ćete oštrim nožem (nožem za rezanje kutija) rezati obje strane lista, a zatim savijte rez preko ruba stola. Nekoliko kretanja i list će se slomiti ostavljajući pravi lom. Za razliku od kositra, ova metoda ne lomi aluminij.

Korak 3: Bubanj

The Drum
The Drum
The Drum
The Drum
The Drum
The Drum

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

Upotrijebite kompas, postavljen na unutarnji radijus cijevi, da nacrtate obrise krajnjeg utikača. Sada izrežite svaki obris pomoću fine pile ("suočavanje", "habanje"), a zatim prilagodite svaki krajnji čep uz pomoć drvene rašpe. Pričvrstite čepove pomoću malih vijaka 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. Prečnik bubnja od 100 mm podržava A4 portret i A3 pejzaž. Prečnik bubnja od 80 mm podržava samo A4 pejzaž. Upotrijebite što manji promjer bubnja za smanjenje inercije … motori BYJ-48 su samo mali.

Promjer bubnja od 90 mm idealan je za A4 portret i A3 pejzažni papir jer se suprotne ivice, kad se omotaju oko bubnja, preklapaju za otprilike 10 mm, što znači da imate samo jedan šav za lijepljenje.

Rotiranje bubnja

Svaka osovina prolazi kroz aluminijski završni držač tako da se bubanj može slobodno okretati. Krajnji plovak je spriječen 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 sa bubnjem. Za motor je potrebna remenica promjera otvora 5 mm.

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

Korak 4: Savjeti za izgradnju

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

Precizno bušenje dvije rupe za olovke je važno. Svako ljuljanje u vođici olovke ili nosaču uzrokovat će kolebanja 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ž X-osi, ali zabrinjavaju kada je u pitanju Y-os. Razlog za to je što se jedna rotacija motora Y-osi izjednačuje s jednom rotacijom bubnja, dok nosač olovke zahtijeva mnogo okretaja motora X-ose kako bi prešao dužinu 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. Jedna oktanta 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 postizanje ovoga prikazane su na gornjem dijagramu.

Derivacija

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

Nacrtajmo liniju 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) data 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;
  • zemljište (0, 0);
  • za (int x = 1; x <= x1; x ++) {
  • int y = okruglo (m*x);
  • parcela (x, y);
  • }

Tabela 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. Da bi njegovo poređenje ostalo u rasponu 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;
  • zemljište (0, 0);
  • za (int x = 1; x <= x1; x ++) {
  • e+= m;
  • ako je (e> = 0,5) {
  • e -= 1;
  • y ++;
  • }
  • parcela (x, y);
  • }

Tabela 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 tabelu 2 primijetit ćete to;

  • glavna petlja koristi samo sabiranje i oduzimanje … nema množenja
  • obrazac za y je isti kao za tabelu 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 skale 'm' i 'e' povećamo 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 kada povećamo 'x"
  • povećavamo y ako je e jednako ili veće od x1.
  • oduzimamo 2*x1 od 'e' umjesto 1
  • x1 se koristi za poređenje 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 -E/2: test je sada obavljen na nuli
  • zemljište (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 obrazac 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 koji predstavlja nagib 'm' linije.

Ovaj algoritam je izuzetno brz jer glavna petlja uključuje samo sabiranje, 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 je iz rada "Bresenhamovo crtanje linija 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 fasciklu sa istim imenom, a zatim je prenesite na ploter koristeći arduino IDE (integrirano razvojno okruženje).

Isključite HC-06 bluetoorh modul prije pokušaja postavljanja. Ovo je potrebno kako bi se izbjegao sukob serijskog porta s USB kabelom.

Kodeks treće strane

Osim gore navedenog.ino koda, bit će vam potrebni 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

Meni
Meni

Ostvarite bluetooth vezu sa katerom koristeći "Teraterm".

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

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

Jelovnik je razumljiv sam po sebi:

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

Napomene:

  • svi pokreti olovke koriste skalu za crtanje postavljenu pomoću opcije menija 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 PI*promjer
  • 2048 koraka jednako je jednom okretu 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 dužinu rezultirajućih linija 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

Za ovaj kater je potrebno samo četiri Inkscape g koda (naime: G0, G1, G2, G3). Kod ć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 "regularni izraz" za pronalaženje i uklanjanje neželjenog teksta. Notepad ++ je dostupan 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 menija.

Potvrdite izbor u polju za potvrdu "Regular Expression" (pogledajte prvu sliku) i unesite svaku od sledećih sekvenci koda u polje za pretragu.

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" (pogledajte drugu sliku) i unesite sljedeći kodni niz:

r / n / r / n / r / n

Ovaj izraz uklanja neželjene povratne linije i unose redaka koje je stvorio prvi niz.

Sačuvajte datoteku pod drugim imenom koristeći "Sačuvaj 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 preko bluetootha. U prilogu je "prethodno obrađena" kopija ove datoteke.

Korak 11: Ažuriranje koda

Ažuriranje koda
Ažuriranje koda

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

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

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

Priloženi dijagram prikazuje moju metodu za izračunavanje lučnog ugla.

Korak 12: Drum_plotter_v3.ino

U prilogu je ažuriranje koda za "CNC ploter za bubnjeve".

"drum_plotter_v3.ino" popravlja manju grešku koja je uticala na tačnost plotera.

Promijenite historiju

Verzija 2:

Dodane bi-lučne krivulje

Verzija 3:

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

  • (int) zamijenjeno sa round () u funkciji move_to ().
  • draw_line () funkcija "oktantan" algoritam pretraživanja poboljšan
  • Tumač sada koristi string funkcije umjesto pokazivača što pojednostavljuje dizajn. Na primjer, sada možemo tražiti "MENU" umjesto da tražimo slovo "M", a zatim izvući cijeli broj koji slijedi. Ovo vam omogućava da personalizujete kater sa svojim komandama.

Korak 13: Drum_plotter_plotter_v4.ino

16. januar 2017.:

Kod za ovaj ploter bubnja je dodatno optimiziran. Dodane su dodatne funkcije.

Promjene uključuju:

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

Za više detalja pročitajte komentare unutar "drum_plotter_v4.ino" u prilogu.

Kliknite ovdje za pregled ostalih instrukcija.

Preporučuje se: