Kazalo:

CNC ploter: 13 korakov (s slikami)
CNC ploter: 13 korakov (s slikami)

Video: CNC ploter: 13 korakov (s slikami)

Video: CNC ploter: 13 korakov (s slikami)
Video: How to make mini CNC plotter 2D using scrap DVD 2024, November
Anonim
Image
Image
CNC ploter ploter
CNC ploter ploter

Ta navodila opisujejo ploter A4/A3 iz dela plastične cevi, dva koračna motorja BYJ-48 in servo SG-90. V bistvu gre za ploski ploter, zvit v boben.

En motor vrti boben, drugi pa tiskalno glavo. Servo se uporablja za dvig in spuščanje peresa.

Ta ploter ima številne prednosti pred tradicionalnim ploskalnim ploterjem:

  • bistveno manjši odtis
  • potrebuje le eno linearno vodilo
  • enostaven za gradnjo
  • poceni

Vgrajeni tolmač sprejema izpis gcode iz Inkscapea.

Komunikacija s ploterjem poteka prek povezave bluetooth.

Ploter je združljiv z grafično tablico CNC, opisano v mojih navodilih

Čeprav ni natančen instrument, je natančnost tega ploterja zadovoljiva glede na predvideni namen prenašanja akvarelov na papir.

1. korak: vezje

Vezje
Vezje

Vezje obsega mikrokrmilnik Arduino UNO R3 in ščit po meri, na katerega so nameščene diskretne komponente. Napajanje poteka prek zunanjega regulatorja 5 voltov 1 amp. Povprečni tok je okoli 500 mA.

Koračni motorji BYJ-48 so pritrjeni na PORTB (zatiči D8, D9, D10, D11) in PORTC (zatiči A0, A1, A2, A3). Servo-dvigalo SG-90 je pritrjeno na zatič D3.

560 ohmski upori, ki jih lahko izpustimo, zagotavljajo zaščito proti kratkemu stiku arduinu, če gre kaj narobe. Olajšajo tudi ožičenje ščita, saj delujejo kot "skakalci" po dovodnih tirnicah.

Upori 1k2 in 2K2 preprečujejo poškodbe modula HC-06 bluetooth [1] tako, da izhod 5 voltov iz arduina znižajo na 3,3 volta.

[1] Ko nalagate kodo na arduino prek vrat USB, odklopite modul bluetooth HC-06. Tako se boste izognili morebitnim konfliktom med serijskimi vrati.

2. korak: Linearni pogon

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

Linearni pogon je izdelan iz aluminijaste palice dolžine 3 x 32 mm, traku iz aluminijaste pločevine in štirih majhnih jermenic s krogličnimi ležaji.

Aluminij je na voljo v večini trgovin s strojno opremo. U624ZZ jermenice z U-utori 4x13x7 mm so na voljo na

Enostavno ročno orodje je vse, kar potrebujete. Izrežite aluminijasto palico, ki ustreza vašim dimenzijam ploterja.

Sklop motorja

Koračni motor BJY-48 namestite skozi palico na enem koncu in pritrdite zob GT2 20, 5 mm izvrtino, jermenico na gred motorja. Sedaj namestite še en jermen GT2 na drugi konec palice, tako da se lahko škripec prosto vrti. Za to sem uporabil cevni (radijski) distančnik s premerom 5 mm in 3 mm vijak.

Zdaj okrog jermenic zavrtite dolžino zobatega jermena GT2. Konce zobatega jermena povežite s polovičnim zasukom, tako da se zobje prepletejo in pritrdijo s kabelsko vezico.

Končno pritrdite nosilec na zobati jermen s kabelsko vezico.

Komplet vozička

Nosilec je izdelan iz traku iz aluminijaste pločevine [1], na katerega so priviti jermenice U624ZZ. Po potrebi uporabite 4 mm podložko za odstranitev jermenic iz aluminijaste pločevine.

Jermenice, ki imajo 4 -milimetrski utor, se na vrhu in na dnu oprimejo aluminijaste palice, tako da ni navpičnega premikanja, vendar se aluminijasti trak prosto premika levo in desno.

Za zagotovitev, da voziček prosto teče, najprej pritrdite zgornja dva jermenica, nato pa s jermenicami, ki sedijo na drogu, označite položaje spodnjih dveh jermenic. Luknje za ti dve škripci se lahko zdaj izvrtajo. Najprej uporabite majhen "pilotni" vrtalnik, da preprečite drsenje večjega 4 mm svedra.

Pred upogibanjem aluminijevega traku v "U" izvrtajte zgornjo in spodnjo luknjo, ki bo ustrezala premeru vašega peresa. Zdaj zaključite ovinke.

Zobati jermen pritrdite na nosilec s kabelsko vezico in 3 mm vijakom med zgornjima škripcema.

Sklop dvigala za pero

Servo SG-90 pritrdite na vrh nosilnega sklopa z eno ali dvema vezicama za kable.

Spustite pero v dve luknji, ki ste jih izvrtali. Poskrbite, da bo peresnik prosto drsel navzgor in navzdol.

Na svoj peresnik pritrdite "ovratnik", tako da bo peresnik čisto stran od bobna, ko je servo v položaju za dvig peresa.

[1] Aluminij lahko razrežete tako, da z ostrim nožem (rezalnikom škatle) zarežete obe strani lista, nato pa rez upognete čez rob mize. Nekaj gibov in rjuha se zlomi, kar pusti raven prelom. Za razliko od kositrov, ta metoda ne zvija aluminija.

3. korak: boben

Boben
Boben
Boben
Boben
Boben
Boben

Boben obsega del plastične cevi z dvema lesenima končnima zamaškoma [1].

S kompasom, ki je nastavljen na notranji polmer cevi, narišite obrise končnega čepa. Zdaj izrežite okoli vsakega obrisa s fino žago ("coping", "fret"), nato pa vsak končni čep po meri pritrdite s pomočjo lesne trnke. Končne čepe pritrdite z majhnimi vpetimi lesenimi vijaki.

6 mm inženirski vijak skozi sredino vsakega končnega čepa tvori os.

Dimenzije bobna

Dimenzije bobna so določene glede na velikost papirja. Premer bobna 100 mm podpira portret A4 in A3 ležeče. Premer bobna 80 mm bo podpiral le pokrajino A4. Uporabite čim manjši premer bobna, da zmanjšate vztrajnost … Motorji BYJ-48 so le majhni.

Premer bobna 90 mm je idealen za portret A4 in ležeči papir A3, saj se nasprotni robovi, ko so oviti okoli bobna, prekrivajo za približno 10 mm, kar pomeni, da imate le en šiv zalepiti.

Vrtenje bobna

Vsaka os gre skozi aluminijast končni nosilec, tako da se boben lahko prosto vrti. Končni plovec je preprečen s pomočjo GT-2, 20 zob, 6 mm izvrtine, škripca, pritrjenega na os na enem koncu. Neprekinjen zobati jermen GT-2 povezuje koračni motor BJY-48 z bobnom. Motor potrebuje jermenico z velikostjo izvrtine 5 mm.

[1] Plastični končni čepi so na voljo za večino premerov cevi, vendar so bili zavrnjeni, ker se prilegajo cevi, ne pa notranjosti, plastika pa se upogiba. Verjetno bi bilo v redu, če bi namesto vijakov uporabili neprekinjeno os … potem pa potrebujete neko metodo pritrditve osi na končne čepe.

4. korak: Nasveti za gradnjo

Prepričajte se, da peresnik potuje vzdolž središča bobna. To lahko dosežete z izrezovanjem vogalov iz lesenih nosilcev. Če peresnik ni na sredini, bo ponavadi zdrsnil po strani bobna.

Pomembno je natančno vrtanje dveh lukenj za peresnike. Vsako nihanje v vodilu peresa ali nosilcu bo povzročilo nihanje vzdolž osi X.

Ne zategnite zobatih jermenov GT-2 … le napeti morajo biti. Koračni motorji BYJ-48 nimajo veliko navora.

