Tutorial · Gevorderd · 35 min

Hoe stappenmotoren werken: naloophoek en stappenverlies

Een stappenmotor maakt geen stappen: hij sleurt een rotor achter een draaiend veld. Dat verklaart microstappen, stappenverlies en een verkeerd staande motor.

De zin die stappenmotoren begrijpelijk maakt

Een stappenmotor maakt geen stappen.

Dat klinkt als een truc, maar het is het nuttigste wat je over het onderdeel kunt weten. Wat de driver werkelijk doet, is een magnetisch veld in de motor in kleine stappen draaien. De rotor is een permanente magneet met tanden, en volgt dat veld zoals een kompasnaald een magneet volgt — niet omdat het hem wordt opgedragen, maar omdat hij wordt aangetrokken.

De rotor staat daarom altijd achter het veld. Dat moet zo zijn: als hij precies met het veld samenvalt, werkt er geen kracht op hem en kan hij noch wrijving overwinnen, noch een last aandrijven. De hoek tussen waar het veld wijst en waar de rotor werkelijk staat heeft een naam — de naloophoek, soms de belastingshoek — en bijna alles wat een stappenmotor doet waar mensen van schrikken, is een feit over die hoek.

Een sinuskromme van koppel gedeeld door houdkoppel tegen de naloophoek tussen het gecommandeerde veld en de rotor, in elektrische graden, van minus 180 tot en met 270. Het gebied tussen min 90 en plus 90 is gearceerd als het stabiele gebied. Een rode markering staat op 90 graden met het label pull-out, met de aantekening dat het koppel voorbij dat punt afneemt terwijl de rotor verder wegglipt. Een amberkleurige markering op ongeveer 26 graden geeft aan waar een echte last zit, op 43 procent van het maximumkoppel. Markeringen op min 180 en 180 dragen het label instabiel. Een bijschrift merkt op dat één volle stap gelijk is aan 90 elektrische graden.
Het hele gedrag van een stappenmotor op één kromme. Het koppel is evenredig met de sinus van de naloophoek, dus het piekt op 90 elektrische graden — precies één volle stap — en neemt daarna af naarmate de rotor verder achteruit valt. Die dalende helft is de valkuil. SVG downloaden

Opgeschreven is het hele model één regel:

T = T_peak × sin(δ)

waarbij δ de naloophoek in elektrische graden is. Al het onderstaande is een gevolg daarvan.

Elektrische graden, en de 1,8°-motor

Stappenmotoren worden in mechanische graden opgegeven — een “1,8°-motor” beweegt 1,8° asrotatie per volle stap, wat 200 volle stappen per omwenteling geeft. Maar het magnetisme herhaalt zich veel sneller dan de as. Een standaard hybride motor heeft 50 rotortanden, dus de magnetische cyclus herhaalt zich 50 keer per asomwenteling:

Grootheid Mechanisch Elektrisch
Eén volle stap 1,8° 90°
Eén omwenteling 360° 18 000° (50 cycli)
Maximumkoppel bij 1,8° achter 90° achter
Stabiel bereik ±1,8° ±90°

Die omrekening is de enige rekenkunde die je nodig hebt: één volle stap is 90 elektrische graden, altijd, op elke 1,8°-motor. Het stabiele bereik — waarin verder achterblijven de rotor harder terugtrekt — is dus ±1 volle stap, en het punt zonder terugkeer bij 180° ligt maar twee volle stappen achter.

Waarom stappenmotoren stappen verliezen

Kijk nog eens naar die sinuskromme. Tussen −90° en +90° gedraagt de motor zich als een veer: verder achteruit vallen betekent sterker worden aangetrokken. Dat is een stabiel evenwicht, en daarom kan een stappenmotor sowieso op open lus draaien, zonder encoder en zonder terugkoppeling. De rotor corrigeert zichzelf.

Voorbij 90° slaat de sinus om. Val je nu verder achteruit, dan wordt het koppel dat je vooruittrekt zwakker. Wat je nog verder achteruit doet vallen. Wat het weer zwakker maakt — en bij 180° verandert het koppel van teken en duwt het de rotor naar de volgende pool in plaats van terug naar deze. Vanaf daar schuift de rotor door tot hij het volgende stabiele tandje grijpt, een volledige elektrische cyclus verderop.

Dus 90° is waar een constante last het dunne eind bereikt: erboven is er geen evenwicht om in te blijven, alleen een helling. Een korte uitwijking voorbij 90° is nog te overleven als de rotor de impuls heeft om terug te keren — vol stappen doet precies dat bij elke staprand, waarbij hij tot ongeveer 100° doorschiet en telkens herstelt — maar een last die voorbij 90° blijft zitten, valt al.

Dat is een verloren stap, en die heeft drie eigenschappen die je moet onthouden:

  • Hij is stil. Er is geen encoder. De driver blijft pulsen tellen, de firmware blijft hem geloven, en het idee dat de machine heeft van waar hij staat, is nu permanent fout. Elke beweging erna is verschoven.
  • Hij komt in viertallen. De rotor landt op het volgende stabiele punt, dat één elektrische cyclus verderop ligt — 360 elektrische graden, oftewel vier volle stappen. Een stappenmotor verliest nooit één stap. Hij verliest er vier, of acht, of honderd.
  • Hij herstelt zich nooit vanzelf. Stappen in de andere richting verliezen heft dit later niet op, behalve bij toeval.

De stappenmotor simulator integreert dit rechtstreeks in plaats van het te programmeren: niets in de code zoekt naar stappenverlies. De bewegingsvergelijking van de rotor is de sinuswet hierboven, en zodra sin(δ) omslaat, valt de rotor er vanzelf uit sync — en het gemelde verlies komt altijd als een veelvoud van vier naar voren.

Wat de naloophoek doet groeien

Drie dingen, en ze uit elkaar houden is hoe je een machine diagnosticeert.

Last. Bij constante beweging komt de naloophoek tot rust op de plek waar het geproduceerde koppel gelijk is aan het gevraagde koppel:

sin(δ) = torque demanded ÷ peak torque available

Een last op 43% van het maximum zit op 26 elektrische graden. Een last op 71% zit op 45°. Een last op 100% zit op 90° — precies op de rand, met nul marge. Daarom luidt het gebruikelijke advies om een stappenmotor op ongeveer de helft van zijn beschikbare koppel te dimensioneren: niet uit bijgeloof rond de veiligheidsfactor, maar omdat de helft aan koppel 30 elektrische graden naloop betekent en je 60° marge laat voor de overgang die je niet hebt doorgerekend.

Acceleratie. De rotor op gang krijgen kost ook koppel, en dat koppel komt uit hetzelfde budget. Tijdens de acceleratie is de vraag load + J × α, dus de naloophoek is op de helling het grootst, niet bij topsnelheid. Geef een stilstaande motor meteen het commando om volle snelheid te rijden, en het gecommandeerde veld schiet weg terwijl de rotor zich nog verzamelt — de naloop is binnen een milliseconde of twee voorbij 90°, en met niets om hem terug te trekken gaat hij door en zoemt de motor gewoon op zijn plaats. Die grens heeft een naam: de pull-in rate, de hoogste stapfrequentie die je vanaf stilstand zonder helling kunt commandoën.

Snelheid. Deze is het minst voor de hand liggend en de meest voorkomende oorzaak van storingen in de praktijk, en krijgt een eigen sectie.

Het koppel neemt af met de snelheid, en het houdkoppel is een marketinggetal

Het getal op het label van een motor — “0,44 N·m houdkoppel” — is gemeten met de as stil en de nominale stroom in de wikkelingen. Het vertelt je bijna niets over een motor die beweegt.

Een wikkeling is een inductie. Om koppel te maken moet de driver er stroom doorheen duwen en die stroom steeds omkeren, sneller en sneller naarmate de motor opschakelt. Twee dingen werken daartegen:

  • Reactantie. De weerstand van de wikkeling tegen veranderende stroom neemt evenredig toe met de elektrische frequentie, en de elektrische frequentie is 50× de assnelheid.
  • Tegen-EMK. Een draaiende rotor met permanente magneet wekt zelf een spanning op die de voeding tegenspreekt. Boven een bepaalde snelheid kan de voeding er simpelweg geen stroom meer doorheen duwen.
Pull-outkoppel in newtonmeter tegen de motorsnelheid in rpm, voor één motor bij een vaste stroomgrens van 1,2 amp, getekend voor drie voedingsspanningen. Elke kromme is vlak op 0,311 newtonmeter tot aan een kniksnelheid en zakt daarna af: 280 rpm bij 12 volt, 599 rpm bij 24 volt, en 907 rpm bij 36 volt. Een stippellijn markeert het houdkoppel bij 1,2 amp.
Zelfde motor, zelfde stroomgrens, drie voedingsspanningen. Het vlakke deel is waar de driver nog wint; de kniksnelheid is waar hij ophoudt met winnen. Volt verschuift de knik, en dat is de hele reden dat 3D-printers van 12 V naar 24 V zijn gegaan. SVG downloaden

Dit levert de twee regels op die ertoe doen wanneer een machine niet snel genoeg gaat:

Symptoom Wat te veranderen Waarom
Lage snelheid: valt stil onder belasting Verhoog de stroomgrens Onder de kniksnelheid bepaalt de stroom het koppel direct
Hoge snelheid: valt alleen dan stil Verhoog de voedingsspanning Boven de kniksnelheid is het de spanning die de stroom erin duwt
Overal stil Verkeerde motor, of de last is te groot Geen enkele instelling redt een te kleine motor

Meer ampère koopt koppel. Meer volt koopt snelheid. De stroom omhoogdraaien om een stilval bij hoge snelheid te verhelpen haalt niets uit, want voorbij de knik haalde de driver de ingestelde stroom sowieso niet — en je houdt er een warme motor aan over.

Microstappen: wat het wel en niet doet

Microstappen betekent het veld in fracties van een volle stap draaien door de twee fasestromen te mengen, in plaats van ze volledig aan en uit te schakelen. Bij 1/16 stappen verschuift één STEP-puls het veld met 5,625 elektrische graden in plaats van 90.

Wat het echt verhelpt is het naslingeren. De rotor is een massa aan een magnetische veer met heel weinig demping. Trap hem telkens 90 elektrische graden, dan schiet hij door, trilt hij na en komt hij tot rust — hoorbaar en zichtbaar. Dat is het geluid dat een motor in volle stappen maakt en de ribbels die hij in een oppervlakteafwerking achterlaat. Deel de trap door zestien, en de excitatie verdwijnt vrijwel.

Dat kun je meten. Bestuur dezelfde as op dezelfde snelheid met dezelfde last, en leg vast hoe ver de slede van het gecommandeerde pad afwijkt:

Microstappen Stapgrootte (GT2-riem) Grootste afwijking van het pad Rustfout door de last
Volle stap 0,200 mm 0,127 mm 0,049 mm
1/2 0,100 mm 0,082 mm 0,045 mm
1/4 0,050 mm 0,061 mm 0,044 mm
1/8 0,025 mm 0,050 mm 0,044 mm
1/16 0,0125 mm 0,045 mm 0,044 mm

Lees die laatste twee kolommen naast elkaar, want ze vormen het hele betoog. Zestien keer de resolutie levert ongeveer 2,8× betere volging op en houdt daarna op met verbeteren — terwijl de rustfout door de last helemaal niet beweegt. Ze is 0,044 mm bij een volle stap en 0,044 mm bij een zestiende stap. De kromme in de derde kolom vlakt af naar de vierde, en de vierde bestaat niet uit resolutie.

Wat microstappen niet verhelpt is de naloophoek. Bij deze last zit de rotor ongeveer 20 elektrische graden achter het veld, wat 0,4 mechanische graden is, wat op deze as een positiefout van 0,044 mm betekent. Bij volle stappen is dat een kwart stap en merkt niemand het. Bij 1/16 stappen zijn dezelfde 0,044 mm 3,5 microstappen, en meldt de driver met veel vertrouwen een positie waar hij ver bij in de buurt is. De stap delen liet de fout groter lijken in eenheden van stappen; het deed er niets mee.

De reden mag je duidelijk zeggen. Om op één microstap van het vaste punt te blijven staan produceert de motor T_peak × sin(90° ÷ microsteps) — het per microstap beschikbare koppel stort in naarmate je deelt:

Microstappen Koppel dat één microstap vasthoudt Fractie van het houdkoppel
Volle stap sin(90°) 100%
1/8 sin(11,25°) 19,5%
1/16 sin(5,625°) 9,8%
1/256 sin(0,352°) 0,61%

Dat laatste getal komt overeen met het getal dat de driverliteratuur citeert voor 1/256 stappen, en het is het hele verhaal: bij fijne delingen is het koppel dat het ene microstap van het volgende onderscheidt kleiner dan de wrijving in je machine. De rotor kan ze fysiek niet uit elkaar houden. Hij beweegt wanneer het opgebouwde commando groot genoeg is om de wrijving te overwinnen, en dan beweegt hij meerdere microstappen tegelijk.

Dus: microstappen voor soepelheid en stilte, niet voor nauwkeurigheid. Moet de positie kloppen, dan heb je genoeg koppelmarge nodig, of heb je een encoder nodig.

Het zien gebeuren

Het nuttigste experiment is het goedkoopste. Voer in de stappenmotor simulator tweemaal een beweging van 60 mm uit, met alles identiek behalve de helling:

Met een acceleratiehelling Direct commando op volle snelheid
Maximale naloophoek 25° — comfortabel voorbij 90° na 1,2 ms, weg na 3,0 ms
Volle stappen verloren 0 280
Waar de as eindigt 60,00 mm 4,0 mm

Zelfde motor, zelfde driver, zelfde stroomgrens, zelfde doelpunt. Het enige verschil is of de stapfrequentie was opgebouwd, en het verschil tussen beide ís de hele beweging. Daarom zijn bewegingsprofielen geen verfijning op een stappenmotor — ze zijn het ding dat hem laat werken.

Wanneer het misgaat

Symptoom Waarschijnlijke oorzaak Wat te doen
De motor zoemt luid en draait niet Gecommandeerde stapfrequentie boven de pull-in rate Voeg een acceleratiehelling toe; controleer de startsnelheid
Drijft een paar millimeter per print, altijd dezelfde kant op Stappenverlies op de helling Verlaag de acceleratie, verhoog de stroom, of vertraag
Goed bij lage snelheid, valt stil zodra je opschakelt Voorbij de kniksnelheid Verhoog de voedingsspanning — stroom helpt niet
Positie fout met een veelvoud van vier volle stappen Klassieke poolslip Bepaal welke beweging hem overbelast; het aantal vertelt je hoeveel
De motor is zo heet dat het pijn doet Stroomgrens te hoog, of de motor doet echt werk 60–80 °C is normaal; toets de grens aan de waarde op het label
Ruw, luid, trilt bij één bepaalde snelheid Resonantie in de middenband Verander de microstappen, voeg demping toe, of vermijd die snelheid
Twee spoelen als één paar aangesloten Verkeerde draadparing Meet de weerstand: een paar levert enkele ohm, een mismatch levert een open meting

Waar dit heen leidt

Zodra de naloophoek in je hoofd zit, is de rest van de wereld van stappenmotoren geen verzameling losse regels meer. De stroomgrens op een A4988 instellen is T_peak instellen. Een riem of een spindel kiezen is kiezen hoeveel elektrische graden een millimeter fout je kost. Homen tegen een eindstop is hoe een machine met open lus de absolute positie terugkrijgt die hij nooit kan meten. En een bewegingsprofiel is wat de naloophoek de hele beweging binnen ±90° houdt.

Het zijn vier kanten van dezelfde sinuskromme.

Verken de graaf

Onderdeel van deze bouwprojecten

Projecten en leerroutes waarin deze tutorial voorkomt.

Verder lezen

Bronnen