Ac servo driver aansturen met Arduino

We zijn al even bezig met het opzoeken van onderdelen voor ons eindwerk.
Betreffende een 6dof motion platform.
De onderdelen die we al zeker zouden aanschaffen zijn:

Mige 130st m04025 (6pcs)
Planetary Gearbox 20:1/30:1 (6pcs)

Maar bij de driver loopt het vast…
We moeten kiezen tussen hitachi wj200 007sf/015sf of een Mige driver (half the price of hitachi)

1 Hoe zit het met de aansluiting van de encoder naar hitachi driver? (kunnen we deze gebruiken via onze arduino of niet?)
2 Is een modbus 485 (verbinding tussen drivers) nodig?
3 Is er een manier om de driver (zowel mige als hitachi) te besturen via arduino?
4 Of kunnen we enkel werken met een amc1280 (van thanos)?
5 Hoe kunnen we berekenen welke waarde de brake resistor moet zijn?

Lambiek

Special Member

Ten eerste welkom op het forum.

Dit hoort eigenlijk onder schoolprojecten.

De Hitachi wj200 007SF-015SF is een frequentieregelaar, en minder geschikt voor jullie doel. Het kan wel, maar dan moet je de encoder in gaan lezen met je Arduino en dat wordt een hele klus denk ik.

De Mige 130ST-M04025 is een servo en meer geschikt voor jullie doel. Je hebt daar wel een servo driver bij nodig, je kan de servo dus niet rechtstreeks aansturen met je Arduino.

1 Hoe zit het met de aansluiting van de encoder naar hitachi driver? (kunnen we deze gebruiken via onze arduino of niet?)

Er zit geen encoder aansluiting op.

2 Is een modbus 485 (verbinding tussen drivers) nodig?

Als die erop zit is dat wel handig, alles kan dan over de bus.

3 Is er een manier om de driver (zowel mige als hitachi) te besturen via arduino?

Ja dat kan, mits je genoeg I/O tot je beschikking hebt.

4 Of kunnen we enkel werken met een amc1280 (van thanos)?

Dat weet ik niet, ik ken dat ding niet.

5 Hoe kunnen we berekenen welke waarde de brake resistor moet zijn?

Heb je die nodig dan, een goed servo systeem remt van zelf al goed.

Ik begrijp uit het verhaal dat jullie een soort van race simulator willen gaan maken? Als dat zo is wordt het wel een dure grap!!!!, volgens mij kan dat een stuk goedkoper. Of het moet een grote simulator worden, dan is het een ander verhaal.

Als je haar maar goed zit, GROETEN LAMBIEK.

Beste,

Ja inderdaad ja, het is een project voor school en het is de bedoeling om redelijk groot te worden. Het is de bedoeling dat het bovenstaande platform een 300kg weegt en dat het dan ook met een verplaatsing van 1,5m/s zal verplaatsen. Maar met de mogelijkheid component in de vorige vraag bedoelde ik eerder een chinese driver die samen met de mige( motor ) verkocht word.

Bij zo een servo is het gebruik van de bijbehorende drive met afstand het eenvoudigste. Het systeem kan dan, naast mogelijk meer geavanceerde opties, hetzelfde aangestuurd worden als een stappenmotor driver. En je hebt documentatie die je helpt het geheel goed in te stellen. De positie regellus zit dan dus in de drive.
Overigens kan ik over de beschreven types geen inhoudelijke informatie vinden ?

Ik vermoed dat je de regellussen in een Arduino met daaraan een losse fc niet snel genoeg krijgt voor de gewenste positionering. Als je in die richting wilt experimenteren zou ik kleinschalig beginnen met stappenmotoren met encoders en standaard drivertjes aan een 'Duino, dan kun je gevoel voor de uitdaging krijgen.

Lambiek

Special Member

Op 5 december 2018 10:14:34 schreef Aart:
Als je in die richting wilt experimenteren zou ik kleinschalig beginnen met stappenmotoren met encoders en standaard drivertjes aan een 'Duino, dan kun je gevoel voor de uitdaging krijgen.

Als je het eerst in het klein op wil bouwen, kun je net zo goed met modelbouw servo's een model maken, is een stuk goedkoper en je krijgt een goed beeld van hoe het werkt.

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik doelde vooral op de positie-regellus, omdat die uitdaging hier volgens mij onderschat wordt.
Maar het kan zijn dat er inmiddels goede, aaibare libraries voor bestaan.

