Nieuws:

Zin in een spoors uitstapje? Kijk eens in onze kalender!

Tip over instellen en gebruik van een stepperdriver voor een stappenmotor

Gestart door leendert donderdag 11 april 2019, 12:33:27

0 leden en 1 gast bekijken dit board.
Tip over instellen en gebruik van een stepperdriver voor een stappenmotor
Uitleg over de driver van een stappenmotor
In een ander draadje Klik heb ik wat geschreven over een stappenmotordriver, die gebruikt wordt bij het besturen van een loclift. In dit draadje wil ik ? voor naslag ? wat gedetailleerde informatie geven wat die driver kan en hoe dit ook voor andere projecten inzetbaar is. Waarom? Omdat de datasheet en heel groot is en nogal wat dingetjes openlaat, die met vallen en opstaan geleerd zijn. Dus wie weet heeft iemand er iets aan en hoeft niet ook het wiel uit te vinden.

Wat doet een stappenmotor en een stappenmotordriver
Daar waar een gewone motor een rondje draait als er spanning opgezet wordt, zet een stappenmotor een stap als er een stappuls aangeboden wordt, meestal van 1,8 graden, dus 200 stapjes maakt 1 complete ronde. Dat doet hij echter door middel van een stappenmotordriver. Die zorgt voor de aansturing van de spoelen in de motor, eenvoudig gezegd. Vaak is het de combinatie van een Arduino die stappulsjes en een linksom/rechtsom indicatie geeft en een printje met wat vermogens elektronica waar de benodigde stroom door de spoelen van de motor gestuurd wordt. Dit is de meest eenvoudige vorm en voor een paar euro koop je het bij onze Chinese vriend. Daarmee heb je een eenvoudige doch Spartaanse sturing.

Meer toeters en bellen
Voor wie meer wil, bijvoorbeeld om de boel veel stiller of sterker te krijgen, minder stroom te laten gebruiken of een veel nauwkeuriger stapgrootte te doen, zijn er stepperdrivers op de markt gekomen. Die stepdrivers komen vooral voort uit de 3D printer lawine die gaande is en worden van wege de grote aantallen waar het in die handel om gaat, steeds goedkoper. En daar kunnen wij als hobbyisten natuurlijk mooi op meeliften, om het maar in loclift termen te houden.
Ik heb mijn oog laten vallen op de TMC2130 SilentStepperStick. Ik zocht in eerste instantie naar een driver met microstepping. Deze driver kan dat, maar nog zoveel meer. Maar waarom de microstepping?

Ik gaf al aan dat 1 stap de motor 1,8 graden verplaatst. Maar hij doet dat echt lomp: van stilstaand tot beweging vrijwel tijdloos en eenmaal op bestemming ook weer bot de handrem erop. Dat geeft en op de motor, maar ook op wat er op aangesloten is (loclift, of 3d printkop) een bonk(je) als gevolg van die schokgolf, maar dus ook op alles wat mechanisch aan de as vast zit. En heel veel van die ?bonk?jes na elkaar resulteert in: lawaai! Dat is wat er gebeurt met een full step aansturing. Het effect is wat te verminderen door de half step, maar levert niet heel veel voordeel op  qua geluid (de frequentie van de toon wordt hoger). 
In onderstaande afbeelding is zo?n full step geschetst. En de ?harde? overgang van hoog naar laag en andersom, maakt dat wat aan de motor hangt in één keer in beweging of in stop komt.


Met microstepping maakt de driver zelf heel veel tussenstapjes aan, meestal zo?n 256. In onderstaande afbeelding zie je dan hoe zo?n verloop gaat. In theorie worden er dan per ronden 51.200 stappen afgelegd. Dat is fijnmazig genoeg om een hele zacht fluwelen beweging van de motor te hebben en (bijna niet) te horen, want de massa aan de motor, krijgt ook gelegenheid om mee op gang te komen of beschaaft af te remmen (uit te dempen).


Configureren
Deze driver mag je eerst configureren. Dat wil zeggen: alle benodigde instellingen moet je eerst laden, alvorens de motor in beweging kan komen. Dat gebeurt met een SPI interface, standaard aanwezig op bv een Arduino of Raspberry. De driver wordt door oa. Watterott geleverd op een kant en klaar, breadboard vriendelijk formaat.

Maar hij kan zoveel
Deze chip is extreem configureerbaar.  Dat is een lust, maar ook een last. De datasheet omvat 103 pagina?s en voor sommige specials zijn nog App notes beschikbaar. Hier dus wat uitleg kan geen kwaad, als is het maar om een soort samenvatting te hebben. En even wat toelichting, want wat wordt er nou precies met welke waarde bedoeld. Ik heb jammer genoeg geen diepgaande kennis van mechanica of natuurkunde. Maar het meeste van de parameters kan je real time aanpassen en dan vooral maar luisteren wat de verandering is. Of soms voelen, bijvoorbeeld bij het vaststellen hoe veel torque (power) er overblijft in de as. Ook het opvragen van de waardes geeft een behoorlijke indicatie hoe goed het met de motor en de driver gaat. Daarnaast is het goed om gezond verstand, voor zover van nature aanwezig, niet eerst aan de kapstok op te hangen alvorens experimenten te beginnen: in één keer op vol vermogen en een relatief hoog toerental de motor van richting veranderen: geen goed idee..
Ook het gebruik van de oren doet wonderen: als de motor gilt, maar niet draait: nee, dat is niet normaal.. en de warmte die daar dan bij vrij komt, vindt motor, de print noch de voeding heel plezierig..

Alle begin is makkelijk
Te beginnen bij het goed aanzetten: Gebruik twee voedingen: één voor de motor, één voor de elektronica. Niet ?ja maar-en?, gewoon twee gescheiden voedingen, met de massa met elkaar verbonden. De motorvoeding is meestal een 12V met genoeg Ampères op zak om de kracht te leveren, de elektronica is meestal een 5V eter, die zo heerlijk te voeden zijn via een USB kabel aan een goede uit de erfenis overgebleven adapter van een telefoonoplader.
Schakel eerst de voeding in die ook de stappenmotor van stroom en spanning voorziet, daarna de voeding die de driver en de Arduino. En schakel uit door eerst de Arduino uit te zetten en dan de motor.
De datasheet voorziet in een Quick Start en legt daarbij ook alle mogelijke parameters uit. De eerste stap is het inregelen van de benodigde spoelstroom.

Als vuistregel neem je in beide gevallen de halfwaarde van de stroom die er door heen zal gaan. Bij 3d printers gebruiken de motoren zo?n 0,5 a 0,8 A.
Voor mijn loclift blijkt dit ook meer dan genoeg te zijn. Ongetwijfeld vanwege het contragewicht.

Let op: de driver stuurt op basis van stroom, niet op spanning. Je mag dus een veel hogere spanning aanbieden dan dat de motor aangeeft, maar wel binnen heet bereik dat bij de chip hoort .

Nu is het even opletten geblazen: de lift die in beweging is heeft een massa. En als die moet stoppen ?duwt? de massa toch nog. Dus alleen maar de stroom uitzetten, naast ook de snelheid terugbrengen, is eigenlijk niet genoeg. Daarom dus even tijdelijk een ?houdstroom? die de massa op kan vangen.
Vervolgens stel je de stroom in die nodig is tijdens het draaien van de stappenmotor en de stroom die benodigd is om ?stil te staan?.  Die laatste is als vuistregel 70% van de draaistroomwaarde. Het overschakelen naar die ?spaar modus? is ergens tussen de 0 en 4 seconde.

Deze drie waarden zitten per 5 of 4  bits in 1 register, dus de aanroep van het schrijven naar het ene register gebeurt met een call met 3 argumenten, met een waarde tussen 0 en 31 voor de eerste twee argumenten (basisdraaimoment, percentage van draaimoment, hold-tijd). Een waarde 31 komt overeen met 100%, 22 met 70% etc.  In een voorbeeld van 100%, 70% hold tijd stroom. De laatste waarde is de tijd voor het overschakelen naar de hold tijd. 0 is direct, de waarde tussen 1 en 16 is ongeveer 1 en 16 seconde. Met een 4 seconde wachttijd is dan de aanroep:

myStepper.set_IHOLD_IRUN(22,31,5);

Overigens geeft de controller zelf aan of hij een stilstand ziet (STST=1).

Om de driver heel stil te maken, is een stealthChop aanwezig. Prachtige optie die het geluid heel stil maakt. Nadeel is wel dat een deel van de kracht (torque) wegvalt, maar de vraag is of dat voor de toepassing onoverkomelijk is.

Per soort en type motor val hier winst in de tuning te halen. Experimenteer dus met de volgende waarden:
myStepper.set_tbl(1); // [0-3]
myStepper.set_toff(8 ); // [0-15]

Met deze instellingen is het voldoende om de stappenmotor goed te laten draaien. In vervolgdeel zal ik iets schrijven over het instellen van automatische homing (op nul zetten, de uitvalspositie vaststellen) en het automatisch detecteren van vastlopers (en daarmee automatisch afschakelen van de besturing).

Nog vragen of opmerkingen? Kom er maar in.

Groet,
Leendert
Instellen en gebruik van een stepperdriver voor een stappenmotor Deel II
Deel twee van de stappenmotor: beschermen en detecteren van vastlopers

In dit deel een korte beschrijving van de mogelijkheden om met de stepperdriver een vastloper vast te stellen. Dit kan handig zijn of ter bescherming van het werkstuk, of gebruik worden voor het zonder sensor een homing te doen: het vinden van een referentiepunt, zodat er altijd vanaf eenzelfde plek gestart wordt met de beweging.

De stallGuard ? het vastloopknechtje -  is een nauwkeurig meetsysteem die belasting van de motor meet. De uitkomst gebruikt worden voor het eventueel bijregelen van de motor net voordat deze dreigt vast te lopen of bij het vastlopen zelf. Het getal van deze meeting heeft een tamelijk lineair verloop over het meten van de belasting, snelheid en stroomverbruik zoals getoond in onderstaande afbeelding.


Bij een maximale belasting gaat de waarde richting 0. Dit komt overeen met een belastingshoek van 90 graden tussen het magnetisch veld van de spoelen en de magneten in de motor. Dit is ook het punt waarop de motor het meest energie efficiënt is.

Met de SGT parameter is de gevoeligheid in te stellen, wat per motor een iets aangepaste instelling zal hebben. De plus waarden geven minder gevoeligheid aan, de min waarden een hogere. Prima uitgangspunt is om deze in het middel te laten om de test mee te starten.

Die waarde voldoet vaak al goed.

Indien nodig is er nog een filter in te stellen (sflit), wat meer nauwkeurigheid geeft, maar de prijs die je er voor betaalt is dat de motor een volledige step cycle van een elektrische periode moet maken (4 full steps dus).

Een goede STG waarde is als deze bij de maximale belasting waar de stepper voor gebruikt gaat worden zo tussen de 0 en de 100.
Dit is het begin van alle overige instellingen. Hierover later meer.

Groet,
Leendert