Uitleg over de driver van een stappenmotorIn 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 stappenmotordriverDaar 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 bellenVoor 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).
ConfigurerenDeze 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 zoveelDeze 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 makkelijkTe 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