http://www.hitachi-ds.com/en/Products/Automation/Inverters/W....1.3.1.pdf

In bovenstaande link, vanaf pagina's 3-114 tot 3-122 staat uitgelegd hoe je kan positioneren met een Hitachi WJ200.

Samengevat komt het er op neer dat je het puls-signaal van een incrementele encoder naar een ingang van de frequentie sturing brengt.
Verder kan je in de frequentie sturing 8 verschillende posities programmeren.
Deze posities kan je oproepen via 3 ingangen (binair 000 tot 111).
De frequentie sturing gaat dan de motor zodanig aansturen totdat het aantal ontvangen pulsen gelijk is aan de positie die in één van de 8 geheugenplaatsen zit.

Je hebt ook nog de mogelijkheid om bij de verplaatsing het maximum motorkoppel en de maximum motor snelheid in te stellen.

Ik heb het zelf nooit gebruikt, maar het lijkt me mogelijk te zijn.
Opgelet dit is enkel mogelijk indien de frequentiesturing een software versie 3 heeft. Oudere WJ200 types hebben deze software update niet.

Het vermogen van de remweerstand zou ik gelijk kiezen aan het motorvermogen. Behalve indien je met extra krachten zit als gevolg van de zwaartekracht, denk ik niet dat je meer energie uit een systeem kan halen dan je er (door middel van je aandrijfmotor) ingestopt hebt.

Lambiek

Special Member

Op 5 december 2018 10:37:49 schreef Aart:
Ik doelde vooral op de positie-regellus, omdat die uitdaging hier volgens mij onderschat wordt.

Dat ben ik helemaal met je eens.

Op 5 december 2018 11:51:35 schreef pamwikkeling:
Samengevat komt het er op neer dat je het puls-signaal van een incrementele encoder naar een ingang van de frequentie sturing brengt.
Verder kan je in de frequentie sturing 8 verschillende posities programmeren.
Deze posities kan je oproepen via 3 ingangen (binair 000 tot 111).
De frequentie sturing gaat dan de motor zodanig aansturen totdat het aantal ontvangen pulsen gelijk is aan de positie die in één van de 8 geheugenplaatsen zit.

Ja, dat is leuk. Maar als de posities over een groot gebied gereld moet worden, "en dat is het vaak met zo'n plateau" dan heb je niets aan acht posities.

Het vermogen van de remweerstand zou ik gelijk kiezen aan het motorvermogen. Behalve indien je met extra krachten zit als gevolg van de zwaartekracht, denk ik niet dat je meer energie uit een systeem kan halen dan je er (door middel van je aandrijfmotor) ingestopt hebt.

Als je een servosysteem gebruikt heb je dat ook niet nodig.

Als je haar maar goed zit, GROETEN LAMBIEK.

In bijlage hebben we de documentatie over de driver.

We vragen ons dus af of we deze kunnen besturen met een Arduino?

Zo ja:

Met wat voor signaal?
Hoe zijn de aansluitingen?

Op pagina 13 vinden we terug welke types er zijn maar weten bij [2][3] niet wat we moeten kiezen.

Kan iemand ons hierbij helpen?

Het hele project gaat of valt natuurlijk met de nauwkeurigheid van positioneren, de snelheid waarmee je die positie wil bereiken en de stijfheid van je mechanische constructie.

Maar daar hebben we helaas geen gegevens over.

Ik herinner me dat ik in een ver verleden ooit een positionering gemaakt heb
met een frequentie sturing en een motor met naderingssensor op de koelventilator. De pulsen werden geteld met een electronische teller van Hengstler met een preset waarde. Tot aan de preset waarde hoge snelheid en vanaf dan traag naar de eindwaarde en daar stoppen.

Terug naar de Hitachi sturing. Ik zag in de manual dat er ook "homing" mogelijkheden zijn. Met wat know-how en hulp uit de arduino is het bereik volgens mij uit te breiden voorbij het instelbereik van de 8 positie registers.

pagina 13 (2) feed back elements:

Dit heeft volgens mij betrekking op de input zijde van je driver. Hoeveel aansluitpennen en welke signalen daarop moeten komen.
Uiteraard moet je dan eerst weten welke servo motor je gaat gebruiken en welke terugkoppeling er op je servo motor zit ?

- 1000 : incrementele encoder (2500 pulsen per omwenteling)
- S : sinus - cosinus encoder
- M : absolute encoder (die meerdere omwentelingen kan maken)
- B : absolute encoder (die slechts één omwenteling kan maken)

pagina 13 (3) control mode:

Dit heeft betrekking op de wijze waarop je je toepassing gaat aansturen.

Bij positioneren wil je bij voorkeur dat je aandrijving op een vooraf bepaalde plaats gaat stoppen.
Als je de volledige berekening ivm de plaats (waar je moet stoppen en hoe je op die plaats wil blijven ook al zijn er externe krachten die je van die plaats willen wegduwen), gaat doen in je arduino, dan zou ik gewoon voor een snelheidsregeling gaan.

Wil je echter een stuk van de plaatsbepaling laten doen door de drive dan ga je natuurlijk voor een positie regeling.

Taken die de drive kan doen zijn vb:
- foutmeldingen als je buiten het normale werkbereik bent
- snelheid en koppel tijdens de beweging naar je eindpositie
- het vaststelling van je homing positie (is het fysieke punt van waaruit je begint te meten (lees : pulsen tellen)
- automatische aanpassing van de snelheid in geval je voorbij je positie schiet
- eventueel meerdere assen hoeksynchroon laten draaien (vb master / slave werking)

Tot hier mijn verhaal, ik ben zeker geen expert in servo aandrijvingen, en de MG1000 drive ken ik al helemaal niet.

Wat betreft de MG1000: Mijn Chinees is niet zo goed, maar op het oog biedt de "position control" interface in ieder geval ook een standaard step/dir interface. Hier dan benoemd als "PULS" en "SIGN".

Als je daar nog niet mee bekent bent zou ik eerst eens wat bouwen met stepstickjes oid op breadboard, zo een opstelling komt ook altijd van pas bij het schrijven en testen van de software.
Hoe je verder de home- nood- en eindstoppen maakt en welke rol je de drive daarin laat spelen is wat anders, maar daar zou ik in dit stadium niet wakker van liggen.

Toevallig bouwde ik pas zelf een systeem met wat kleinere closed loop stepper drives aan een Arduino, dat is wat dat betreft hetzelfde:

(OneStep gebaseerd positioneringssysteem voor een flinke telescoop)

[Bericht gewijzigd door Aart op 5 december 2018 19:58:37 (12%)]

Dank je wel voor jullie nuttige antwoorden, hier zal ik allemaal aan denken en dit heeft al veel duidelijker gemaakt maar ik heb eigenlijk nog geen antwoord op dat het compatibel is met Arduino... Weet iemand daarvan? en liefst echt helemaal zeker want de collega dat hier mee aan werkt doet alles of niets... dus zekerheid! Toch heel hard bedankt allemaal!!!

"Met de juiste soft- en hardware is alles compatibel met Arduino. " Maar ik heb het idee dat je doelt op iets heel specifieks ? Wat bedoel je precies met "Arduino" in deze context ?
Hoop je mogelijk een bestaand project zoals grbl (CNC) of Marlin (3D-printers) aan te passen ?

Wat een belangrijke parameter is is dat je snel genoeg kunt steppen b.v. om voornoemde 1,5 m/s te halen, dus dat de processor snel genoeg is en dat de firmware goed in elkaar zit.
Voornoemde grbl haalt op een gewone 328 ongeveer 30 kHz, wat dan vermoedelijk ook de grens is van wat daarmee haalbaar is. Of dat genoeg is hangt van de configuratie van de drive en de mechanica af.

Ik schat in dat je voor zo een positioneringssysteem met wat minder optimale code wel wat rappers kunt gebruiken, b.v. op basis van een snelle 32 bits ARM core, en dat je al snel buiten de Arduino libraries zult moeten gaan.
De waarde van het 'Duino ecosysteem is dan eigenlijk beperkt tot eenvoudig editen, compileren en uploaden.

Een vraag over een microcontroller-breakout van hooguit een paar tientjes is eigenlijk wat vreemd als je er 6kE+ aan hardware (en nog veel meer aan mechanica) aan wilt hangen ?
De keuze van de drive maakt hier ook niets uit. Er zal hooguit een levelshifter tussen moeten als de controller op 3v3 draait.

Bij grote projecten loont het eerst een kleiner model te maken om o.a. de software op te ontwikkelen. Zonder vrij goede software wordt dit niets, en dat laat zich niet afdwingen. Onderschat dat niet.