Koračni motorji BJY-48 pogosto kažejo majhne obremenitve, ki so vzdolž osi X zanemarljive, vendar so zaskrbljujoče pri osi Y. Razlog za to je, da je en obrat motorja po osi Y enak enemu vrtenju bobna, medtem ko nosilec peresa zahteva veliko obratov motorja osi X, da prečka dolžino bobna. Morebitne zastoje na osi Y je mogoče odpraviti z ohranjanjem konstantnega navora na bobnu. Preprosta metoda je pritrditev majhne teže na najlonsko vrvico, ovito okoli bobna.

5. korak: Bresenhamov algoritem za risanje črte

Bresenhamov algoritem za risanje črte
Bresenhamov algoritem za risanje črte
Bresenhamov algoritem za risanje črte
Bresenhamov algoritem za risanje črte

Ta ploter uporablja optimizirano različico [1] Bresenhamovega algoritma za risanje črt. Na žalost ta algoritem velja le za nagibe linij, ki so manjše ali enake 45 stopinj (tj. En oktant kroga).

Da bi se izognili tej omejitvi, vse "XY" vnose "preslikam" v prvi "oktant", nato pa jih "odstranim", ko je čas za načrtovanje. Funkcije preslikave vhoda in izhoda za to so prikazane na zgornjem diagramu.

Izpeljava

Preostanek tega koraka lahko izpustite, če poznate Bresenhamov algoritem.

Potegnimo črto od (0, 0) do (x1, y1), kjer:

  • x1 = 8 = vodoravna razdalja
  • y1 = 6 = navpična razdalja

Enačba za ravno črto, ki poteka skozi začetek (0, 0), je podana z enačbo y = m*x, kjer:

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

Preprost algoritem

Enostaven algoritem za risanje te vrstice je:

  • int x1 = 8;
  • int y1 = 6;
  • plovec m = y1/x1;
  • ploskev (0, 0);
  • za (int x = 1; x <= x1; x ++) {
  • int y = okroglo (m*x);
  • ploskev (x, y);
  • }

Tabela 1: Preprost algoritem

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 tem preprostim algoritmom obstajata dve težavi:

  • glavna zanka vsebuje počasno množenje
  • uporablja številke s plavajočo vejico, ki so tudi počasne

Graf y v primerjavi z x za to vrstico je prikazan zgoraj.

Bresenhamov algoritem

Bresenham je predstavil pojem napake "e", ki je inicializiran na nič. Spoznal je, da je mogoče vrednosti m*x, prikazane v tabeli 1, pridobiti z zaporednim dodajanjem 'm' k 'e'. Nadalje je spoznal, da se y poveča le, če je delni del m*x večji od 0,5. Da bi ohranil svojo primerjavo v območju 0 <= 0,5 <= 1, odšteje 1 od 'e' vsakič, ko se y poveča.

  • int x1 = 8;
  • int y1 = 6;
  • plovec m = y1/x1;
  • int y = 0;
  • float e = 0;
  • ploskev (0, 0);
  • za (int x = 1; x <= x1; x ++) {
  • e+= m;
  • če (e> = 0,5) {
  • e -= 1;
  • y ++;
  • }
  • ploskev (x, y);
  • }

Tabela 2: Bresenhamov algoritem

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

Če preučite algoritem in tabelo 2, boste to opazili;

  • glavna zanka uporablja samo seštevanje in odštevanje … ni množenja
  • vzorec za y je enak kot za tabelo 1.

Ampak še vedno uporabljamo številke s plavajočo vejico … popravimo to.

Bresenhamov (optimiziran) algoritem

Bresenhamov algoritem s plavajočo vejico lahko pretvorimo v celoštevilčno obliko, če merila 'm' in 'e' povečamo za 2*x1, v tem primeru je m = (y1/x1)*2*x1 = 2*y1

Poleg skaliranja 'm' in 'e' je algoritem podoben zgornjemu, razen:

  • vsakič, ko povečamo 'x', dodamo 2*y1 k 'e'
  • prirastimo y, če je e enako ali večje od x1.
  • od 'e' odštejemo 2*x1 namesto 1
  • x1 se uporablja za primerjavo namesto 0,5

