Schrittmotor, kann das so funktionieren?

Hallo zusammen,

Ich weiß, dass schon viele Fragen über Schrittmotoren gestellt wurden, aber so ganz das richtige habe ich noch nicht gefunden. Sollte ich es übersehen haben, tut es mir sehr leid!

Ich habe folgenden bipolaren Schrittmotor. Dieser hat 2.8A rate current/phase und 3.2V, also - da er ja zwei Phasen hat - 5.6A und 6.4V insgesamt.

Dazu, bzw. zu bipolaren Schrittmotoren im Allgemeinen, habe ich folgende Steuerung gefunden.

Erste Frage: Kann man diese Steuerung so für den Motor nutzen? Oder hält die H-Bridge das nicht aus?

Zweite Frage: Ich habe ein Netzteil mit 12V und 6A, kann das mit dem Motor funktionieren? Die Spannung ist ja fast doppelt so hoch, wie die benötigte.

Dritte Frage: Sollte das Netzteil funktionieren, kann man das dann einfach benutzen? Mit 6A ist ja nicht unbedingt zu spaßen. Sollte man eine Erdung o.ä. einplanen?

Ich bin für jede Hilfe dankbar! Hawos

Hawos: Ich habe folgenden bipolaren Schrittmotor. Dieser hat 2.8A rate current/phase und 3.2V, also - da er ja zwei Phasen hat - 5.6A und 6.4V insgesamt.

Nein die Rechnung ist so falsch. Die 2 Spulen können nicht in serie geschaltet werden und auch nicht paralell. Es gibt außerdem keine Schaltung wo sowohl der Strom und die Spannung verdoppelt werden. nur das eine oder das andere aber der motor würde nicht drehen. Dieser Motor ist für einen Stromsteuerung ausgelegt. Du mußt eine Stromansteuerung finden die 2,8A liefern kann. 12 V sind dann gerade an der Grenze, besser mehr. Ich weiß Dir keinen Treiber vorzuschlagen.

Dazu, bzw. zu bipolaren Schrittmotoren im Allgemeinen, habe ich folgende Steuerung gefunden. Erste Frage: Kann man diese Steuerung so für den Motor nutzen? Oder hält die H-Bridge das nicht aus?

Der L293D brennt Dir durch, der verträgt nur 0,6A und kann keine Stromsteuerung.

Zweite Frage: Ich habe ein Netzteil mit 12V und 6A, kann das mit dem Motor funktionieren? Die Spannung ist ja fast doppelt so hoch, wie die benötigte.

Wie gesagt braucht eine Stromansteuerung eine höhere Spannung damit der Strom vom Driver bestimmt wird und nicht von der Induktivität des Motors.

Dritte Frage: Sollte das Netzteil funktionieren, kann man das dann einfach benutzen? Mit 6A ist ja nicht unbedingt zu spaßen. Sollte man eine Erdung o.ä. einplanen?

Der Strom ist kein Problem; Du brauchst halt die Kabel dick genug ( ca 1mm^2)

Grüße Uwe

Ich kann dir folgende Schrittmotorsteuerung empfehlen:
>KLICK<
Preise

Hier ist noch eine einfachere:
>Klick<
Ich habe sie schon selber schon mal eingesetzt um einen Sensor zu verfahren. Die Eingangslogik ist schon auf 5V ausgelegt. Massen verbinden und die Digital Ausgänge auf die Steuereingänge. Und bei ~44€ ist der Preis auch akzeptabel.

Diese Steuerung ist Stromgetrieben. Also 24V auf die Steuerung und die Dips auf den Richtigen Strom einstellen und ab gehts.

Gruß
DerDani

Vielen Dank schonmal! :) Ich versuche es jetzt erstmal mit der günstigeren und einfacheren Steuerung. Angenommen ich packe da jetzt das genannte Netzteil dran, was ist das Schlimmste was passieren könnte? :D

Gruß, Hawos

Würde ich die Ratschläge nicht befolgen wollen, würde ich ja nicht fragen ;)

Das heißt also, dass die 6A zuviel sind und dadurch irgendwas durchbrennt?

Also, zur Klarheit: mit günstigerer einfacheren Steuerung meine ich die von volvodani verlinkte zweite. Und ja, ich weiß, dass dort steht "Maximum current: 3,5A".

Meine Frage ist einfach: hält das Bauteil auch 6A aus?

