Leistung für Schrittmotoren erhöhen

OP #4311600
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
#4311732
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.
OP #4312142
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?
#4312164
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.
#4312365
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.
OP #4312397
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
#4312413
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
OP #4312454
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.
#4312472
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.
Gast #4312493
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.
OP #4312508
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.
#4312515
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!
Gast #4312557
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.
Gast #4312566
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.
#4312587
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.
#4312603
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
#4312608
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.
#4312618
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
OP #4312653
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.
#4312672
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.
#4312695
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?
(Firma: Bastler aus Mönchengladbach) Persönliche Seite #4312704
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren