Forum: Analoge Elektronik und Schaltungstechnik Leistung für Schrittmotoren erhöhen


von Edward P. (itsunreal)


Lesenswert?

Hallo,

im Rahmen eines Uni Projektes haben wir einen RoboterArm mit 
Schrittmotoren (2Phasen, 6 Anschlüsse) gebaut. Als Steuerung verwenden 
wir einen Arduino mit Adafruit Motortreibern. Im Laufe des Projekt haben 
wir festgestellt, dass die Leistung der Motertreiber nicht ausreichend 
ist, um die Schrittmotoren zu versorgen. Gibt es eine Möglichkeit das 
Signal, welches aus dem Motortreibern kommt, nachträglich mit einer 
externen Stromquelle zu verstärken bevor es in die Schrittmotoren 
gelangt? Sowas in der Art wie ein Audio-Verstärker? Z. B. durch 
Transistoren?
Wie ihr merkt, bin ich als Maschinenbauer nicht sonderlich fit in diesem 
Thema, daher bitte ich um eine leicht verständliche Antwort :)

Vielen Dank

: Bearbeitet durch User
von Einhart P. (einhart)


Lesenswert?

Der Arduino wird für jeden Motor Takt- und Richtungssignale 'rausgeben. 
Damit kannst du fast jede Schrittmotor Endstufe ansteuern. Die zu 
schwachen Treiber fallen dann weg.

von Michael B. (laberkopp)


Lesenswert?

Edgar K. schrieb:
> dass die Leistung der Motertreiber nicht ausreichend
> ist, um die Schrittmotoren zu versorgen. Gibt es eine Möglichkeit das
> Signal, welches aus dem Motortreibern kommt, nachträglich mit einer
> externen Stromquelle zu verstärken bevor es in die Schrittmotoren
> gelangt?

Das macht keinen Sinn, nimm einen leistungsfähigeren 
Schrittmotortreiber. Insbesondere wenn der Schrittmototreiber mit 
Stromregelung und Mikroschritt arbeitet, will er den Strom auch messen 
können.

von Edward P. (itsunreal)


Lesenswert?

das Problem ist, dass der Adafruit Motortreiber eigene Befehle zur 
Motorsteuerung hat (wie zb. Stepper1.Moveto(15), die wir auch verwendet 
haben. Der Code für die gesamte Robotersteuerung wurde ein halbes Jahr 
lang entwickelt und ist auch schon fertig. Ein neuer Motortreiber würde 
einen komplett neuen Code bedeuten da diese Befehle dann wegfallen oder 
sich ändern. Um dies zu vermeiden, dachte ich, man könnte einen 
Verstärker nachschalten. Theoretisch müsste es doch nicht so schwer 
sein? Als Ausgang aus dem Treiber kommt ein Analog Signal, dieses müsste 
bloß mit einer passenden Schaltung mit eigener Stromquelle verstärkt 
werden oder denke ich zu einfach?

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Edgar K. schrieb:
> Theoretisch müsste es doch nicht so schwer sein?

Theoretisch wäre es auch nicht schwer, den Namen des von euch 
verwendeten Motortreibers zu nennen, aber trotzdem kommt ihr nicht auf 
die Idee, weil es ja in der ganzen Welt nur eine einzigen gibt.

Herr wirf Hirn.

Selbst wenn es ein "shield" mit eigener Intelligenz wäre (gShield oder 
TinyG ist es aber nicht) sind auf dem Motortreiberchips mit CLK und DIR 
Eingänge n und es wäre erheblich einfacher, diese auf einer externen 
Platine gegeneigene, kräftigere zu ersetzen. Trinamic Chiops gibt es 
unter Arduino eher nicht.

Vermutlich sind es also sowieso bloss dumme Treiber und euer 
Stepper1.Moveto(15) stammt bloss aus der Arduino Software und ihr seit 
nicht in der Lage, Software und Hardware intellektuell zu trennen.

von michael_ (Gast)


Lesenswert?

Edgar K. schrieb:
> Als Ausgang aus dem Treiber kommt ein Analog Signal, dieses müsste
> bloß mit einer passenden Schaltung mit eigener Stromquelle verstärkt
> werden oder denke ich zu einfach?

Ein analoges Signal bei einem Schrittmotor?

von Wolfgang E. (Firma: janeeisklar) (whattheheck)


Lesenswert?

michael_ schrieb:
> Ein analoges Signal bei einem Schrittmotor?

Was sonst?

von Edward P. (itsunreal)


Lesenswert?

Michael B. schrieb:
> Michael Bertrandt

1. Ich habe den Namen bereits genannt. "Adafruit Motorhield". 
Warscheinlich bist du eher nicht in der Lage zu lesen. 
http://www.adafruit.com/products/1438

2. Stammen die Befehle aus dem Motorshield und sind definitiv keine 
Standard Arduino Befehle

von Einhart P. (einhart)


Lesenswert?

1. Du hattest den Namen nicht genannt. Also vorsichtig bezüglich 
Leseschwäche. Du willst hier von uns etwas. Da ist Zurückhaltung 
zielführender.

2. Der (primitive) Motortreiber hat keine Intelligenz. Die Verarbeitung 
der Befehle erfolgt über die Library im Arduino. Es gibt nichteinmal 
Takt- und Richtungssignale. Du kannst also einfach eine leistungsfähige 
Motorbrücke nehmen.

von Edward P. (itsunreal)


Lesenswert?

Edgar K. schrieb:
> Als Steuerung verwenden
> wir einen Arduino mit Adafruit Motortreibern.

Es gibt nur einen von Adafruit. Von daher habe ich ihn genannt.
Das ist auch überhaupt nicht meien Art. Aber wer hier so hochwertige 
Antworten wie

Michael B. schrieb:
> Herr wirf Hirn.

Michael B. schrieb:
> ihr seit
> nicht in der Lage, Software und Hardware intellektuell zu trennen.

Der hat den Sinn eines Forums nicht verstanden.

Danke

Einhart P. schrieb:
> Es gibt nichteinmal
> Takt- und Richtungssignale. Du kannst also einfach eine leistungsfähige
> Motorbrücke nehmen.

Nochmal bitte für einen Maschinenbauer. Wir sollen also einen anderen 
Motortreiber nehmen. Was ist dann mit den Befehlen die wir als durch die 
Library eingebunden haben?
https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/library-reference

von Michael U. (amiga)


Lesenswert?

Hallo,

Kurzfassung? Stärkeres Motor-Shield suchen. Die dazugehörige Library 
anschauen, welche Funktionen diese bietet, mit den von Euch genutzten 
Funktionen der aktuellen Lib vergleichen.
Die neu einbinden und die Funktionsaufrufe anpassen.

Oder kommt hier der Fluch des Arduino zum Tragen: ich habe keine Ahnung, 
was wir da machen, wir stecken nur zusammen und kopieren die Sketche 
zusammen?

Was ist eigentlich Euer Problem?
Das Shield hat wohl den TB6612 als Treiber, 1.2A pro Kanal,3A peak.
Was nutzt Ihr für Motore? Seit Ihr an der Grenze der möglichen Ströme 
bei welcher Betriebsspannung oder wollt Ihr die Motore auch tauschen?

Gruß aus Berlin
Michael

von Michael B. (laberkopp)


Lesenswert?


von Einhart P. (einhart)


Lesenswert?

Der Link war nötig. Unter "Adafruit Motorhield" hab ich was gänzlich 
anderes gefunden. Meine Aussage gilt nicht für den verlinkten Typ.

Eben Nachgeschaut: Der TB6612 ist auch nur eine simple Brücke - kein 
spezieller Schrittmotortreiber.

: Bearbeitet durch User
von Edward P. (itsunreal)


Lesenswert?

die da noch abgebildet sind, sind nicht von Adafruit sondern von 
synthetos wie man dem Text entnehmen kann und heißen auch nicht 
"Adafruit Motorshield" https://synthetos.myshopify.com/

Wir möchten auch die Motoren austauschen. Zurzeit liefert das Adafruit 
1,2 A bei 12V. Die Motoren brauchen ebenfalls 0,6A Pro Phase 
(2Phasen=1,2A) und sind mit 12V angegeben.
Laut http://rn-wissen.de/wiki/index.php?title=Schrittmotoren
Abschnitt: "Fehler, die bei der Motorwahl oft gemacht werden", werden 
Schrittmotoren jedoch mit sogenannten "Chopper"-Schaltungen mit 
wesentlich mehr Spannung bei konstantem Strom betrieben um die volle 
Leistungsentfaltung zu bekommen. An sowas habe ich bei meiner Frage hier 
gedacht.

: Bearbeitet durch User
von Einhart P. (einhart)


Lesenswert?

Eine 12 V Motorbrücke ist nicht gut. Schrittmotortreiber laufen mit 
höheren Spannungen. Das ermöglicht einen schnelleren Stromanstieg und 
damit eine bessere Beschleunigung / höhere Maximaldrehzahl. Ihr solltet 
in den sauren Apfel beißen und eine richtige Schrittmotorsteuerung 
benutzen. Libraries wird es dafür sicher geben.

Wenn der Motor vom Drehmoment ausrecht, dann müsst ihr den nicht 
tauschen.

: Bearbeitet durch User
von Edward P. (itsunreal)


Lesenswert?

Leider reicht das Drehmoment nicht aus, daher suchen wir nach 
Möglichkeiten.
Danke für die Antwort

von Einhart P. (einhart)


Lesenswert?

Hoffentlich habt ihr Platz für größere Motoren. Sätze mit Treibern und 
Motoren gibt es günstig in China. Viele der ganz billigen 3/4 Kanal 
Treiber sind aber falsch aufgebaut und können Probleme machen bzw. 
schnell sterben.

von abc.def (Gast)


Lesenswert?

Da adafruit keine Schaltbilder liefert, kann ich nur meine Glaskugel 
befragen:
Auf dem Board befindet sich ein Microcontroller, der die Umsetzung von 
I2C zu Puls macht. Der steuert zwei Motortreiber.
Leistungsfähigere Motortreiber können dies sein:
http://www.ebay.de/itm/5x-Pololu-A4988-Stepper-Treiber-3D-Drucker-Printer-Ramps-Reprap-Nema-17-DRV8825-/331667391982?hash=item4d38eac5ee:g:Ip4AAOSwT6pVntMd
Du mußt dafür an Deinem Shield die Leiterbahnen für Puls und Richtung 
und Standby herausfinden, darauf dünne Drähtchen anlöten, und diese dann 
auf 2 der hier angegebenen Boards führen.
Bitte teile uns mit, ob das Löten für Euch eine Option ist. Wenn nein, 
gibt es keine Lösung. Wenn ja, dann helfen wir gern weiter.

von Einhart P. (einhart)


Lesenswert?

Eine Lösung, die auch professionellen Ansprüchen genügen sollte:
http://www.ebay.de/itm/German-Free-Ship-3axis-Nema34-stepper-motor1600-oz-in-Driver-DM860A-LONGS-/151650309747
Die geht natürlich in's Geld.

von Bastler (Gast)


Lesenswert?

abc.def schrieb:
> Leistungsfähigere Motortreiber können dies sein:
> Ebay-Artikel Nr. 331667391982

Kopfschüttel

von Edward P. (itsunreal)


Lesenswert?

Von den Anschlussmaßen dürfen sich die Motoren nicht ändern (56x56mm) In 
der Länge ist es jedoch völlig egal in unserer Konstruktion.
Gerade eingebaut sind folgende:
http://www.conrad.de/ce/de/product/198320/Emis-Schrittmotor-SM12056-12-VDC-Halte-Moment-06-Nm-Phasen-Strom-max-06-A-Wellen-635-mm?ref=searchDetail
(0,6Nm max)

Ich dachte an einen wie diesen:
http://www.emisgmbh.de/antriebs/sm/dl/pk56_4.pdf
Modell: PK268-02A
(1,7 Nm max)

Dieser ist mit 1,4A bei 6,3V angegeben.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Edgar Karsten (itsunreal)

>Leider reicht das Drehmoment nicht aus,

Statisch beim Halten oder dynamisch bei Bewegungen?

Wenn es schon ersteres ist, muss man prüfen, in wie weit der aktuelle 
Motorstrom an der Grenze des Motors liegt. Viel mehr geht auf Dauer 
nicht, denn dann überhitzt er.

Dynamisch kann man so einen Motor auch mal kurzzeitig überfahren, denn 
die Bewegung ist ja meist nicht dauerhaft. Hier kann man mit höherer 
Versorgungsspannung und einer höheren Einstellung des Motorstroms am 
Treiber mehr Leistung rausholen. Aber diesen hohen Motorstrom muss man 
in den Haltephasen wieder vermindern!

von Einhart P. (einhart)


Lesenswert?

@ falk: Beim Roboterarm braucht es auch ein hohes Haltemoment. Viel 
absenken kann man da wahrscheinlich nicht.

Vom gleichen ebay Lieferanten gibt's etwas passendes:
http://www.ebay.de/itm/4axis-Nema23-Stepper-Motor-272oz-in-23HS8430-Driver-DM542A-Power-CNC-Kit-/151416080239

: Bearbeitet durch User
von abc.def (Gast)


Lesenswert?

Bastler schrieb:
> Kopfschüttel

So, wie ich das verstanden habe, ist der TO auf das proprietäre 
adafruit-Board angewiesen. Dieses kommuniziert mit dem Controller über 
I2C.
Wenn dieses nicht der Fall wäre, gäbe es sehr viele 
Lösungsmöglichkeiten. Aber da er sich so festgelegt hat, bleibt nur das 
Löten. Natürlich kann man auch andere Schrittmotortreiber an_löten_.
Leider hat der Bastler gar keine Idee, nicht mal diese.

von abc.def (Gast)


Lesenswert?

Falk B. schrieb:
> Dynamisch kann man so einen Motor auch mal kurzzeitig überfahren

das ist mit dem vorhandenen Board nicht möglich, da gibt es keine 
variable Stromeinstellung. Bitte vergeßt nicht, daß ein Schrittmotor 
keinen Winkelgeber hat (normalerweise, und speziell im Arduino-Betrieb). 
Wenn Schritte verloren gehen, paßt die mechanische Position nicht mehr, 
und die Steuerung weiß es nicht. Wenn man Strom Drehmomentabhängig 
regeln muß (aus thermischen Gründen) und sich knapp am Limit 
durchhangelt, dann ist die Auslegung grundsätzlich falsch. Hilft aber 
alles nix, wenn die Anlage fast fertig ist.
Bei Neu-Auslegung hat man mehr Möglichkeiten, aber das ist nun vorbei.

von Einhart P. (einhart)


Lesenswert?

So - jetzt habe ich den Schaltplan für die Version 2.2 gefunden. Das 
Ding wird wirklich über I2C angesteuert. Wenn der Baustein auf der Karte 
(Bezeichnung kann ich nicht erkennen) ein Microcontroller sein sollte, 
der die ganze Positionierung incl. Rampe vornimmt, dann sieht es 
wirklich etwas düster aus.

von S. K. (hauspapa)


Lesenswert?

>Da adafruit keine Schaltbilder liefert, kann ich nur meine Glaskugel
>befragen:

doch tun Sie in gut lesbarer Qualität:
https://learn.adafruit.com/system/assets/assets/000/009/536/original/adafruit_products_mshieldv2schem.png?1396892649

in eigener Sache:
Inzwischen hat der TO sicher gelernt das es nett gewesen währe gleich zu 
sagen was für ein Motor, mit link aufs Datenblatt, was für eine 
Endstufe, mit link, was für ein Netzeil,... ein Bild vom Aufbau und was 
er bisher gemessen oder beobachtet hat, und was er als Folge daraus 
ableitet.
Er gibt sich Mühe, bleibt beim Thema und ist weitgehend freundlich also 
seit nett zu unserem Gast.

Wenn es nun wirklich an der Endstufe liegen sollte spricht doch 
eigentlich nichts dagegen die Mootrklemmen also die Ausgänge des TB6612 
zu nehmen und auf einen starken Treiber zu legen. Der kann ja sogar 
selbstgestickt sein mit mehr Spannung usw.

Gemessen und geregelt wird da im Moment eh nichts. Da läuft rein 
gesteuert einfach das programmierte Pulsmuster ab.

viel Erfolg
hauspapa

: Bearbeitet durch User
von Einhart P. (einhart)


Lesenswert?

Ganz so einfach ist das nicht. Die stärkere Brücke müsste mit hoher 
Spannung betrieben werden und einen eigenen Chopper besitzen damit der 
Strom auf den verwendeten Motor begrenzt wird. Wenn die PWM bei der 
jetzigen Software zum Einsatz kommt, dann wird's ganz haarig.

Ich denke das überfordert einen Maschinenbauer dann wirklich. Hier wäre 
vor Beginn des Projekts eine Diskussion hilfreich gewesen.

Der verwendete Shield ist ein Universalteil. Für DC Motoren gut 
geeignet. Zum Drehen von Schrittmotoren gehts auch - ist aber alles 
andere als optimal.

: Bearbeitet durch User
von S. K. (hauspapa)


Lesenswert?

Ich würde als erstes mal die 12V Versorgung auf sauber gestützte 15V 
hochdrehen. Die verwendenten Komponenten können das ab.

Dann schweigt sich Adafruit über das Kommando
void setPWM(uint8_t pin, uint16_t val);
komplett aus. Währe interessant was das genau macht. Dürfte für einen 
Maschinenbauer aber zu viel des Guten sein. Ich nehme nicht an das Du 
mit einem Oszilloskop umgehen kannst?

schönes Wochenende
hauspapa

von Einhart P. (einhart)


Lesenswert?

Was gehen könnte: Integrierte Brücke >= 40V >= 3A suchen und den Strom 
mit Widerständen begrenzen. Das sollte wenigstens laufen (und auch die 
Bude heizen)

von Edward P. (itsunreal)


Lesenswert?

Ich selbst habe ein Oszilloskop mal im Grundlagenlabor benutzt, würde 
jetzt aber nicht behaupten, dass ich eine Schaltung damit durchchecken 
könnte. Evtl. könnte ich einen Kommilitonen dafür anhauen. Löten kann 
ich jedoch gut, sofern ich nichts an einer Leiterbahn in einer 
Mikroschaltung anlöten muss.

Hier mal kleines Video unseres Roboters, damit ihr euch mehr davon 
vorstellen könnt.
https://www.youtube.com/watch?v=3FG-mNuYEPs

Falk B. schrieb:
> Statisch beim Halten oder dynamisch bei Bewegungen?

Sowohl als auch.

: Bearbeitet durch User
von Einhart P. (einhart)


Lesenswert?

Eine Lösung "out of the box" sehe ich für euer Problem nicht. Wenn ihr 
die Software nicht ändern wollt, dann braucht ihr ein neues Shield. Da 
muss der I2C PWM (PCA9685) Controller drauf, zwei leistungsfähigere 
Brücken z.B.
http://toshiba.semicon-storage.com/info/lookup.jsp?pid=TB67H302HG&lang=en_us&region=ncsa
und Hochlastwiderstände zur Strombegrenzung. Die Platine müßte ein 
Elektroniker bauen - vielleicht eine Studienarbeit - wenn dafür genug 
Zeit wäre.

von Falk B. (falk)


Lesenswert?

@ Einhart Pape (einhart)

>und Hochlastwiderstände zur Strombegrenzung.

Quark. Jeder zurechnungsfähige Schrittmotortreiber hat einen Chopper.
Das konnte schon das Urzeitduo L297 + L293!

von Einhart P. (einhart)


Lesenswert?

Jau Falk, das macht die Schaltung dann noch aufwändiger. Die Brücken, 
die ich gefunden habe, brauchen externe Bauteile für den Chopperbetrieb. 
Wir reden nicht von Schrittmotortreibern - die würden die Sache 
erheblich einfacher machen - sind aber nicht kompatibel zum verwendeten 
Shield.

Wahrscheinlich nutzt die Library auch noch den PWM Eingang der Brücke. 
Dann hast du die PWM und den Chopper obendrauf. Ob das funktioniert?

: Bearbeitet durch User
von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

@ Edgar Karsten

Wenn es mechanisch passt (oder einfach mit je 4 Distanzhülsen passend 
machen) ist die einfachste Lösung für euer Drehmoment Problem das hier:

5:1 Planetary Gearbox High Torque Nema 17 Stepper Motor 1.68A

http://www.ebay.de/itm/DE-Ship-5-1-Planetary-Gearbox-High-Torque-Nema-17-Stepper-Motor-1-68A-DIY-CNC/231657714940?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D33847%26meid%3D0379638fbc444720be86e68e41195bbc%26pid%3D100005%26rk%3D5%26rkt%3D6%26sd%3D231657760339

Durch das Untersetzungsgetriebe hat der Stepper Motor satte 2 Nm Holding 
Torque. In eurer Software müsstest ihr dann einfach nur den Faktor 5,18 
des Getriebes berücksichtigen. Die Versorgungsspannung würde ich von 12 
V auf mind. 24 V hochsetzen.

: Bearbeitet durch User
von Einhart P. (einhart)


Lesenswert?

Albert M. schrieb:
> mind. 24 V hochsetzen

Ab 15 V stirbt der Treiberchip.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Einhart P. schrieb:
> Albert M. schrieb:
>> mind. 24 V hochsetzen
>
> Ab 15 V stirbt der Treiberchip.

Was für ein Schrott-Driver :)

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.