permanente magneet dc motor als servo motor?

Hallo

Onlangs kocht ik een klein goedkoop motortje bij Conrad, type IGARASHI N2738-51G-SP

Dit is een permanente magneet 12v DC motortje, met 5 polen. Wanneer je manueel aan de asje draait voel je duidelijk dat een omwenteling uit 10 stapjes bestaat.

Nu vroeg ik me af of het mogelijk was deze als servo motortje te gebruiken? Gaan deze polen me niet parten spelen? Is het mogelijk hiervoor een servor controller die stabiel is?

Gaat dit ooit deftig af te regelen (stabiel zijn) zijn met deze 5 polen? Of moet ik de encoder zo maken dat deze ook maar 10 stappen/ per omwenteling heeft die mooi overeen komen met de 10 “ stapjes “ van de motor?

Eddy

ps Voor alle duidelijkheid : met servo bedoel ik niet modelbouw servo, wel een motor met terug gekoppelde positie bepaling (zie http://elm-chan.org/works/smc/report_e.html)

Lambiek

Special Member

Dat moet gewoon gaan, bij iedere motor voel je dat.
Gewoon een encoder achter op monteren, en een goede servodriver maken of kopen. En eventueel een vertragingskast op je motor zetten, als dat nodig is tenminste.

Als je haar maar goed zit, GROETEN LAMBIEK.

Niet iedere motor heeft dat (nog afgezien van motoren anders dan permanent magneet DC motoren); de stappen die je voelt zijn de salient poles, dus duidelijk gescheiden motorpolen, die veroorzaakt worden door de ruimte tussen de statorpolen. Een motor zonder salient poles heeft een stator zonder noemenswaardig luchtgat tussen de statorpolen (dat is dus niet het luchtgat tussen de stator en rotor), en door de stator- of rotorpolen onder een hoek te zetten i.p.v. parallel met de as, is het mogelijk om de koppelrimpel vrijwel helemaal te onderdrukken.

Een motor waarbij je stapjes voelt, zal een redelijke koppelrimpel hebben, en dat maakt dat aansturing wel wat lastiger, maar het is zeker mogelijk om er een leuke servo van te maken.

De resolutie van de encoder moet een aantal keer groter zijn dan de nauwkeurigheid die je wilt kunnen halen; immers, een servoregelaar moet de positie kunnen meten en op basis van de regelfout (verschil tussen de gewenste en werkelijke positie) de motor kunnen aansturen. Dat betekend dat je dus ruimte moet hebben voor een regelfout, en daar heb je dus resolutie voor nodig.

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

Moderator

Waarbij de resolutie van een standaard encoder 4x het aantal pulsen per omwenteling is

Goed punt, dat ligt natuurlijk niet helemaal voor de hand als je niet bekend bent met die materie. Een incrementele encoder geeft minimaal 2 signalen (wordt meestal A en B genoemd), beide blokgolven met dezelfde frequentie, maar in fase verschoven. Dat wil zeggen dat in een bepaalde draairichting A eerst hoog wordt, dan B, dan wordt A laag, en dan B, waarna het patroon herhaald wordt. Je ziet dus dat er 4 gebeurtenissen zijn (A of B wordt hoog of laag) per puls.

Overigens kun je voor een servoregelaar in plaats van een incrementele encoder ook een resolver gebruiken, maar de elektronica en software die je daar bij nodig hebt is een stuk ingewikkelder.

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

Moderator

Resolvers zijn inderdaad veel ingewikkelder. Het grote voordeel van resolvers is eigenlijk de robuustheid. Ze worden vooral gebruikt op onvriendelijke plekken met veel trilling, hitte enz enz.

Er zijn nog veel meer mogelijkheden, en wel geschikt voor de hobbiebob. Oude DC servo's op robots hadden meestal een tacho voor de motorversterker om de snelheid in het gareel te houden en een encoder (meest 100 of 200ppr of zoiets) voor de asbesturing, dus om de positie te controleren.

Op 28 april 2013 11:39:11 schreef SparkyGSX:
De resolutie van de encoder moet een aantal keer groter zijn dan de nauwkeurigheid die je wilt kunnen halen...

Ik denk dat je ook rekening moet houden met het feit dat je een "onwillige" motor op 0 rpm wilt kunnen laten draaien. Als je de magneten voelt zitten betekend dat die motor iets of wat gaat lopen duwen als je hem stil wil houden. Als de resolutie dan te klein is kom je er natuurlijk pas relatief laat achter dat je aan het verlopen bent. De reaktie hierop zal dan ook gelijk relatief fors moeten zijn en voor je het weet zit je te ver doorgeschoten naar de andere kant: oscillatie.

[Bericht gewijzigd door GJ_ op 28 april 2013 12:48:41 (42%)]

@lambiek en SparkyGSX
De servo die ik voor ogen heb zou ook een reductiekastje hebben. ( ratio 1/12) Nu las ik dat een systeem waarbij de encoder op de ingaande motor as zit, makkelijker stabiel te krijgen is dan eentje waarbij de encoder op de uitgaande as zit. Reden hiervoor is de speling op de tandwiel kast die de servo controller in de war brengt.
Gezien de te verwachten koppel rimpel zou ik misschien toch beter mijn encoder op de uitgaande as plaatsen zodat dit 1/12 uitgevlakt wordt?

Over de controller zelf :
Is dat wat beschreven wordt in
http://elm-chan.org/works/smc/report_e.html
eigenlijk een courante manier van werken? Ik las elders dat een encoder beter niet via een microcontroller uitgelezen wordt?

Eigenlijk wel raar dat ik nergens iets vind over kleine (<5 Watt) servootjes. Alle servo drivers zijn >100 Watt of zijn bedoelt voor modelbouw .
Het ( lange afstand) idee is na te gaan of een zelfbouw 3 d printer, die nu typisch met een kleine stappen motor gemaakt wordt, niet beter kan met een servo motor. Daardoor zou de printer sneller zijn(?)
eddy

GJ_

Moderator

Die encoder moet gewoon op de motor eigenlijk, dus niet pas na de reductor. Ten eerste word het extra moeilijk om die motor onder controle te houden plus dat je resolutie ook nog eens een stuk lager word.

Trouwens, een stappenmotor met encoder is natuurlijk ook een servo.

Op 28 april 2013 12:53:47 schreef eddy2:
@lambiek en ...Ik las elders dat een encoder beter niet via een microcontroller uitgelezen wordt? ...

Waarom niet? Je moet wel de snelheid aankunnen natuurlijk. Als je een voor servo's standaard resolutie hebt van 16384 delen per omwenteling en dan 6000 rpm draait komt het best snel voorbij allemaal. Ik speel wel eens met de P8X32A microprocessor en die heeft daar niet zoveel problemen mee.

@GJ_
maar zal de koppel rimpel niet beter onder controle te houden zijn als ik de encoder op de uitgaande as plaats?
eddy
ps Daar ik de reductie kast zelf maak, kan ik de encoder ook half weg plaatsen ( tussen beide tandwiel reducties)

GJ_

Moderator

koppel rimpel? Geen idee wat je bedoeld, maar het enige dat je kunt besturen is die motor. Hoe verder je terugkoppeling daarvandaan zit hoe moeilijker het word, logisch toch?
Je resolutie word veel lager en je krijgt de speling van je tandwieldoos er nog eens bij.

Nou is het vanzelfsprekend dat niet de beweging van die motor van belang is maar de beweging aan de uitgaande kant van je bak. Als die speling daar roet in het eten gooit moet je gewoon zorgen voor minder speling.

@GJ__

koppel rimpel?

Verschil in koppel bij ct stroom door de pool vorm , zie opmerking SparkyGSX

Hoe dan ook, project ligt stil:
- usb key Proton Basic heeft de geest gegeven ( testje controller)
- licentie Profiler Colicam weigert medewerking( freeswerk reductie)

De techniek laat me duidelijk in de steek vandaag, ik doe volgend weekend verder

Eddy

GJ_

Moderator

Ach zo. Die rimpel kun je toch gewoon compenseren als je weet in welke positie de as zich bevind? Om het moeilijk te maken :-)

In principe wel, maar dat is niet heel erg eenvoudig. Ten eerste is de koppelfactor dus niet constant, maar zit daar een bepaalde variatie in, vandaar dat je een rimpel krijgt in het koppel als je een constante stroom gebruikt, en op de tweede plaats moet je compenseren voor de cogging torque, dus de neiging van de motor om de polen uit te willen lijnen, ook als er geen stroom is, net als bij stappenmotor. Als je maar een klein beetje koppel wilt leveren, kan die cogging torque relatief groot worden.

Je kunt natuurlijk alleen compenseren als je nauwkeurig de positie van de rotor weet, en dan moet de resolutie van de encoder dus wel hoog genoeg zijn.

Maar als je op zo'n niveau bezig bent met het bouwen van een servocontroller, waarom zou je dan nog een DC motor met borstels nemen? Het voordeel van zo'n motor is juist dat de regeling ervan relatief simpel kan zijn. In de meeste gevallen zul je de vertraging zodanig kiezen dat de stapgrootte binnen de vereiste nauwkeurigheid valt; met een vertraging van 12:1 wordt de stapgrootte, bij de motor van de TS, al 3 graden aan de uitgaande as. Voor veel toepassingen waarbij je nog een spindel o.i.d. gaan aandrijven, zal dat geen probleem zijn, lijkt me.

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

Je hebt de cogging door de polen maar die andere torque verstoring snap ik niet, wat wordt er bedoeld met ct stroom door de poolvorm?

Wat misschien nog handig zou kunnen zijn: een oude balmuis recyclen. Hier zitten al optische encoders in. En de chip kan al het tellen voor zijn rekening nemen waarmee je je microcontroller ontlast. Voor arduino staat er een voorbeeld op de arduino site.

@da_vinci

Wanneer er een ct stroom door de moto door gaat, zal het koppel niet constant zijn over een volledige wenteling.
Dit komt doordat de pool vorm ervoor zorgt dat de magnetische weerstand niet altijd gelijk is.

Eddy

ps dit is mijn interpretatie van SparkyGSX zijn opmerking. Van zodra de hardware klaar is, test ik het eens om te zien hoe groot deze rimpel is.

Ik ben ondertussen een beetje verder geraakt, de encoder is gemaakt, encoder data kan ingelezen worden in de PIC en deze data wordt daarna doorgestuurd naar pc. Dit alles zonder verloren stappen.

Met de FET H brug met ir2184 drivers gaat he helemaal mis.
Het schema dat ik gebruik is http://www.circuitsonline.net/img/000444.png

Probleem is dat ik lange tijd de motor in een richting wil laten lopen. De kant van de brug die niet pwm aangestuurd wordt( "richting kant" heeft dan te weinig spanning ( c1 of c5 lopen leeg)

Is dit op te lossen? ik dacht van beide pennen nr 8 van beide ir2184 samen voegen? Dan zou de "pwm kant" van de brug de "richting kant" voeden en zou de spanning op de gate van de richting FET hoog genoeg houden. mag dit? Het stroomgebruik van de richting kant is te verwaarlozen daar deze niet veel schakelen.

Is dit een goed idee?

mvg
eddy

Nee, dat kan absoluut niet, want de condensator aan de kant die laag is, zit praktisch aan de ground. De standaard oplossing is om niet met dan ongeveer 95% pulsbreedte te sturen, die laatste 5% geeft de condensator de tijd om bij te laden. Een alternatief is een charge pump, aast kost je per halve brug 4 diodes in gelijkrichter configuratie, 2 condensators om die AC te koppelen, een zenerdiode om de spanning te beperken, en een 555 als oscillator, of een uitgang van een microcontroller.

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

@SparkyGSX
Dan zou ik best ook de "richtingskant" van de brug met een pwm signaal sturen?(inverse tov van dit aan de "pwm kant"?)

Verder vraag ik me af wat er gaat gebeuren als de motor start nadat hij een tijdje stil heeft gestaan. Op dat moment moeten de condensatoren c1 en c5 eerst opladen alvorens de motor echt goed gaat werken? Of moet ik ook als de motor stil staat een 5% pwm signaal gebruiken?

eddy

ps Eigenlijk is het wel raar dat een H brug symmetrisch uitgevoerd wordt. Zou het niet mogelijk zijn een kant te voorzien voor pwm (= snelle driver) en de andere "richtings" kant met een discrete , tragere, driver? Deze richting kant moet toch niet zoveel schakelen?

@sparkygsx

nog eens over het idee pen 8 van de beide ir2184 aan elkaar verbinden: de spanning op pen 8 is toch altijd minimaal de voedingspanning -0.6 volt? ( en toch nooit 0??)

eddy
ps had ik een scoop ....

Normaliter is dat punt maximaal 12V hoger dan de source van de bovenste FET. Als je ze aan mekaar maakt kan dat wel eens 24V worden. Stuur je dan de hight-side fet aan, kan het zijn dat z'n gate boven de 20V max VGS uitkomt. (*)

Je moet gewoon de bovenste kant altijd blijven PWMen en je realiseren dat je een concessie moet doen om "mooie N-fets" te kunnen gebruiken. En dat is dat je de laatste 1 of 2% van de tijd altijd de boel uit moet zetten. Als je P-fets had gebruikt had je meer dan die 2% geleidings verliezen gehad.

(*) Bij nader inzien: Ook de aansturing in het chipje zal met een mosfetje gebeuren. Die heeft een max VDS waar je dan overheen gaat....

[Bericht gewijzigd door rew op 3 juli 2013 09:23:03 (13%)]

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

Beste Rew
zou je de spanning op pen 8 mogen optellen? ik zag het eerder als 2 spanningen parallel zetten???
eddy

ps idee : misschien ze via een 1 k weerstandje verbinden en zien wat er gebeurt?
ps reeds gezegd : had ik een scoop...

Lambiek

Special Member

Pin_8 van de ic's zou ik zeker niet aan elkaar zetten. Heb je de schakeling zo gemaakt zoals in het schema staat?, dan moet het gewoon goed werken. Het draait hier al jaren.

Als je rechts onder kijkt zie je de ttl signalen staan, die kan je op twee manieren gebruiken.

1; je doet het zoals het er staat, twee pwm signalen waarvan er één is geinverteerd, en één vrijgave signaal.

2; Of je zet op het vrijgave ingang een pwm signaal, en op de twee ander ingangen (waar pwm bij staat) zet dan hoog voor links of rechtsom.

En inderdaad zoals SparkyGSX ook al zegt, het pwm signaal mag niet groter worden dan bv 95% hij mag wel naar 0%.

Als je haar maar goed zit, GROETEN LAMBIEK.

Het gaat er om dat de ene driver de ene kant van de motor naar de 12v stuurt. Zijn "boost" moet dan 24V zijn. De andere kant van de motor wordt naar 0V gestuurd. De source van de high-side-fet is dan 0V. Normaliter is de "boost" waarde aan die kant dan 11.4V, maar nu haal je die naar 24V.

200mW in de gate stoppen (24V * 24V/1k) als ie doorslaat kan ook wel fataal zijn. Kortom, die 1k is prutswerk dat ook niet gaat helpen om de boel heel te houden. Gewoon de boel goed aansturen binnen de beperkingen die er zijn. Gewoon de highside PWMen met max 95%. Daarna kijken of het bij 99 en 99.6% nog werkt. volgens mijn tests bij mij wel (99.6% = 255/256).

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

Beste Lambiek
ik had geen 4011 liggen waardoor ik het schema een klein beetje heb aangepast. Ondertussen heb ik r eentje gevonden , vanavond probeer ik het opnieuw, deze keer 100 % zoals het schema.

mvg

Eddy

ps waarom gebruik je het invers sd poort ( pen 2) op de ir2184 niet? Zou dit er niet voor kunnen zorgen dat de 4011 overbodig wordt?

Lambiek

Special Member

Pin_2 is SD, logic input for shutdown. Dat is volgens mij heel iets anders. :)

http://www.irf.com/product-info/datasheets/data/ir2184.pdf

[Bericht gewijzigd door Lambiek op 3 juli 2013 10:40:06 (28%)]

Als je haar maar goed zit, GROETEN LAMBIEK.