Und uwefed und volvodani hatten ja geschrieben, dass 12V zu wenig sind bzw. 24V auf die Steuerung sollen. Heißt das, dass bei 12V der Motor einfach weniger Leistung hat? Oder kann noch etwas anderes passieren?

Hawos: Also, zur Klarheit: mit günstigerer einfacheren Steuerung meine ich die von volvodani verlinkte zweite. Und ja, ich weiß, dass dort steht "Maximum current: 3,5A".

Meine Frage ist einfach: hält das Bauteil auch 6A aus?

Und uwefed und volvodani hatten ja geschrieben, dass 12V zu wenig sind bzw. 24V auf die Steuerung sollen. Heißt das, dass bei 12V der Motor einfach weniger Leistung hat? Oder kann noch etwas anderes passieren?

Der zweite von volvodani vorgeschlagene Driver mit dem TB6560 ist in Ordnung. Er muß auf 2,8A oder weniger eingestellt werden damit der Motor nicht überhitzt und kaputtgeht.

Das Bauteil (Driver) braucht nicht 6A aushalten. Es steuert den Motor mit dem eingestellten Strom an. Mehr dazu im Datenblatt des TB6560.

12 V ist an der unteren Grenze um den Motor gut anzusteuern. Bei zuwenig Spannung wird der Strom vom motor begrenzt und nicht vom Driver und dadurch läuft der Motor nicht rund / leise.

Grüße Uwe

Also bei beiden Steuerungen ist es so das der Strom durch die "Karte" begrenzt wird. Das heisst das der Strom "eingestellt" wird und sich dadruch die anlegende "Spannung" ergibt. Ich erkläre das mal so (wenn auch nicht 100% richtig) Die Spannung wird von der Karte so langer erhöht bis sich der Stromfluß (der vorgewählt wird) einstellt. Es ist also "erstmal" egal ob ich 12V oder 24V habe. Was jetzt natürlich sein kann des wenn die Spannung zu "klein" gewählt ist es dann zulange dauert bis der Strom sich in den Spulen einstellt und dann schon der nächste Schritt eingeleitet wird (dies führt dann zum unsauberen lauf) Ich habe noch was im Kopf mit 3-4mal Nennspannung als mindestens im Kopf.

Also kannst du es so mit deinem Stepper und der Karte nutzten du musst aber den richtigen Strom einstellen und nicht wundern Stepper werden ungewohnt warm aber im zulässigen Bereich.

Gruß DerDani

Hallo zusammen,

Heute ist die Steuerung angekommen, ich poste hier mal die Einstellungsmöglichkeiten (und wenn ich sie in Betrieb genommen habe, was aber vermutlich erst nächste Woche ist, auch die Funktion) für alle, die eventuell ein ähnliches Problem haben:

  • Current Settings: 0.5A, 1.0A, 1.5A, 2.0, 2.5, 3.0 - das ist ja selbsterklärend
  • Torque Settings: 20%, 50%, 75%, 100% - diese Einstellung habe ich - auch mit Erklärung auf der Produktseite - nicht verstanden. Ich weiß, dass Torque Drehmoment bedeutet. Heißt das, dass z.B. 20% des möglichen Drehmoments genutzt wird?
  • Excatation Mode: 1, 2, 8, 16 - das bedeutet meinem Verständnis nach: Full-, Half-, 1/8- und 1/16-Steps
  • Decay Mode: 0%, 25%, 50%, 100% - hier bin ich wieder unsicher; ich habe gefunden, dass man mit dieser Einstellung "einen Kompromiss zwischen sanft und leise oder kräftig und exakt" erreichen kann, aber eine Erklärung dazu habe ich nicht gefunden.

Hier noch ein Video zu der Steuerung.

Wer kann mich über die Unklarheiten aufklären? :D Und, wo wir schon dabei sind: wer kann mir vielleicht nochmal die Ansteuerung des Motors mit dieser Steuerung und dem Arduino (Code, Schaltung, ...) näherbringen? In dem verlinkten Video sieht man ja einen Schaltplan; kann man die Kabel die darin zum Microcontroller gehen mit PINs am Arduino gleichsetzen?

Gruß, Hawos

https://www.toshiba.com/taec/components2/Datasheet_Sync/201103/DST_TB6560-TDE_EN_27885.pdf

Torque Settings: vermindert den Stom durch die Wicklungen des Motors. Dies kann verwendet werden, wenn der Motor in einer Position steht, damit der Strom abgesenkt werden kann. Der minmale Haltestrom ist meist viel niedriger als der Strom ( Drehmoment) um die Massen zu beschleunigen bzw die Reibung der Mechanik zu überwinden. Dadurch wird der Motor weniger warm. Kann unbeschaltet bleiben dann ist 100% eingestelt (keine Absenkung).

Excatation Mode: ist der Ansteuerungsmodus Voll, Halb oder Mikroschritte.

Current Settings: ist klar

Und jetzt kommt das schwierige, weil es mir auch nicht so klar ist. Ich weiß zwar was es ist aber nicht was es praktisch bedeutet: Decay Mode: Der Driver arbeiten im Choppermodus: Er gibt der Motorwindung Strom solange bis der notwendige Strom erreicht ist (je nach Rotorposition und Schritteinstellung siehe Datenblatt Seiten 11 bis 14) dann schaltet er ab. Der Motorstrom fließt wegen der Induktivität weiter (über die Transistoren bzw Freilaufdioden der Ausgangs-H-Brücke) Siehe Seiten 16 bis 25 des Datenblattes.

Der Strom die die Induktivität der Motorwindung aufrechterhält kann durch Ansteuerung der Transsitoren der H-Brücke entweder über sich selbst Hurzgeschlossen werden ( wenih Verluste) oder über die Versorgungsspannung (mehr verluste udn darum fällt der Strom schneller ab. Der Decaymode beagt ab welchem Zeitpunkt nach dem erreichen des Sollstromes von Slow Decay zu Fast Decay umgeschaltet werden soll. Je nach dem Moment in der Stromsteuerkurve ist ein langsamer bzw schneller Abfall des Spulenstroms besser um den nächsten Strom-Soll-Wert möglichst schnell zu erreichen. Zwischen 0 und + bzw - max Wert ist ein langsames Decfay besser ( oberes Diagramm auf Seite 17), zwischen +/- Max-Wert und 0 ein schnelles Decay ( mittles Diagramm auf Seite 17). Ein Negativbeispiel ist das untere Diagramm auf Seite 17.

Ich weiß, daß zb der A4988 dies automatisch zwischen den einzelnen Schritten umschaltet. Ich weiß nicht ob man das beim TB6560 dynamisch in Funktion des Rotoposition machen sollte.

Ich hoffe ich habe mich etwas verständlich ausgedrückt.

Grüße Uwe

uwefed: Ich hoffe ich habe mich etwas verständlich ausgedrückt.

Grüße Uwe

Grundsätzlich hast du das, und ich behaupte mal, dass ich grundsätzlich verstanden habe, was Decay bewirkt. Nur ganz klar ist mir noch nicht, was ich da jetzt am besten auswählen sollte :P

Soviel ich verstanden habe in den Schritten wo der Strom erhöht wird ist slow delay sinnvoll, während in den Schritten wo der Strom verringert wird ist Fast Decay vorteilhaft. Im Datenblatt schreiben sie daß die beste Einstellung von Motor abhängt. Und diese mit bestimmten decay's ruhiger läuft.

Grüße Uwe

Hm, okay. Ist es schädlich für den Motor, einfach mal auszuprobieren, bei welchem decay er am besten läuft?


Jetzt bleibt nur noch die Frage nach dem Code bzw. dem Anschluss an den Arduino. In der Schaltung, die ich am Anfang verlinkt hatte, wurde die normale Stepper-Library des Arduino genutzt und der Motor mit Stepper stepper(STEPS, 8, 9, 10, 11); definiert. Ich vermute so einfach wird es mit der Steuerung nicht werden?

Gruß Hawos

Hawos: Hm, okay. Ist es schädlich für den Motor, einfach mal auszuprobieren, bei welchem decay er am besten läuft?

Nein, nicht schädlich.


Jetzt bleibt nur noch die Frage nach dem Code bzw. dem Anschluss an den Arduino. In der Schaltung, die ich am Anfang verlinkt hatte, wurde die normale Stepper-Library des Arduino genutzt und der Motor mit Stepper stepper(STEPS, 8, 9, 10, 11); definiert. Ich vermute so einfach wird es mit der Steuerung nicht werden? Gruß Hawos

Die Bibliothek steuert eine H-Brücke direkt an. Dein Treiber braucht aber 2 Signale: Drehrichtung und ein Rechtecksignal bei dem der Motor um einen Schrit weiterdreht.

Grüße Uwe

uwefed: Die Bibliothek steuert eine H-Brücke direkt an. Dein Treiber braucht aber 2 Signale: Drehrichtung und ein Rechtecksignal bei dem der Motor um einen Schrit weiterdreht.

Okay, ich habe jetzt mal ein wenig das Netz durchforstet um einen passenden Code dafür zu finden. Dabei bin ich auf viele verschieden Codes bzw. Herangehensweisen gestoßen; hier (Elektronik Labor); hier (Youtube); hier (Giantpong).

Am leichtesten nachvollziehen konnte ich den hierauf basierenden Code aus dem Youtube-Video.

Hier ist er (mit - hoffentlich sinnvoll - übersetzen Kommentaren):

  int Distance = 0; //Step-Zähler
  
  void setup() { 
    pinMode(8, OUTPUT); //Richtungs-PIN
    pinMode(9, OUTPUT); //Step-PIN
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
  }
  
  void loop() {
    digitalWrite(9, HIGH);
    delayMicroseconds(100); 
    digitalWrite(9, LOW); 
    delayMicroseconds(100);
    Distance = Distance + 1; //Stepzähler erhöhen
    /*Überprüfen, ob wir unsere gewünschten Steps erreicht haben*/
    if (Distance == 3200){
      /*Richtungswechsel*/
      if (digitalRead(8) == LOW){ 
        digitalWrite(8, HIGH); 
      } 
      else{ 
        digitalWrite(8, LOW); 
      } 
      Distance = 0; //Stepzähler zurücksetzen
      delay(500);
    }
  }

Fragen:

  • Kann der Code so grundsätzlich funktionieren oder gibt es daran etwas auszusetzen? Wenn ja, was?
  • Macht das 3. Beispiel von Schmalzhaus mehr Sinn, in dem AccelStepper genutzt wird?
  • Der Teil in dem das Signal des Step-PIN zwischen HIGH und LOW gewechselt wird, ist doch das von dir, Uwe, angesprochene Rechecksignal, oder? Regelt man mit den Microseconds zwischen dem Ein- und Ausschalten die Geschwindigkeit, mit der der Motor sich dreht?
  • Haltet ihr einen der anderen verlinkten Codes (oder einen ganz anderen) für sinnvoller? Wenn ja, warum und welchen?

Gruß Hawos

Soo, ich habe den Motor zum Laufen gebracht. Hatte noch ein 16VDC 2.5A Netzteil rumliegen und habe das verwendet.
Als Code hat der aus meinem vorigen Post zwar funktioniert, der folgende AccelStepper Code gefällt mir von der Funktion aber etwas besser.

#include <AccelStepper.h>

AccelStepper stepper(1, 9, 8);

int pos = 4000; //4000 Steps gehen, danach Richtungswechsel

void setup()
{  
  stepper.setMaxSpeed(2000); //eigentlich 1000, aber auf Half-Steps eingestellt
  stepper.setAcceleration(2000);
}

void loop()
{
  if (stepper.distanceToGo() == 0)
  {
    delay(500);
    pos = -pos;
    stepper.moveTo(pos);
  }
  stepper.run();
}

Die Schaltung, die ich benutzt habe, habe ich als JPEG und als Fritzing-Datei angehängt (ich habe die Platine darin nur mit einem Bild dargestellt, weil ich zu faul war :wink: ).

Zu den Einstellungen, die ich auf der Platine eingestellt habe:

  • Current Settings habe ich - logischerweise - auf 2.5A eingestellt
  • Torque Settings habe ich auf 20% eingestellt, da der Motor sonst viel zu viel Haltestrom braucht und selbst im Stillstand laut ist
  • Decay Mode habe ich aktuell auf 100% stehen, habe aber auch zwischen den einzelnen Einstellungen keine großen Veränderungen wahrnehmen können
  • Excitation Mode habe ich - wie im Code erwähnt - auf 2, also Half-Steps, eingestellt, da der Motor dadurch flüssiger läuft

Ich danke für eure Hilfe und sollten Fragen sein, fragt :wink:

Gruß,
Hawos

Stepper_Steuerung.fzz.zip (454 KB)