INHOUDSOPGAWE:

CNC trommelplotter: 13 stappe (met foto's)
CNC trommelplotter: 13 stappe (met foto's)

Video: CNC trommelplotter: 13 stappe (met foto's)

Video: CNC trommelplotter: 13 stappe (met foto's)
Video: Как вырезать 3D-шахматную фигуру на 3-осевом ЧПУ The Undead Dark Knight 2024, November
Anonim
Image
Image
CNC trommelplotter
CNC trommelplotter

Hierdie instruksies beskryf 'n A4/A3-plotter gemaak van 'n gedeelte plastiekpyp, twee BYJ-48-stapmotors en 'n SG-90-servo. Dit is in wese 'n platbedplotter wat in 'n trommel opgerol is.

Die een motor draai die trom terwyl die ander die drukkop beweeg. Die servo word gebruik om die pen op te lig en te laat sak.

Hierdie plotter het 'n aantal voordele bo 'n tradisionele plotter:

  • aansienlik kleiner voetspoor
  • benodig slegs een lineêre geleidingsrail
  • eenvoudig om op te stel
  • goedkoop

'N Aan boord-tolk aanvaar die gcode-uitvoer van Inkscape.

Kommunikasie met die plotter geskied via 'n bluetooth -skakel.

Die plotter is verenigbaar met die CNC-grafiese tablet wat beskryf word in my instruksionele

Alhoewel dit nie 'n presisie -instrument is nie, is die akkuraatheid van hierdie plotter bevredigend vir die beoogde doel om waterverfsketse na papier oor te dra.

Stap 1: Die stroombaan

Die stroombaan
Die stroombaan

Die kring bestaan uit 'n Arduino UNO R3 -mikrobeheerder en 'n pasgemaakte skild waarop die diskrete komponente gemonteer is. Krag word toegepas via 'n eksterne 5 volt 1 amp -reguleerder. Die gemiddelde stroom is ongeveer 500mA.

Die stapmotors BYJ-48 is aan PORTB (penne D8, D9, D10, D11) en PORTC (penne A0, A1, A2, A3) gekoppel. Die SG-90 pen-lift servo is aan pen D3 geheg.

Die 560 ohm weerstande, wat uitgelaat kan word, bied 'n mate van kortsluitingsbeskerming aan die arduino as daar iets skeefloop. Hulle maak dit ook makliker om die skild te bedek terwyl hulle as 'springers' oor die toevoerspore optree.

Die 1k2 en 2K2 weerstande voorkom skade aan die HC-06 bluetooth module [1] deur die 5 volt uitset van die arduino tot 3,3 volt te laat daal.

[1] Ontkoppel die HC-06 bluetooth-module wanneer u kode via die USB-poort na die arduino oplaai. Dit sal konflikte met die seriële poort voorkom.

Stap 2: Die lineêre rit

Die Lineêre Drive
Die Lineêre Drive
Die Lineêre Drive
Die Lineêre Drive
Die Lineêre Drive
Die Lineêre Drive

Die lineêre aandrywing bestaan uit 'n lengte van 3 mm x 32 mm aluminiumstaaf, 'n strook aluminiumplaat en vier klein kogellagers.

Die aluminium is by die meeste hardewarewinkels beskikbaar. Die U624ZZ 4x13x7mm U-groef katrolle is beskikbaar by

Eenvoudige handgereedskap is al wat u benodig. Sny die aluminiumstaaf volgens u plotterafmetings.

Die motor vergadering

Monteer die BJY-48-trapmotor deur die staaf aan die een kant en bevestig 'n GT2 20-tand, katrol van 5 mm, aan die motoras. Monteer nou nog 'n GT2 -katrol aan die ander kant van u staaf sodat die katrol vrylik kan draai. Ek het 'n buisvormige (radio) afstandhouer met 'n deursnee van 5 mm en 'n bout van 3 mm gebruik om dit te bereik.

Draai nou 'n lengte GT2 -riem om die katrolle. Verbind die ringe met 'n halwe draai sodat die tande inmekaar vleg en met 'n kabelbinder vasgemaak word.

Bevestig laastens die koets met 'n kabelbinder aan die tandriem.

Die waentjie

Die waensamenstel is gemaak van 'n strook aluminiumplaat [1] waarop die katrolle van die U624ZZ vasgemaak is. Gebruik indien nodig 'n wasser van 4 mm om die katrolle van die aluminiumplaat te verwyder.

Die katrolle, met 'n groef van 4 mm, lê aan die onderkant en onderkant van die aluminiumstaaf, sodat daar geen vertikale beweging is nie, maar die aluminiumstrook beweeg vrylik links en regs.

Om te verseker dat die koets vrylik loop, moet u die boonste twee katrolle eers monteer, met die katrolle op die staaf, en die posisies van die onderste katrolle merk. Die gate vir hierdie twee katrolle kan nou geboor word. Gebruik eers 'n klein "pilot" boor om te verhoed dat die groter 4mm boor dryf.

Voordat u die aluminiumstrook in 'n "U" buig, moet u 'n gat bo en onder boor om by u pen deursnee te pas. Voltooi nou die draaie.

Bevestig die tandriem aan die wa met behulp van 'n kabelbinder en 'n 3 mm-bout tussen die twee boonste katrolle.

Die penhysersamestelling

Bevestig 'n SG-90 servo aan die bokant van die wa met behulp van een of twee kabelbinders.

Laat sak jou pen in die twee gate wat jy geboor het. Maak seker dat die pen vrylik op en af gly.

Bevestig 'n "kraag" aan u pen sodat die pen net van die trommel af is wanneer die servo in die pen-up posisie is.

[1] Aluminium kan gesny word deur albei kante van die blad met 'n skerp mes (boks snyer) te maak en dan die snit oor die rand van 'n tafel te buig. 'N Paar kronkels en die laken breek en laat 'n reguit breuk. In teenstelling met blikkies, knik hierdie metode nie die aluminium nie.

Stap 3: Die trommel

Die trommel
Die trommel
Die trommel
Die trommel
Die trommel
Die trommel

Die trommel bestaan uit 'n gedeelte van plastiekpyp met twee houtproppe [1].

Gebruik 'n kompas wat op die binneste radius van u pyp gestel is, om die buitekant se uiteinde te trek. Sny nou elke omtrek met 'n fyn lemmesaag ("omgaan", "fret") en pas dan elke eindprop aan met behulp van 'n houtras. Draai die eindproppe vas met klein, versinkte houtskroewe.

'N Bout van 6 mm deur die middel van elke eindprop vorm die as.

Trommel afmetings

Die grootte van die trommel word bepaal deur u papierformaat. 'N Trommeldiameter van 100 mm ondersteun A4 -portret- en A3 -landskap. 'N Trommeldiameter van 80 mm ondersteun slegs A4 -landskap. Gebruik so 'n klein trommeldiameter as moontlik om die traagheid te verminder … die BYJ-48-motors is slegs klein.

'N Trommeldiameter van 90 mm is ideaal vir A4 -portret- en A3 -landskappapier, aangesien die teenoorgestelde rande ongeveer 10 mm oor die trommel vou, wat beteken dat u slegs een naat moet plak.

Draai die trommel

Elke as gaan deur 'n aluminium eindbeugel sodat die trommel vrylik kan draai. Eindvlot word voorkom deur middel van 'n GT-2, 20 tand, 6 mm-boor, katrol wat aan die een kant aan die as vasgemaak is. 'N Deurlopende GT-2-tandriem verbind die BJY-48-trapmotor met die trom. Die motor benodig 'n katrol met 'n boorgrootte van 5 mm.

[1] Plastiek-eindproppe is beskikbaar vir die meeste pypdiameters, maar is verwerp omdat dit oor die pyp pas eerder as binne en die plastiek is geneig om te buig. Dit sal waarskynlik goed wees as 'n deurlopende as in plaas van die boute gebruik word … maar dan benodig u 'n metode om die as aan die eindproppe vas te maak.

Stap 4: Bouwenke

Maak seker dat die pen in die middel van die trommel beweeg. Dit kan bereik word deur die hoeke uit die houtsteun te sny. As die pen uit die middel is, is dit geneig om langs die trommel te gly.

Dit is belangrik om die twee pengate akkuraat te boor. Enige wankeling in die pengeleier of waensamestelling sal wankel langs die X-as veroorsaak.

Draai nie die GT-2-riemspanne te sterk vas nie; hulle moet net styf gespan word. BYJ-48-trapmotors het nie baie wringkrag nie.

BJY-48-trapmotors vertoon dikwels klein hoeveelhede terugslag wat onbeduidend langs die X-as is, maar wat kommerwekkend is as dit by die Y-as kom. Die rede hiervoor is dat een rotasie van die Y-as-motor gelyk is aan een rotasie van die trommel, terwyl die penwa baie draaie van die X-as-motor benodig om die lengte van die trommel te kruis. Enige Y-as-terugslag kan uitgeskakel word deur 'n konstante wringkrag op die trommel te hou. 'N Eenvoudige metode is om 'n klein gewig vas te maak aan 'n nylonsnoer wat om die trommel gedraai is.

Stap 5: Bresenham se lyntekenalgoritme

Bresenham se lynteken algoritme
Bresenham se lynteken algoritme
Bresenham se lynteken algoritme
Bresenham se lynteken algoritme

Hierdie plotter gebruik 'n geoptimaliseerde weergawe [1] van Bresenham se lyntekenalgoritme. Ongelukkig is hierdie algoritme slegs geldig vir lynhange kleiner as of gelyk aan 45 grade (dit wil sê een oktant van 'n sirkel).

Om hierdie beperking te omseil, "karteer" ek alle XY -insette na die eerste "oktant" en "ontkoppel" dit dan wanneer dit tyd is om te teken. Die invoer- en uitvoerafbeeldingsfunksies om dit te bereik, word in die diagram hierbo getoon.

Afleiding

Die res van hierdie stap kan weggelaat word as u vertroud is met Bresenham se algoritme.

Laat ons 'n lyn trek van (0, 0) tot (x1, y1) waar:

  • x1 = 8 = horisontale afstand
  • y1 = 6 = vertikale afstand

Die vergelyking vir 'n reguit lyn wat deur die oorsprong (0, 0) gaan, word gegee deur die vergelyking y = m*x waar:

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

Eenvoudige algoritme

'N Eenvoudige algoritme om hierdie lyn in te teken, is:

  • int x1 = 8;
  • int y1 = 6;
  • dryf m = y1/x1;
  • plot (0, 0);
  • vir (int x = 1; x <= x1; x ++) {
  • int y = rond (m*x);
  • plot (x, y);
  • }

Tabel 1: Eenvoudige algoritme

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

Daar is twee probleme met hierdie eenvoudige algoritme:

  • die hooflus bevat 'n vermenigvuldiging wat stadig is
  • dit gebruik drywende puntgetalle, wat ook stadig is

'N Grafiek van y teenoor x vir hierdie reël word hierbo getoon.

Bresenham se algoritme

Bresenham het die konsep van 'n foutterm 'e' bekendgestel wat op nul geïnitialiseer word. Hy het besef dat die m*x waardes wat in tabel 1 getoon word, verkry kan word deur die opeenvolging van 'm' by 'e'. Hy het verder besef dat y slegs toegeneem word as die breukdeel van m*x groter as 0,5 is. Om sy vergelyking binne die reeks 0 <= 0.5 <= 1 te hou, trek hy 1 van 'e' af wanneer y vermeerder word.

  • int x1 = 8;
  • int y1 = 6;
  • dryf m = y1/x1;
  • int y = 0;
  • float e = 0;
  • plot (0, 0);
  • vir (int x = 1; x <= x1; x ++) {
  • e+= m;
  • as (e> = 0.5) {
  • e -= 1;
  • y ++;
  • }
  • plot (x, y);
  • }

Tabel 2: Bresenham se algoritme

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

As u die algoritme en tabel 2 ondersoek, sal u dit waarneem;

  • die hooflus gebruik slegs optelling en aftrekking … daar is geen vermenigvuldiging nie
  • die patroon vir y is dieselfde as vir tabel 1.

Maar ons gebruik steeds swaai puntgetalle … laat ons dit regstel.

Bresenham (geoptimaliseerde) algoritme

Bresenham se dryfpunt -algoritme kan omgeskakel word na 'n heelgetalvorm as ons 'm' en 'e' met 2*x1 skaal, in welke geval m = (y1/x1)*2*x1 = 2*y1

Afgesien van die skaal van 'm' en 'e', is die algoritme soortgelyk aan die hierbo, behalwe:

  • ons tel 2*y1 by 'e' elke keer as ons 'x' verhoog
  • ons vermeerder y as e gelyk of groter is as x1.
  • ons trek 2*x1 af van 'e' in plaas van 1
  • x1 word gebruik vir die vergelyking in plaas van 0.5

Die snelheid van die algoritme kan verder verhoog word as die lus nul gebruik vir die toets. Om dit te kan doen, moet ons 'n afwyking by die foutterm 'e' voeg.

  • int x1 = 8;
  • int y1 = 6;
  • int m = (y1 << 1); // konstant: helling met 2*x1 afgeskaal
  • int E = (x1 << 1); // konstant: 2*x1 vir gebruik in lus
  • int e = -x1; // offset van -E/2: toets nou op nul gedoen
  • plot (0, 0);
  • int y = 0;
  • vir (x = 1; x <= x1; x ++) {
  • e += m;
  • as (e> = x1) {
  • e -= E
  • y ++;
  • }
  • plot (x, y);
  • }

Tabel 3: Bresenham (geoptimaliseerde) algoritme

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

Die patroon vir y is weer dieselfde as in die ander tabelle. Dit is interessant om daarop te let dat tabel 3 slegs heelgetalle bevat en dat die verhouding m/E = 12/16 = 0,75, wat die helling 'm' van die lyn is.

Hierdie algoritme is baie vinnig, aangesien die hooflus slegs optelling, aftrekking en vergelyking met nul behels. Vermenigvuldiging word nie gebruik nie, behalwe as ons die waardes vir 'E' en 'm' inisialiseer met 'n 'links-skuif' om die waardes van x1 en y1 te verdubbel.

[1] Hierdie geoptimaliseerde weergawe van Bresenham se algoritme is afkomstig van 'n artikel "Bresenham Line and Circle Drawing", kopiereg © 1994-2006, W Randolph Franklin (WRF). Sy materiaal kan vir navorsing en opvoeding sonder winsbejag gebruik word, op voorwaarde dat u hom krediteer en na sy tuisblad skakel,

Stap 6: Die kode

Laai die aangehegte lêer af in 'n gelyknamige gids en laai dit dan na die plotter met u arduino IDE (geïntegreerde ontwikkelingsomgewing).

Ontkoppel die HC-06 bluetoorh-module voordat u die oplaai probeer. Dit is nodig om 'n seriële poort met die USB -kabel te vermy.

Derdepartykode

Benewens die bogenoemde.ino-kode, benodig u ook die volgende sagtewarepakkette: gratis / skenkingsware:

  • Teraterm wat beskikbaar is op
  • Inkscape wat beskikbaar is op

Instruksies vir die installering en gebruik van elk van die bogenoemde derdeparty-pakkette kan gevind word in my artikel

Stap 7: Spyskaart

Spyskaart
Spyskaart

Maak 'n bluetooth -verbinding met u plotter met behulp van 'Teraterm'.

Skakel u "caps lock" aan, aangesien alle opdragte hoofletters is.

Tik die letter 'M' en 'n spyskaart moet verskyn soos hierbo getoon.

Die spyskaart verduidelik redelik vanself:

  • M (of M0) wys die spyskaart
  • Met G0 kan u die pen na 'n spesifieke XY-koördinaat stuur met die pen omhoog.
  • Met G1 kan u die pen na 'n spesifieke XY-koördinaat stuur met die pen neergelê.
  • Met T1 kan u u pen bo u 0, 0-koördinaat plaas. Tik 'E' om te verlaat.
  • Met T2 kan u u tekening skaal. Byvoorbeeld, "T2 S2.5" sal u tekening met 250%skaal. Die standaard skaal is 100%
  • Met T3 en T4 kan u die pen lig of laat sak.
  • T5 teken 'n "ABC" toetspatroon.
  • T6 teken 'n 'teiken'.
  • T7 trek 'n stel radiale lyne, met die doel om te verifieer dat Bresenham se algoritme in elk van die agt "oktante" werk

Notas:

  • alle penbewegings gebruik die tekenskaal wat met die kieslysopsie T2 gestel word
  • die "17:" en "19:" getalle is die "Xon" en "Xoff" terminale handdruk kodes van die arduino tolk.

Stap 8: Kalibrasie

Die waardes vir X_STEPS_PER_MM en Y_STEPS_PER_MM is vir 'n trommel van 90 mm in deursnee.

Waardes vir ander trommeldiameters kan bereken word deur die volgende verwantskappe te gebruik:

  • die omtrek van die trommel is PI*deursnee
  • 2048 stappe is gelyk aan een omwenteling van elke motoras
  • 'n omwenteling van 'n GT-2-katrol is gelyk aan 40 millimeter lineêre beweging van 'n tandriem

'N Ander metode is om die volgende opdragte in te voer:

  • G1 X0 Y100
  • G1 X100 Y100

meet dan die lengte van die resulterende lyne en "skaal" die waardes vir X-STEPS_PER_MM en Y_STEPS_PER_MM

Stap 9: Gcode -voorverwerking

Gcode Voorverwerking
Gcode Voorverwerking
Gcode Voorverwerking
Gcode Voorverwerking

Hierdie plotter benodig slegs vier van die Inkscape -gcodes (nl: G0, G1, G2, G3). Die kode sal aansienlik vinniger uitgevoer word as ons alle onnodige gcodes en kommentaar verwyder.

Om dit te kan doen, benodig u 'n afskrif van "Notepad ++". Hierdie gratis teksredakteur bevat 'n soektog met 'gewone uitdrukking' om ongewenste teks op te spoor en te verwyder. Notepad ++ is beskikbaar op

Maak die lêer oop wat met Notepad ++ gewysig moet word en plaas u wyser bo -aan die lêer.

Kies "Kyk/wys simbool/alle karakters" gevolg deur "Soek/vervang …" in die menubalk bo.

Klik op die boks "Gereelde uitdrukking" (sien 1ste prent) en voer elk van die volgende kodevolgorde in die soekkassie in.

Klik op "Vervang alles" na elke inskrywing:

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

Bogenoemde gewone uitdrukkings verwyder alle % simbole, alle opmerkings tussen hakies, alle M kodes, alle Z kodes en die kodes wat volg.

Klik nou op die boks "Uitgebreide uitdrukking" (sien 2de prentjie) en voer die volgende kodevolgorde in:

r / n / r / n / r / n

Hierdie uitdrukking verwyder die ongewenste vervoer-opbrengste en reëlvoere wat deur die eerste volgorde geskep is.

Stoor u lêer onder 'n ander naam met 'Stoor as'.

Klaar.

Stap 10: Resultate

Resultate
Resultate

Hierdie plotter is gebou as 'bewys van konsep' en was nooit bedoel om perfek te wees nie. Dit gesê, die resultate is nie te sleg nie. Hulle voldoen beslis aan my ontwerpdoel om waterverfsketse oor te dra op papier.

Die eerste drie beelde is onderskeidelik die ingeboude toetspatrone T5, T6, T7.

Die "Hallo wêreld!" patroon is via bluetooth na die plotter gestuur. 'N "Voorverwerkte" afskrif van hierdie lêer word aangeheg.

Stap 11: Kode -opdatering

Kode -opdatering
Kode -opdatering

Die kode vir hierdie plotter is opgedateer na Drum_Plotter_V2.ino.

Veranderinge van die oorspronklike Drum_Plotter.ino sluit in:

  • gladder posisionering van die pen
  • herken nou G02 gcode -instruksies (boë met die kloksgewys)
  • herken nou G03 gcode-instruksies (boë teen die kloksgewys)

Die aangehegte diagram gee 'n uiteensetting van my metode om die booghoek te bereken.

Stap 12: Drum_plotter_v3.ino

'N Kode -opdatering vir' CNC Drum Plotter 'is aangeheg.

'drum_plotter_v3.ino' stel 'n geringe fout reg wat die akkuraatheid van die plotter beïnvloed het.

Verander geskiedenis

Weergawe 2:

Twee-boog kurwes bygevoeg

Weergawe 3:

Die volgende funksies is herskryf om 'n geringe fout wat die akkuraatheid van die plotter beïnvloed het, aan te spreek.

  • (int) vervang met ronde () in die move_to () -funksie.
  • draw_line () funksie "oktant" soekalgoritme verbeter
  • Die tolk gebruik nou stringfunksies eerder as wenke wat die ontwerp vereenvoudig. Ons kan byvoorbeeld nou na "MENU" soek, eerder as om na die letter 'M' te soek, en dan die heelgetal wat daarop volg, te onttrek. Hiermee kan u die plotter personaliseer met u eie opdragte.

Stap 13: Drum_plotter_plotter_v4.ino

16 Januarie 2017:

Die kode vir hierdie tromplotter is verder geoptimaliseer. Bykomende funksies is bygevoeg.

Die veranderinge sluit in:

  • vinniger draw_line () algoritme
  • bypassende move_to () funksie
  • stap tellers
  • geringe foutoplossing

Lees die kommentaar in die aangehegte "drum_plotter_v4.ino" vir meer besonderhede.

Klik hier om my ander instruksies te sien.

Aanbeveel: