Kazalo:
- 1. korak: vezje
- 2. korak: Linearni pogon
- 3. korak: boben
- 4. korak: Nasveti za gradnjo
- 5. korak: Bresenhamov algoritem za risanje črte
- 6. korak: Koda
- 7. korak: Meni
- 8. korak: Umerjanje
- 9. korak: Predhodna obdelava Gcode
- 10. korak: Rezultati
- 11. korak: Posodobitev kode
- 12. korak: Drum_plotter_v3.ino
- 13. korak: Drum_plotter_plotter_v4.ino
Video: CNC ploter: 13 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
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 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 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 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
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
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
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
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
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:
Ploter za jajca na osnovi Arduina: 17 korakov (s slikami)
Ploter za jajca na osnovi Arduina: ploter za jajca je umetniški robot, ki lahko črpa na predmete sferične oblike, kot so jajca. S tem strojem lahko črpate tudi žoge za namizni tenis in žoge za golf. Lahko uporabite domišljijo pri oblikovanju, ki ste ga dali, lahko na primer naredite
CNC ploter: 3 koraki
CNC ploter: Ciao a tutti! Prima di tutto mi presento! Sono nuovo in Instructables. Sono Andrea Solari, ho 25 anni e sono laureato in ingegneria elettrica. In questi anni ho creato molti progetti personali, è giunto il momento di pubblicarne alcuni! se sei interes
CNC robot ploter: 11 korakov (s slikami)
CNC robot ploter: a.članki {velikost pisave: 110,0%; teža pisave: krepko; slog pisave: poševno; okras besedila: brez; barva ozadja: rdeča;} a. članki: lebdite {barva ozadja: črna;} Ta navodila opisujejo robot ploter, ki ga upravlja CNC. Robot vsebuje
Arduino CNC ploter (RISALNI STROJ): 10 korakov (s slikami)
Arduino CNC ploter (RISALNI STROJ): Hej fantje! Upam, da ste že uživali v mojem prejšnjem navodilu " Kako narediti svojo lastno platformo za usposabljanje Arduino " in pripravljeni ste na novo, kot ponavadi sem naredil to vadnico, ki vas bo vodila korak za korakom, hkrati pa naredila tovrstno super neverjetno
Arduino mini CNC ploter (s Proteus Project & PCB): 3 koraki (s slikami)
Arduino Mini CNC ploter (z Proteus Project & PCB): Ta mini arduino CNC ali XY ploter lahko piše in oblikuje v razponu 40x40 mm. Da, ta razpon je kratek, vendar je dober začetek za skok v svet arduina. [V tem projektu sem dal vse, tudi tiskano vezje, datoteko Proteus, primer oblikovanja