Hitrost algoritma je mogoče še povečati, če zanka za preskus uporablja nič. Za to moramo izrazu napake 'e' dodati odmik.

  • int x1 = 8;
  • int y1 = 6;
  • int m = (y1 << 1); // konstanta: naklon pomanjšan za 2*x1
  • int E = (x1 << 1); // konstanta: 2*x1 za uporabo v zanki
  • int e = -x1; // odmik -E/2: preskus je zdaj opravljen pri nič
  • ploskev (0, 0);
  • int y = 0;
  • za (x = 1; x <= x1; x ++) {
  • e += m;
  • če (e> = x1) {
  • e -= E
  • y ++;
  • }
  • ploskev (x, y);
  • }

Tabela 3: Bresenhamov (optimiziran) algoritem

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

Še enkrat je vzorec za y enak kot v drugih tabelah. Zanimivo je, da tabela 3 vsebuje samo cela števila in da je razmerje m/E = 12/16 = 0,75, ki je naklon 'm' črte.

Ta algoritem je izredno hiter, saj glavna zanka vključuje le seštevanje, odštevanje in primerjavo z ničlo. Množenje se ne uporablja razen, ko inicializiramo vrednosti za 'E' in 'm' z uporabo "levega premika", da podvojimo vrednosti x1 in y1.

[1] Ta optimizirana različica Bresenhamovega algoritma je iz članka "Bresenhamovo risanje črte in kroga", avtorske pravice © 1994-2006, W Randolph Franklin (WRF). Njegovo gradivo se lahko uporabi za neprofitne raziskave in izobraževanje, pod pogojem, da mu namenite zasluge in se povežete nazaj na njegovo domačo stran,

6. korak: Koda

Prenesite priloženo datoteko v istoimensko mapo in jo nato naložite v ploter s svojim arduino IDE (integrirano razvojno okolje).

Pred poskusom nalaganja odklopite modul HC-06 bluetoorh. To je potrebno, da se izognete sporom serijskih vrat s kablom USB.

Koda tretje osebe

Poleg zgornje kode.ino boste potrebovali naslednje brezplačne programske pakete / donatorsko opremo:

  • Teraterm, ki je na voljo na
  • Inkscape, ki je na voljo na

Navodila za namestitev in uporabo vsakega od zgornjih paketov tretjih oseb najdete v mojem članku

7. korak: Meni

Meni
Meni

Vzpostavite povezavo Bluetooth s ploterjem s pomočjo "Teraterm".

Vklopite "caps lock", saj so vsi ukazi z velikimi tiskanimi črkami.

Vnesite črko 'M' in prikazal se bo meni, kot je prikazano zgoraj.

Meni je razumljivo samoumeven:

  • M (ali M0) odpre meni
  • G0 omogoča pošiljanje peresa na določeno koordinato XY z dvignjenim peresom.
  • G1 omogoča pošiljanje peresa na določeno koordinato XY s spuščenim peresom.
  • T1 vam omogoča, da peresnik postavite nad 0, 0 koordinato. Za izhod vnesite 'E'.
  • T2 vam omogoča, da povečate risbo. Na primer "T2 S2.5" bo povečalo vašo risbo za 250%. Privzeta lestvica je 100%
  • T3 in T4 omogočata dviganje ali spuščanje peresa.
  • T5 nariše preskusni vzorec "ABC".
  • T6 nariše "tarčo".
  • T7 nariše niz radialnih črt, katerih namen je preveriti, ali Bresenhamov algoritem deluje v vsakem od osmih "oktantov"

Opombe:

  • vsi premiki peresa uporabljajo lestvico risbe, nastavljeno z možnostjo menija T2
  • številki "17:" in "19:" sta kodi za rokovanje terminala "Xon" in "Xoff" iz tolmača arduino.

8. korak: Umerjanje

Vrednosti za X_STEPS_PER_MM in Y_STEPS_PER_MM sta za boben s premerom 90 mm.

Vrednosti za druge premere bobna je mogoče izračunati z uporabo naslednjih razmerij:

  • obseg bobna je premer PI*
  • 2048 korakov je enako enemu obratu vsake gredi motorja
  • en vrtljaj jermenice GT-2 je enak 40 milimetrom linearnega premika zobatega jermena

Druga metoda je vnos naslednjih ukazov:

  • G1 X0 Y100
  • G1 X100 Y100

nato izmerite dolžino nastalih vrstic in "skalirajte" vrednosti za X-STEPS_PER_MM in Y_STEPS_PER_MM

