Stap 4: Software ontwerpnotities
De code van de Ino voor dit project werd ontwikkeld met behulp van "codebender" op https://codebender.cc/. "Codebender" is dat een cloud gebaseerde IDE (geïntegreerde ontwikkelomgeving) die is gratis te gebruiken, heeft uitstekende debuggen, en auto-detecteert uw arduino.
De schaal en CWR constanten gebruikt in de code worden bepaald door:
- de afmetingen van de robot,
- de motor specificatie,
- en uw keuze van "stap-modus".
Motor specificaties
De "28BYJ-48-5V stappenmotoren" gebruikt in dit project hebben een "stap-hoek" van 5.625 graden / 64 en een "speed variatie ratio" van 64/1. Dit vertaalt naar 4096 mogelijke stappen voor een beurt van de uitgaande as, maar wordt ervan uitgegaan dat u een techniek genaamd "half-intensivering".
Hoe Stepper Motors werk
De "28BYJ-48-5V stappenmotoren" hebben vier spoelen met een gevormde ijzeren kern waarin acht stokken. Elk van de vier pole-stukken ontheemd zijn zodanig dat er zijn 32 Polen spaced 360/32 = 11.25 graden uit elkaar.
Als we energize (stap) een spoel tegelijk (Golf-intensivering), of twee rollen tegelijk (full-intensivering), zal de rotor maken een revolutie in 32 stappen voltooien. Aangezien de interne gearing 64/1, vereist een beurt van de uitgaande as 2048 stappen.
Half-intensivering
Deze robot gebruikt half-stepping.
Half-intensivering is een techniek waarbij halve-stappen zijn gemaakt door afwisselend energieke een interne spoel, dan twee aangrenzende opgerold, dus een verdubbeling van het aantal stappen van 32 naar 64 voor een beurt van de rotor. Dit is het equivalent van 64 Polen spaced 360/64 = 5.625 graden uit elkaar (stride hoek).
Aangezien de interne gearing 64/1, vereist een beurt van de uitgaande as 4096 stappen.
De binaire patronen voor het bereiken van de halve-intensivering zijn gedocumenteerd in de move() {...} en {...} rotate() functies.
SCHAAL
SCHAAL kalibreert de robot de voorwaartse en omgekeerde beweging.
Uitgaande van een wielen met een diameter van 65 mm dan de robot (of achteruit) PI bewegen zal * 65/4096 = 0.04985 mm per stap. Te bereiken van 1 mm per stap (Inkscape gebruikt mm voor haar ' coördineert) we moeten gebruik maken van een schaalfactor van 1/0.04985 = 20.0584. Dit betekent dat het aantal stappen die nodig zijn om te reizen tussen twee willekeurige punten "afstand * schaal".
CWR
De CWR (cirkel-diameter / wiel-diameterverhouding) wordt gebruikt voor het kalibreren van de robot de beurt-hoek. Een hoge CWR biedt grootste resolutie en minimale cumulatieve fout, maar het nadeel is dat het duurt langer voor de robot om te zetten.
Ervan uitgaande dat de robot wielen verdeelde 130mm uit elkaar zijn dan de wielen PI reizen moeten * 130 = 408,4 mm voor de robot om 360 graden te draaien. Als de diameter van elk wiel 65mm is dan een beurt van een wiel de robot PI verplaatsen zal * 65 = 204.2 mm rond de cirkel. Voor de wielen de volledige cirkel weg afleggen moeten zij zich 407.4/204.2 = 2.0 (tweemaal).
Dit vertaalt zich naar een CWR van 2 en een resolutie van 360/(CWR*4096) = 0.0439 graden per stap.
Voor de grootste nauwkeurigheid moeten de omvang en het CWR beide zoveel decimalen mogelijk gebruiken.
De GCODE-Interpreter
De robot reageert alleen op Inkscape opdrachten beginnen met G00, G01, G02 en G03.
Het negeert alle F (draaisnelheid) en Z (verticale positie) codes, zoals de robot alleen met een snelheid reizen kan, en de pen altijd is voor code G00 en naar beneden voor alle andere codes. De I, en J ("biarc")-codes gebruikt wanneer u uitzet curven worden ook genegeerd.
De ongebruikte code M100 wordt gebruikt voor het "MENU" (M voor Menu).
Extra T-codes zijn toegevoegd voor testdoeleinden (T voor Test)
De code voor mijn tolk werd geïnspireerd door https://github.com/MarginallyClever/gcodecncdemo