CNC Robot Plotter (4 / 11 steg)
Steg 4: Programvara design notes
.Ino koden för detta projekt har utvecklats med "codebender" på https://codebender.cc/. "Codebender" är ett moln baserad IDE (integrated development environment) som är gratis att använda, har utmärkta felsökning och identifierar automatiskt din arduino.
SKALA och CWR konstanter används i koden bestäms av:
- robot dimensioner,
- den motoriska specifikationen.
- och ditt val av "fördjupat mode".
Motoriska specifikationer
"28BYJ-48-5V stegmotorer" används i detta projekt har ett "steg" 5.625 graders vinkel / 64 och en "hastighet variation ratio" 64/1. Detta översätts till 4096 möjligt steg för en tur på den utgående axeln men antar att du använder en teknik som kallas "halv-stepping".
Hur Stepper Motors arbete
"28BYJ-48-5V stegmotorer" har fyra spolar med en formad järnkärna som innehåller åtta polacker. Var och en av de fyra pole-delarna förskjuts så att det finns 32 polacker fördelade 360/32 = 11.25 grader isär.
Om vi vitalisera (steg) en spole i taget (wave-stepping) eller två spolar i taget (full-stepping), kommer att rotorn göra en komplett revolution i 32 steg. Eftersom den interna Gearingen är 64/1, krävs en vänden av den utgående axeln 2048 steg.
Halv-Stepping
Denna robot använder halv-stepping.
Halv-stepping är en teknik där halv-steg skapas av växelvis energigivande en enda spole, då två intilliggande spolar, alltså dubblera antalet steg från 32 till 64 på en tur av rotoren. Detta är motsvarande 64 polacker fördelade 360/64 = 5.625 grader isär (stride vinkel).
Eftersom den interna Gearingen är 64/1, kräver en tur av utgående axel 4096 steg.
De binära mönsterna för att uppnå halv-stepping dokumenteras i move() {...} och rotate() {...} funktioner.
SKALA
SKALA kalibrerar robotens framåt och bakåt rörelse.
Förutsatt att ett hjuldiameter 65 mm då roboten kommer att flytta framåt (eller bakåt) PI * 65/4096 = 0.04985 mm per steg. Att uppnå 1 mm per steg (Inkscape använder mm för dess "samordnar) måste vi använda en skalfaktor för 1/0.04985 = 20.0584. Detta innebär att antalet steg som behövs för att resa mellan två punkter är "avstånd * skala".
CWR
CWR (circle-diameter-hjuldiameter förhållande) används för att kalibrera robotens tur-vinkel. En hög CWR erbjuder största upplösning och lägsta kumulativa fel, men nackdelen är att det tar längre tid för roboten att vända.
Antar att robot hjul är placerade 130mm isär då hjulen måste resa PI * 130 = 408.4 mm för roboten att rotera 360 grader. Om diametern på varje hjul är 65mm så en tur i ett hjul kommer att flytta roboten PI * 65 = 204.2 mm runt cirkeln. För hjulen att resa full cirkel avståndet måste de vända 407.4/204.2 = 2.0 (två gånger).
Detta motsvarar en CWR i 2 och en upplösning på 360/(CWR*4096) = 0.0439 grader per steg.
För största noggrannhet bör omfattning och CWR båda använda så många decimaler som möjligt.
GCODE tolken
Roboten svarar endast på Inkscape kommandon börjar med G00, G01, G02 och G03.
Ignorerar alla F (matningshastighet) och Z (vertikalt) koder som roboten kan endast resa med en hastighet, och pennan är alltid upp för kod G00 och ner för alla andra koder. Jag, och J ("biarc") koder används när rita kurvor ignoreras också.
Oanvända koden M100 används för "MENU" (M för Menu).
Extra T-koder har lagts på försök (T för Test)
Koden för min tolk var inspirerad av https://github.com/MarginallyClever/gcodecncdemo