Sisukord:
- 1. samm: vooluring
- 2. samm: lineaarne ajam
- 3. samm: trummel
- 4. samm: ehitusnõuanded
- Samm: Bresenhami joonistusalgoritm
- 6. samm: kood
- Samm: menüü
- 8. samm: kalibreerimine
- 9. samm: Gcode'i eeltöötlus
- 10. samm: tulemused
- Samm: koodi värskendamine
- 12. samm: Drum_plotter_v3.ino
- Samm 13: Drum_plotter_plotter_v4.ino
Video: CNC trummelplotter: 13 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
See juhend kirjeldab A4/A3 plotterit, mis on valmistatud plasttoru osast, kahest BYJ-48 samm-mootorist ja SG-90 servost. Põhimõtteliselt on see trumlisse rullitud lamevooder.
Üks mootor pöörleb trumlit, teine aga prindipead. Servot kasutatakse pliiatsi tõstmiseks ja langetamiseks.
Sellel plotteril on traditsioonilise tasapinnalise plotteri ees mitmeid eeliseid:
- oluliselt väiksem jalajälg
- nõuab ainult ühte lineaarset juhtrööpa
- lihtne ehitada
- odav
Pardatõlk aktsepteerib Inkscape'i gcode väljundit.
Plotteriga suhtlemine toimub bluetooth -lingi kaudu.
Plotter ühildub CNC graafikatahvliga, mida on kirjeldatud minu juhendis
Kuigi see plotter ei ole täppisinstrument, on selle akvarellide piirjooned paberile ülekandmiseks rahuldav.
1. samm: vooluring
Vooluahel sisaldab Arduino UNO R3 mikrokontrollerit ja kohandatud kaitsekilpi, millele diskreetsed komponendid on paigaldatud. Toide antakse välise 5 -voldise 1 ampri regulaatori kaudu. Keskmine vool on umbes 500 mA.
Sammumootorid BYJ-48 on kinnitatud PORTB (tihvtid D8, D9, D10, D11) ja PORTC (tihvtid A0, A1, A2, A3) külge. Pliiatsitõste servo SG-90 on kinnitatud tihvti D3 külge.
560 oomi takistid, mis võib välja jätta, pakuvad arduinole lühisekaitset, kui midagi peaks valesti minema. Need hõlbustavad ka kilbi juhtmestamist, kuna toimivad "hüppajatena" üle toitepiirete.
Takistid 1k2 ja 2K2 takistavad kahjustada Bluetooth-moodulit HC-06 [1], vähendades 5-voldise väljundi arduinost 3,3 voltini.
[1] Kui laadite koodi USB-pordi kaudu arduinole, eemaldage Bluetooth-moodul HC-06 vooluvõrgust. See väldib jadaportide konflikte.
2. samm: lineaarne ajam
Lineaarne ajam on valmistatud 3 mm x 32 mm alumiiniumvardast, alumiiniumplekkribast ja neljast väikesest kuullaagririhmast.
Alumiinium on saadaval enamikus ehituspoodides. U624ZZ 4x13x7mm U-soonelised rihmarattad on saadaval aadressil
Lihtsad käsitööriistad on kõik, mida vajate. Lõika alumiiniumvarras vastavalt oma plotteri mõõtudele.
Mootori komplekt
Paigaldage samm-mootor BJY-48 ühest otsast läbi varda ja kinnitage mootori võllile GT2 20 hammas, 5 mm ava, rihmaratas. Nüüd paigaldage oma riba teise otsa teine GT2 rihmaratas nii, et rihmaratas saaks vabalt pöörata. Selle saavutamiseks kasutasin 5 mm läbimõõduga torukujulist (raadio) vahekaugust ja 3 mm polti.
Nüüd keerake GT2 hammasrihm ümber rihmarataste. Ühendage hammasrihma otsad poole keerdumisega, nii et hambad põimuvad ja kinnitatakse kaablisidemega.
Lõpuks kinnitage kärukomplekt juhtmestikuga hammasrihma külge.
Vankrikomplekt
Vankrikomplekt on valmistatud alumiiniumplekist [1], mille külge on kinnitatud rihmarattad U624ZZ. Vajadusel kasutage rihmarataste alumiiniumlehest eraldamiseks 4 mm seibi.
4 mm soonega rihmarattad asetsevad alumiiniumvarda üla- ja alaosas nii, et vertikaalset liikumist ei toimu, kuid alumiiniumriba liigub vabalt vasakule ja paremale.
Vankri vaba liikumise tagamiseks paigaldage kõigepealt kaks ülemist rihmaratast ja seejärel, kui rihmarattad on latil, märkige kahe alumise rihmaratta asukohad. Nende kahe rihmaratta augud võib nüüd puurida. Kasutage kõigepealt väikest "pilootpuurit", et vältida suurema 4 mm puuri triivimist.
Enne alumiiniumriba "U" -ks painutamist puurige pliiatsi läbimõõdule sobiv ülemine ja alumine auk. Nüüd lõpetage kurvid.
Kinnitage hammasrihm kandekomplekti külge, kasutades nöörisidet ja 3 mm polti kahe ülemise rihmaratta vahel.
Pliiatsitõsteseade
Kinnitage servo SG-90 kandekomplekti ülaosale ühe või kahe kaablisideme abil.
Laske pliiats kahe puuritud augu alla. Veenduge, et pensüstel libiseb vabalt üles ja alla.
Kinnitage "krae" oma pliiatsi külge nii, et pliiats oleks lihtsalt trumlist eemal, kui servo on sulepea asendis.
[1] Alumiiniumi võib lõigata, lõigates lehe mõlemad pooled terava noaga (karbilõikur), seejärel painutades lõike üle laua serva. Paar väänlemist ja leht puruneb, jättes sirge katke. Erinevalt tinakinnitustest ei muuda see meetod alumiiniumi.
3. samm: trummel
Trummel koosneb kahest puidust otsakorgiga plasttoru osast [1].
Kasutage toru sisemise raadiusega seatud kompassi, et joonistada otsapistiku piirjooned. Nüüd lõigake iga kontuuri ümber peene teraga saega ("toimetulek", "fret") ja seejärel sobitage iga otsakork vastavalt puidust raspiga kohandatud viisil. Kinnitage otsakorgid väikeste süvistatud puidukruvide abil.
6 mm insenerpolt, mis läbib iga otsakorkide keskpunkti, moodustab telje.
Trumli mõõtmed
Trumli mõõtmed määratakse teie paberi suuruse järgi. Trumli läbimõõt 100 mm toetab A4 portree- ja A3 -maastikku. Trumli läbimõõt 80 mm toetab ainult A4 maastikku. Kasutage inertsi vähendamiseks võimalikult väikest trumli läbimõõtu… BYJ-48 mootorid on vaid väikesed.
Trumli läbimõõt 90 mm sobib ideaalselt A4 portree- ja A3 -maastikupaberi jaoks, kuna trumli ümber keerates kattuvad vastasservad ligikaudu 10 mm võrra, mis tähendab, et teil on ainult üks õmblus, mille teipida.
Trumli pööramine
Iga telg läbib alumiiniumist otsakonsooli nii, et trummel saab vabalt pöörata. Otsa ujukit takistab GT-2, 20 hammas, 6 mm ava, rihmaratas, mis on ühest otsast telje külge kinnitatud. Pidev GT-2 hammasrihm ühendab hammasrattaga BJY-48 samm-mootori trumliga. Mootor vajab rihmaratta läbimõõduga 5 mm.
[1] Enamiku torude läbimõõtude jaoks on saadaval plastikust otsakorgid, kuid need lükati tagasi, kuna need sobivad pigem toru peale kui sisse ja plast kipub painduma. Need oleksid ilmselt okei, kui poltide asemel kasutataks pidevat telge … aga siis on teil vaja mingit meetodit telje otsakorkide külge kinnitamiseks.
4. samm: ehitusnõuanded
Veenduge, et pliiats liigub mööda trumli keskosa. Seda on võimalik saavutada puidust tugede nurkade väljalõikamisega. Kui pliiats on tsentrist väljas, kipub see trumli küljelt allapoole libisema.
Kahe pliiatsi augu täpne puurimine on oluline. Kõik pliiatsi juhiku või vankri sõlmede kõikumised põhjustavad võnkumisi piki X-telge.
Ärge pingutage GT-2 hammasrihma üle-need peavad olema lihtsalt pingul. BYJ-48 samm-mootoritel pole palju pöördemomenti.
BJY-48 samm-mootoritel on sageli väike tagasilöök, mis on X-teljel ebaoluline, kuid on Y-telje puhul murettekitav. Selle põhjuseks on asjaolu, et üks Y-telje mootori pöörlemine võrdub trumli ühe pöörlemisega, samas kui pliiatsikärul nõuab trumli pikkuse läbimiseks palju X-telje mootori pöördeid. Igasuguse Y-telje tagasilöögi saab kõrvaldada, hoides trummel püsivat pöördemomenti. Lihtne meetod on väikese kaalu kinnitamine trumli ümber mähitud nailonjuhtme külge.
Samm: Bresenhami joonistusalgoritm
See plotter kasutab Bresenhami joonistusalgoritmi optimeeritud versiooni [1]. Kahjuks kehtib see algoritm ainult joone kallakute puhul, mis on väiksemad või võrdsed kui 45 kraadi (st ringi üks oktant).
Sellest piirangust mööda saamiseks "kaardistan" kõik XY sisendid esimese "oktandini", seejärel "tühjendan", kui on aeg joonistada. Selle saavutamiseks on sisend- ja väljundkaardistusfunktsioonid näidatud ülaltoodud diagrammil.
Tuletamine
Selle sammu ülejäänud osa võib ära jätta, kui olete Bresenhami algoritmiga kursis.
Joonistame joone (0, 0) kuni (x1, y1), kus:
- x1 = 8 = horisontaalne kaugus
- y1 = 6 = vertikaalne kaugus
Lähtepunkti (0, 0) läbiva sirgjoone võrrand on antud võrrandiga y = m*x kus:
m = y1/x1 = 6/8 = 0,75 = kalle
Lihtne algoritm
Selle rea joonistamiseks on lihtne algoritm:
- int x1 = 8;
- int y1 = 6;
- ujuk m = y1/x1;
- graafik (0, 0);
- jaoks (int x = 1; x <= x1; x ++) {
- int y = ümmargune (m*x);
- graafik (x, y);
- }
Tabel 1: Lihtne algoritm
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 |
Selle lihtsa algoritmiga on kaks probleemi:
- peamine silmus sisaldab korrutamist, mis on aeglane
- see kasutab ujukoma numbreid, mis on samuti aeglased
Selle rea graafik y vs x on näidatud ülal.
Bresenhami algoritm
Bresenham tutvustas veatermini „e” mõistet, mis lähtestatakse nullini. Ta mõistis, et tabelis 1 toodud m*x väärtused on võimalik saada, lisades järjestikku tähe „m”. Lisaks mõistis ta, et y suurendatakse ainult siis, kui m*x murdosa on suurem kui 0,5. Et hoida võrdlust vahemikus 0 <= 0,5 <= 1, lahutab ta iga kord, kui y suurendatakse, lahutab e -st 1.
- int x1 = 8;
- int y1 = 6;
- ujuk m = y1/x1;
- int y = 0;
- ujuk e = 0;
- graafik (0, 0);
- jaoks (int x = 1; x <= x1; x ++) {
- e+= m;
- kui (e> = 0,5) {
- e -= 1;
- y ++;
- }
- graafik (x, y);
- }
Tabel 2: Bresenhami algoritm
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 |
Kui uurite algoritmi ja tabelit 2, märkate seda;
- peamine silmus kasutab ainult liitmist ja lahutamist … korrutamist ei toimu
- y muster on sama mis tabelis 1.
Kuid me kasutame endiselt ujukoma numbreid … parandame selle.
Bresenhami (optimeeritud) algoritm
Bresenhami ujukoma algoritmi saab teisendada täisarvuks, kui skaleerime 'm' ja 'e' 2*x1 -ga, millisel juhul m = (y1/x1)*2*x1 = 2*y1
Peale m ja e skaleerimise on algoritm sarnane ülaltoodud algoritmiga, välja arvatud:
- iga kord, kui suurendame x, lisame e -le 2*y1
- suurendame y, kui e on võrdne või suurem kui x1.
- lahutame 'e' -st 1 asemel 2*x1
- Võrdluseks kasutatakse x1, mitte 0,5
Algoritmi kiirust saab veelgi suurendada, kui silmus kasutab testimiseks nulli. Selleks peame veaterminile „e” lisama nihke.
- int x1 = 8;
- int y1 = 6;
- int m = (y1 << 1); // konstant: kalle skaleeritud 2*x1 võrra
- int E = (x1 << 1); // konstant: 2*x1 ahelas kasutamiseks
- int e = -x1; // -E/2 nihe: test on nüüd tehtud nulliga
- graafik (0, 0);
- int y = 0;
- jaoks (x = 1; x <= x1; x ++) {
- e += m;
- kui (e> = x1) {
- e -= E
- y ++;
- }
- graafik (x, y);
- }
Tabel 3: Bresenhami (optimeeritud) algoritm
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 |
Taaskord on y muster sama, mis teistes tabelites. Huvitav on märkida, et tabel 3 sisaldab ainult täisarvu ja et suhe m/E = 12/16 = 0,75, mis on joone kalle „m”.
See algoritm on äärmiselt kiire, kuna põhisilmus hõlmab ainult liitmist, lahutamist ja võrdlust nulliga. Korrutamist ei kasutata peale selle, kui lähtestame väärtused E ja m, kasutades vasakule nihutamist, et kahekordistada x1 ja y1 väärtusi.
[1] See Bresenhami algoritmi optimeeritud versioon pärineb paberist "Bresenhami joon ja ringjoonistus", autoriõigus © 1994-2006, W Randolph Franklin (WRF). Tema materjali võib kasutada mittetulunduslikuks uurimistööks ja hariduseks, kui tunnustate teda ja lingite tagasi tema kodulehele,
6. samm: kood
Laadige lisatud fail samanimelisse kausta alla, seejärel laadige see plotterisse, kasutades oma arduino IDE -d (integreeritud arenduskeskkond).
Ühendage enne üleslaadimist lahti bluetoorh moodul HC-06. See on vajalik, et vältida jadapordi konflikti USB -kaabliga.
Kolmanda osapoole kood
Lisaks ülaltoodud.ino-koodile vajate järgmisi tasuta pakette / annetusnõusid:
- Teraterm, mis on saadaval aadressil
- Inkscape, mis on saadaval aadressil
Kõigi ülaltoodud kolmanda osapoole pakettide installimise ja kasutamise juhised leiate minu artiklist
Samm: menüü
Looge oma plotteriga bluetooth -ühendus, kasutades funktsiooni "Teraterm".
Lülitage "suurtähelukk" sisse, kuna kõik käsud on kirjutatud suurtähtedega.
Sisestage täht „M” ja menüü peaks ilmuma ülaltoodud viisil.
Menüü on üsna iseenesestmõistetav:
- M (või M0) avab menüü
- G0 võimaldab teil pliiatsi saata tõstetud pliiatsiga kindlasse XY koordinaati.
- G1 võimaldab teil saata pliiatsi langetatud pliiatsi abil kindlale XY koordinaadile.
- T1 võimaldab teil oma pliiatsi asetada 0, 0 koordinaadi kohale. Väljumiseks sisestage „E”.
- T2 võimaldab joonistamist skaleerida. Näiteks "T2 S2.5" skaleerib teie joonist 250%. Vaikimisi skaala on 100%
- T3 ja T4 võimaldavad teil pensüstelit tõsta või langetada.
- T5 joonistab "ABC" testimustri.
- T6 joonistab "sihtmärgi".
- T7 joonistab radiaalsete joonte komplekti, mille eesmärk on kontrollida, kas Bresenhami algoritm töötab igas kaheksas oktandis
Märkused:
- kõik pliiatsi liigutused kasutavad joonistusskaalat, kasutades menüüvalikut T2
- numbrid "17:" ja "19:" on arduino tõlgi käepigistuse koodid "Xon" ja "Xoff".
8. samm: kalibreerimine
X_STEPS_PER_MM ja Y_STEPS_PER_MM väärtused on 90 mm läbimõõduga trumli jaoks.
Trumli teiste läbimõõtude väärtusi saab arvutada järgmiste seoste abil:
- trumli ümbermõõt on PI*läbimõõt
- 2048 sammu võrdub iga mootori võlli ühe pöördega
- üks GT-2 rihmaratta pööre võrdub hammasrihma 40 millimeetrise lineaarse liikumisega
Teine meetod on sisestada järgmised käsud,
- G1 X0 Y100
- G1 X100 Y100
seejärel mõõtke saadud ridade pikkust ja skaleerige X-STEPS_PER_MM ja Y_STEPS_PER_MM väärtused
9. samm: Gcode'i eeltöötlus
See plotter vajab ainult nelja Inkscape gcode'i (nimelt: G0, G1, G2, G3). Kood käivitub oluliselt kiiremini, kui eemaldame kõik mittevajalikud gcodes ja kommentaarid.
Selleks vajate "Notepad ++" koopiat. See tasuta tekstiredaktor sisaldab "regulaaravaldise" otsingumootorit soovimatu teksti leidmiseks ja eemaldamiseks. Notepad ++ on saadaval aadressil
Avage muudetav fail Notepad ++ abil ja asetage kursor faili ülaossa.
Valige ülemisest menüüribalt "Vaata/näita sümbolit/kõiki märke" ja seejärel "Otsi/asenda …".
Klõpsake märkeruutu "Regulaaravaldis" (vt 1. pilti) ja sisestage otsingukasti kõik järgmised koodijärjestused.
Pärast iga kirjet klõpsake nuppu "Asenda kõik":
- %
- (.*)
- ^M.*$
- Z.*$
Ülaltoodud regulaaravaldised eemaldavad kõik % sümbolid, kõik sulgudes näidatud kommentaarid, kõik M -koodid, kõik Z -koodid ja järgnevad koodid.
Nüüd klõpsake märkeruutu "Laiendatud avaldis" (vt 2. pilti) ja sisestage järgmine koodijärjestus:
r / n / r / n / r / n
See avaldis eemaldab esimese järjestuse loodud soovimatud tagasivõtmised ja reavaated.
Salvestage fail teise nime all, kasutades nuppu "Salvesta nimega".
Valmis.
10. samm: tulemused
See plotter ehitati "kontseptsiooni tõestuseks" ega kavatsenud kunagi täiuslik olla. Olles öelnud, et tulemused pole liiga halvad. Need vastavad kindlasti minu disainieesmärgile kanda akvarellide piirjooned paberile.
Esimesed kolm pilti on sisseehitatud testimustrid vastavalt T5, T6, T7.
"Tere maailm!" muster saadeti plotterile bluetoothi kaudu. Lisatud on selle faili "eeltöödeldud" koopia.
Samm: koodi värskendamine
Selle plotteri kood on uuendatud versioonile Drum_Plotter_V2.ino.
Algsest Drum_Plotter.ino -st tehtud muudatused hõlmavad järgmist:
- pliiatsi sujuvam positsioneerimine
- tunneb nüüd ära G02 gcode juhised (päripäeva kaared)
- tunneb nüüd ära G03 gcode juhised (vastupäeva kaared)
Lisatud skeem kirjeldab minu meetodit kaare nurga arvutamiseks.
12. samm: Drum_plotter_v3.ino
Lisatud on "CNC Drum Plotter" koodiuuendus.
"Drum_plotter_v3.ino" parandab väikese vea, mis mõjutas plotteri täpsust.
Muutuste ajalugu
Versioon 2:
Kahe kaarega kõverad lisatud
Versioon 3:
Järgmised funktsioonid kirjutati ümber, et lahendada väike viga, mis mõjutas plotteri täpsust.
- (int) asendatakse funktsiooniga move_to () ringiga ().
- draw_line () funktsiooni "oktant" otsingu algoritm on täiustatud
- Tõlk kasutab nüüd stringifunktsioone, mitte näpunäiteid, mis lihtsustab disaini. Näiteks võime nüüd otsida "MENÜÜ", mitte otsida tähte "M", seejärel eraldada järgnev täisarv. See võimaldab teil plotterit oma käskudega isikupärastada.
Samm 13: Drum_plotter_plotter_v4.ino
16. jaanuar 2017:
Selle trummelplotteri koodi on veelgi optimeeritud. Lisatud on lisafunktsioone.
Muudatused hõlmavad järgmist:
- kiirem joonistusjoone () algoritm
- sobiv funktsioon move_to ()
- sammuloendurid
- väike veaparandus
Lisateabe saamiseks lugege lisatud "drum_plotter_v4.ino" kommentaare.
Muude juhendite vaatamiseks klõpsake siin.
Soovitan:
Pöörlev CNC PUDELIPLOTTER: 9 sammu (piltidega)
PÖÖRDAV CNC -PUDELIPLOTTER: Võtsin kätte mõned rullid, mida ilmselt printeris kasutatakse. Mul tekkis idee muuta need CNC pudelite plotteri pöörlemisteljeks. Täna tahaksin jagada, kuidas nendest rullidest ja muudest sissekannetest CNC -pudeli plotterit ehitada
Mini -CNC -masina valmistamine: 11 sammu (piltidega)
Mini CNC -masina valmistamine: Tere, kõik loodan, et teil läheb hästi. Olen siin veel ühe väga laheda projektiga, mille saate ehitada arvuti jääkide/ kasutatud osade abil. Selles juhendis näitan teile, kuidas saate kodus teha vana CNC -masina abil mini -CNC -masinat
CNC robotplotter: 11 sammu (piltidega)
CNC robotplotter: a.artiklid {font-size: 110,0%; fondi kaal: paks; fondi stiil: kaldkiri; teksti kaunistamine: puudub; taustavärv: punane;} a. osakesed: hõljutage {tausta-värv: must;} See juhend kirjeldab CNC-juhitud robotplotterit. Robot sisaldab
DIY Mini CNC lasergraveerija: 19 sammu (piltidega)
DIY Mini CNC lasergraveerija: See on juhend, kuidas ma oma vana CNC lasergraveerija ümber panin ja tegin vanade DVD -draivide ja 250 mW laseriga stabiilse versiooni Arduino -põhisest laser -CNC -graveerijast ja õhukesest paberilõikurist. Minu CNC vana versioon: https: //www.instructables
Arduino CNC plotter (joonistusmasin): 10 sammu (piltidega)
Arduino CNC joonistaja (JOONISMASIN): Hei poisid! Loodan, et teile juba meeldis minu eelmine juhendatav " Kuidas teha oma Arduino koolitusplatvorm " ja olete uueks valmis, nagu tavaliselt, tegin selle õpetuse, mis juhendab teid samm -sammult, muutes samas sellise hämmastava