9. korak: Predhodna obdelava Gcode

Predhodna obdelava Gcode
Predhodna obdelava Gcode
Predhodna obdelava Gcode
Predhodna obdelava Gcode

Za to ploter potrebujete le štiri kode Inkscape (tj. G0, G1, G2, G3). Koda se bo izvedla bistveno hitreje, če odstranimo vse nepotrebne gkode in komentarje.

Če želite to narediti, potrebujete kopijo "Notepad ++". Ta brezplačni urejevalnik besedil vsebuje iskalnik "regularni izraz" za iskanje in odstranjevanje neželenega besedila. Notepad ++ je na voljo na

Odprite datoteko, ki jo želite spremeniti s programom Notepad ++, in kazalec postavite na vrh datoteke.

V zgornji menijski vrstici izberite "Ogled/Pokaži simbol/Vsi znaki", ki mu sledi "Išči/Zamenjaj …".

Potrdite polje »Regular Expression« (glejte 1. sliko) in v iskalno polje vnesite vsako od naslednjih kodnih zaporedij.

Po vsakem vnosu kliknite »Zamenjaj vse«:

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

Zgornji regularni izrazi odstranijo vse simbole %, vse komentarje, prikazane v oklepajih, vse kode M, vse oznake Z in kode, ki sledijo.

Sedaj kliknite potrditveno polje »Razširjeni izraz« (glej drugo sliko) in vnesite naslednje zaporedje kod:

r / n / r / n / r / n

Ta izraz odstrani neželene vrnitve nosilcev in vire vrstic, ustvarjene s prvim zaporedjem.

Shranite datoteko pod drugim imenom z uporabo »Shrani kot«.

Končano.

10. korak: Rezultati

Rezultati
Rezultati

Ta ploter je bil zgrajen kot "dokaz koncepta" in nikoli ni bil namenjen popolnosti. Glede na to, da rezultati niso tako slabi. Vsekakor izpolnjujejo moj oblikovalski cilj prenašanja akvarelov na papir.

Prve tri slike so vgrajeni preskusni vzorci T5, T6, T7.

"Pozdravljeni svet!" vzorec je bil preko bluetootha poslan na ploter. Priložena je "vnaprej obdelana" kopija te datoteke.

11. korak: Posodobitev kode

Posodobitev kode
Posodobitev kode

Koda za ta ploter je posodobljena na Drum_Plotter_V2.ino.

Spremembe izvirnega Drum_Plotter.ino vključujejo:

  • bolj gladko pozicioniranje peresa
  • zdaj prepozna gcode navodila G02 (loki v smeri urinega kazalca)
  • zdaj prepozna gcode navodila G03 (loki v nasprotni smeri urinega kazalca)

V priloženem diagramu je opisana moja metoda izračuna kota loka.

12. korak: Drum_plotter_v3.ino

Priložena je posodobitev kode za "CNC ploter ploter".

"drum_plotter_v3.ino" odpravlja manjšo napako, ki je vplivala na natančnost ploterja.

Spremenite zgodovino

Različica 2:

Dodane bi-ločne krivulje

Različica 3:

Naslednje funkcije so bile prepisane za odpravo manjše napake, ki je vplivala na natančnost ploterja.

  • (int) zamenjano z round () v funkciji move_to ().
  • draw_line () funkcija "octant" iskalni algoritem izboljšan
  • Tolmač zdaj uporablja nizovne funkcije namesto kazalcev, kar poenostavi zasnovo. Zdaj lahko na primer iščemo "MENU" in ne iščemo črke "M", nato pa izvlečemo celo število, ki sledi. To vam omogoča prilagajanje ploterja z lastnimi ukazi.

13. korak: Drum_plotter_plotter_v4.ino

16. januar 2017:

Koda za ta boben ploter je bila dodatno optimizirana. Dodane so bile dodatne funkcije.

Spremembe vključujejo:

  • hitrejši algoritem draw_line ()
  • ujemanje funkcije move_to ()
  • števci korakov
  • manjši popravek napak

Za več podrobnosti preberite komentarje v priloženem "drum_plotter_v4.ino".

Kliknite tukaj, če si želite ogledati moja druga navodila.

Priporočena: