Stappenmotors home positie bepalen

Hallo,

Uit interesse maak een sturing voor 2 stappenmotors die op elkaar gemonteerd zijn zodat ik hier een camera kan aan bevestigen en deze X en Y bewegingen kan laten maken.

Het aansturen lukt perfect, alleen heb ik nog een probleem bij de positiebepaling. de X-motor kan slechts 180° draaien en de Y motor 90°.
Hoe kan ik bij de opstart van mijn programma de stappenmotors op hun home positie plaatsen(0°)? de motors zijn beiden mechanisch begrensd.

Ik had dit probleem graag opgelost zonder extra hardware indien mogelijk.

De motors worden aangestuurd vanuit een pic door ULN2803A. Het betreft unipolaire stappenmotors (6 aansluitdraden)

Het aantal stappen dat de motoren(X, Y) maken wegschrijven in EEprom als je opstart laat je de motoren teruglopen naar de initieele waarde en staan ze weer in de 0 - stand.

I thought, I thought of everything
Arco

Special Member

Er is een mogelijkheid om het bereiken van de eindpositie of stall te detecteren d.m.v. back-EMF test, maar die is wel wat lastig...
http://www.edn.com/design/analog/4368829/Back-EMF-method-detects-stepp…

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Voor het maximaal aantal stappen dat de stappenmotor kan bewegen tegen zijn begrenzing aan laten lopen. Dan slaat de motor over en staat hij op 0.

idd --> eeprom, ofwel met home switches, maar dat was niet de bedoeling zeker?

LetterHenk

Golden Member

Het lijkt me dat je niet ontkomt aan een een of andere sensor om de uiterste posities te detecteren.
Microswitch of optisch poortje.
Deze dingen bijv.

Action expresses priorities LH

Als je de uiterste posities weet(+ en - 90 graden) weet je ook hoeveel stappen hiervoor benodigd zijn dus heb je geen mechanische indicatie nodig lijkt mij, hetzelfde geldt voor de Y positie.
Alleen maar een kwestie van bijhouden hoeveel stappen je maakt vanuit het vertrekpunt en dit wegschrijven in een geheugen.

I thought, I thought of everything

Op 28 oktober 2013 10:48:55 schreef paulp:
Het aantal stappen dat de motoren(X, Y) maken wegschrijven in EEprom als je opstart laat je de motoren teruglopen naar de initieele waarde en staan ze weer in de 0 - stand.

Behalve dan als iemand de camera met de hand heeft bewogen.

Zelfs dan kan je nog het aantal stappen tellen mits de hardware daarin voorziet.

I thought, I thought of everything

Hoewel ik hier limit-switches heb, zou ik gewoon voorzichtig bij het opstarten naar de uiterste stand draaien.

Oude floppies hoorde je toch ook zo'n ratelend geluid maken als je de PC opstart? Dat is hetzelfe. Er zijn 80 tacks, dus na 82-85 stappen, moet ie bij de mechanische limiet zijn aangekomen....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

@paulp: hoe ga je de stappen tellen als je geen voeding hebt? Je kunt in principe wel min of meer stappen tellen als je de motor met de hand beweegt terwijl hij niet bekrachtigd is, maar het is erg lastig om vervolgens ook weer op de juiste plaats in het stappenpatroon verder te gaan.

Daarbij is zo'n systeem inherent onbetrouwbaar; als je ooit, om wat voor reden dan ook, een stap mist, heb je geen enkele mogelijkheid om de werkelijke positie vast te stellen.

Een systeem dat veel ingewikkelder en onbetrouwbaarder is dan bij het opstarten even de home positie zoeken, met een sensor of door gewoon tegen de eindaanslag te lopen, lijkt me eigenlijk altijd een slecht idee. De enige geldige reden die ik kan bedenken is als het om een of andere reden niet mogelijk is om bij het opstarten te zoeken, maar dan zou ik juist eerder gaan kijken naar een absolute encoder.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Lambiek

Special Member

Je gebruikt de ULN2803 hier voor, daar zit dus helemaal niets op van een stroomregeling. Als dat wel zo was, zou ik hem gerust tegen de mechanische eind aanslag laten lopen. Maar dan wel met een minimale stroom door de motor.

Je gebruikt een unipolaire motor zeg je, je zou een weerstand in serie met je voedings draden van je motor kunnen zetten, die weerstand werkt als begrenzer. kies die weerstand zo dat de motor net draaid, en als je motor in positie is overbrug je de weerstand met bijv een klein relais. Je kan op deze manier natuurlijk geen pulsen tellen, maar je moet positioneren op tijd.

Maar ben het met de rest eens, met een eindschakelaar of encoder is het mooier.

Als je haar maar goed zit, GROETEN LAMBIEK.
Arco

Special Member

Stroombegrenzing is niet nodig. Een stappenmotor die geblokkeerd wordt gebruikt niet meer stroom als een vrijlopende...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

@Arco: Dat is natuurlijk niet (helemaal) waar; een draaiende motor genereert een tegen-EMK, waardoor de stroom kleiner blijft. Als jouw stelling waar zou zijn, zou je op een lage spanning net zo'n hoog toerental kunnen halen als op een veel hogere spanning. In de praktijk is dat niet zo; op een bepaald moment wordt de tegen-EMK zodanig groot, en daarmee de stroom zodanig klein, dat je niet meer genoeg koppel kunt leveren, en de motor de stappen niet meer kan maken. Daarbij heb je die hogere spanning natuurlijk nodig om de reactantie van de spoelen te overwinnen; naarmate het toerental stijgt, heb je steeds minder tijd om dezelfde stroom door een gegeven spoel te krijgen.

Je hebt natuurlijk wel gelijk dat een motor op lage snelheid draait ongeveer evenveel stroom trekt als een geblokkeerde motor, als de weerstand van de spoelen in combinatie met een lage voedingsspanning om te beginnen al de beperkende factor was voor de stroom. Pas als je, al dan niet closed-loop, de pulsbreedte gaat veranderen om de stroom te regelen, gaat het mis.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Arco

Special Member

De meeste stappenmotors die ik gebruik draaien redelijk langzaam, daardoor mijn opmerking dat het stroomverbruik dan zelfde is als bij blokkering.
Daarom is het ook zo moeilijk om door het stroomverbruik te detecteren of de motor een eindpositie heeft bereik.
Men gebruikt daarvoor inderdaad de back-EMF meting uit mijn bovenstaande link.
Bij een normaal draaiende motor zal in de niet bekrachtigde spoelen een back-EMF worden opgewekt, bij blokkering is de back-EMF puls maar heel kort.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Daarom ook juist die weerstand er tussen, zodat hij net genoeg koppel levert om te positioneren. En als hij de camera moet verstellen de weerstand overbruggen.

Als je haar maar goed zit, GROETEN LAMBIEK.

In moving-heads en scanners worden op de stappenmotoren oa. kleurenwielen en gobowielen geplaatst. De nulposities worden er vaak gedetecteerd met een HALL sensor en een magneetje...

Een stappenmotor "in stand" gebruikt evenveel als een stappenmotor die langzaam draait. Maar dan is het "normale" gebruik wat mij betreft dus dat je "zo nu en dan" een stap doet. Dus iets van max 100 stappen per seconde.

Pas als je significant in de tegen-EMK gaat genereren zakt de stroom. Een stroom-sturing is dan eigenlijk gewenst om het koppel te behouden (en geen stappen te missen).

Maar stop je met bewegen loopt de stroom gewoon op naar de "nominale" stroom (spanning gedeeld door spoelweerstand).

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

@white ghost: De stappenmotors komen allebei uit een scanner :-)

In de scanner werd het kleurenwiel en de gobo's inderdaad met een sensor op hun nulpositie geplaatst, maar de stappenmotors van de spiegel(diegene die ik gebruik) werden enkel mechanisch begrensd. Waarschijnlijk werd in de software van de scanner de nulpositie ook bepaald door ze tegen de begrenzing te laten lopen. Dit is misschien niet zo netjes om zien maar het werkt...

Nu kan ik de stappenmotoren laten naar de nulpositie gaan en via bluetooth commando's sturen om hen naar een bepaalde positie te brengen. Indien iemand geïnteresseerd is in het programma, mail me gerust!

Ik dank jullie voor je hulp!

Het zoeken van het eindpunt door het ding tegen de mechanische begrenzing te laten lopen, heeft nog wel een klein nadeel; omdat je niet weet in welke positie het ding precies staat, weet je ook niet wat de eerstvolgende stap in de juiste richting zou zijn. Je kunt er dus maximaal 3 of 7 stappen naast zitten (bij respectievelijk half/full stepping en wave stepping). Deze afwijking is niet perse reproduceerbaar, als je net op het randje zit zul je er de ene keer 3 stappen naast zitten, en de andere keer 0.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken