TMC 2208 läuft ungleichmäßig

Hi,

bin neu im Arduino Forum und weiß nach Tage langer Suche einfach nicht mehr weiter.
Ich baue eine Kompass Anzeige, welche von einem Schrittmotor angetrieben werden soll. Dieser wird von einem TMC2208 gesteuert. Nun habe ich das Problem das, wenn ich den Stepper sehr langsam drehen lasse, er mit einer ungleichmäßigen Geschwindigkeit läuft. Bei höheren RPMs verschwindet das Problem.
Habt ihr schon mal von dem Problem gehört, oder eine Idee woher das kommen könnte?

Hallo @tomtom31er
herzlich willkommen im Arduino-Forum.

Zu niedrig eingestellter Strom?

Ich vermute ja eher ein Software-problem.
Hast du das mal mit einem Testprogramm das nur den Schrittmotor laufen lässt probiert?

Verwendest du zur Step/Dir-pulse-Erzeugung eine library oder machst du das "zu Fuß" ?
vgs

Habe diverse Stromwerte schon ausprobiert.
Das Step Signal Erzeuge ich durch ein simples abwechselndes High und Low Signal am Arduino Output.

poste mal den kompletten sketch
Das ist eh immer am besten

void setup() {
  pinMode(3, OUTPUT); 
}

void loop() {
  digitalWrite(3, HIGH); 
  delay(5); 
  digitalWrite(3, LOW); 
  delay(5); 
}

Ich glaube nicht, dass der Sketch das Problem ist, viel mehr vermute ich, dass Treiber beim Null durchgang des Sinus am Ausgang, diesen irgenwie verzerrt und somit das ungleichmäßige Drehen zustande kommt.

Ist der Motor überhaupt für Stromsteuerung geeignet? Nennspannung unter 4V?
Hat das Netzteil genug Leistung um den Motor anzutreiben?
Welche Spannung hat das Netzteil??

Grüße Uwe

Uout vom Netzteil: 6V-24V
Iout vom Netzteil: 2A

Nennstrom des Motors sind 500mA mit einer Nennspannung von 5,5V. Allerding sollte der trotzdem für einen Stromtreiber geeignet sein

Das ist was das Netzteil kann nicht was Du eingestellt hats.

Was für ein Motor ist das denn??? (Foto Modellnummer Link zum Angebot) Die genannten Daten passen irgendwie nicht zueinander.

Grüße Uwe

Eingestellt sind 24V

Link zu Datenblatt des Motors:

Dieser Motor ist ein Unipolarmotor ( 6 Anschlüsse; 2 Wicklungen mit Mittelanschluß) und dann 5,5V und 0,5A.
Man kann ihn aber auch als Bipolarmotor betreiben (man läßt die Mittelanschluss unbeschaltet) Dann hat der Motor die Daten: 7,78V und 0,35A.
Man kann auch nur die halbe Windung (Mittelanzapfung und Außenanschluß) verwenden und dann 5,5V und 0,5A.
Dieser Motor ist für eine Unipolaransteuerung mit Spannungsansteuerung vorgesehen ( Mittelanschlüsse auf + 5,5V schalten und die einzelnen Wicklungsanschlüsse mit einem NPN / N-MOSFET auf Masse schalten).

Kauf Dir einen Motor für 3,4V und 1A bzw 1,7A wie sie standartmäßig in 3D Druckern verwendet werden.

Grüße Uwe

Den Motor zu wechseln stellt leider keine Option dar.

Aber ist es denn generell möglich den Motor Bipolar mit einer Stromsteuerung zu Betreiben?

Um vielleicht den Kontext ein wenig genauer einzuorden:
Die Motoren habe ich aus einer Originalen Kompass Anzeige ausgebaut. Mein Ziel war es das System selber nach zu bauen. Auf der Original Platiene befinden sich als Treiber der NJU39610 und NJM3771. Die Versorgungsspannung waren vermutlich 24V und es ist zu erkennen, dass zwei Pins vom Motorkabel nicht belegt waren.

Soweit wie ich das dem Datenblatt entnehmen kann ist der NJM3771 doch auch ein Stromgesteuerter Treiber?

Beim Weiteren Testen ist mir zudem aufgefallen, dass das Problem mit der ungleichmäßiegen Drehgeschwindigkeit auch bei einen anderen Schrittmotor mit dem TMC2208 auftritt.
Habe auch schon den Treiber ausgetauscht, dass hat aber auch nichts gebracht.

Deswegen mal die Grundsätzliche Frage: Ist es generell möglich Schrittmotoren extrem langsam (1-5 rpm) gleichmäßig drehen zu lassen?

Hast Du dem Treiber an den V-Mot Versorgungspins auch den Stabilisierungs-Elko 100uf spendiert, falls du dn Treiber nicht auf nem Schield, das den Elko bereits enthält , betreibst?

Ja, externe Beschaltung ist so, wie sie in sämtlichen Videos und Datenblättern vorgeschlagen wird

Ja, natürlich!

Ok, ich habe es geschafft, das ein anderer Motor zuverlässig läuft, aber der von mir oben genannte dreht immer noch ungleichmäßig.

Der Treiber wird auch ganz schön warm. Wenn ich die Eingangsspannung vom Motor verringere dann wird dieser nicht so warm. Ich betreibe den ja gerade mal bei 24V, eigentlich soll der ja bis 36V können

Du kannst den Treiber auch bei 3V durchbrennen lassen. Das ist eine Frage der Stromeinstellung.
Der Strom darf nicht zu hoch sein. Man kann den TMC2208 an 35V betreiben und auf 200 mA Strom einstellen wenn ein kleines Schrittmotörchen nur 200 mA verträgt. Der Treiber schaltet die Spannung so ein/aus dass sich als mittlerer Effektivwert des Stroms der eingestellte Wert ergibt.

Ok, aber warum wird er denn, wenn ich die Stromeinstellung gleich lasse, bei 24V wärmer, als bei z.B. 9V? Die MOSFETs im inneren funktionieren doch eigentlich nur als Schalter. Smoit dürfte über denen keine große Verlustleistung abfallen?

Nein. Der Treiber unterbricht bei erreichen des eingestellten Stromes (bzw eines gewissen Teils davon für Microstepping) diesen um ihn nach einer gewissen Zeit wieder einzuschalten. um ihn dann wieder bei erreichen des Wertes auszuschalten usw. Die Ausschaltschwelle kommt von einen D/A Wandler je nach der Microstepposition und damit wird der Windungsstrom mittels eines Meßwiderstandes verglichen.

Ja aber auch MOSFET-Schalter haben Verluste.
die Verluste setzen sich zusammen aus dem Spannungsabfall über den On-Widerstand und duch die Transition zwischen Leitenden und sperrenden Zustand bzw umgekehrt bei jedem AIns bzw Ausschalten. Ein schaltwechsel dauert immer einige Zeit da der Gate-Source Kondensator geladen bzw entladen werden muß und kein unendlich großer Strom dafür zu Verfügung steht.

Die unregelmäßige Schrittfolge des Motors erklähre ich mir durch den hohen innenwiderstand der Wicklung (11 bzw 22 Ohm je nach Beschaltung) und darum der Strombegrenzung durch den Motor und nicht durch den Treiber. ICh glaube auch daß der Sollstrom am Treiber falsch (zu hoch) eingestellt ist. Es kann ruhig sein daß ein so niedriger Strom nicht eingestellt werden kann.

Grüße Uwe

Ich widerspreche. Ich möchte das mal mit Beispielzahlen beschreiben.

Da ist am Treiber ein Strom von 1,000 A eingestellt.
Jetzt setze ich in deine Formulierung diesen Zahlenwert ein

Der Treiber unterbricht bei Erreichen des eingestellten Stromes von 1,000 A diesen (Strom von 1,000 A) um ihn nach einer gewissen Zeit wieder einzuschalten.

Ganz egal wie das Zeitverhältnis zwischen ein und ausschalten auch sein mag.
Sobald ein zeitweise ausschalten stattfindet ist der

nicht mehr 1,000 A.
Sondern der Strom ist kleiner. Zum Beispiel 0,8 A oder 0,999 A.

In deiner Formulierung

also bei Erreichen von 1,000 A diesen Strom passt nicht.

Die Einstellung des Stromes wird ja meistens über eine Steuerspannung gemacht. Ich sage die technische Angabe im Datenblatt des Schrittmotors ist der

und kein Stromspitzenwert auf den der Strom angestiegen ist in dem Moment wo abgeschaltet wird.

Wenn die Stromeinstellung am Schrittmotortreiber den Spitzenstrom angeben würde,
hätte man eine Menge Rechnerei um aus diesem Stromspitzenwert und dem bei dieser Spannung und Motorwicklung sich ergebenden Einschaltzeit den Mittelwert des Stromes auszurechnen.

Du kannst ja mal eine Messung mit dem Oszilloskop machen.
Ich bin mir ganz sicher. Der momentane Stromspitzenwert bei dem die Abschaltung erfolgt liegt oberhalb dessen was man mit einem Digitalmultimeter messen wird. Das Digitalmultimeter zeigt den Mittelwert an.

Und ich bin mir ganz sicher, dass der nach Datenblatt eingestellte Strom dem Messwert auf dem Digitalmultimeter entspricht und nicht dem Stromspitzenwert den das Oszilloskop anzeigt.

Direkt nach dem Abschalten sinkt doch der Strom unter den Spitzenwert er sinkt immer weiter geht wahrscheinlich sogar auf null um dann beim Einschalten wieder anzusteigen. Jede Menge Zeit bei der der Strom kleiner als der Spitzenwert ist.
Wenn man dann die ganzen Momentanwerte aufsummiert muss da als Mittelwert etwas kleineres als der Spitzenwert herauskommen.

vgs

Kurze Zwischenfrage: nen Kühlkörper hast Du aber auf dem Treiber drauf? Es gibt vom TMC2208 den Nachfolger TMC2225. Der ist elektrisch und von Ansteuerung usw gleich wie der TMC2208, hat aber einen geringeren Innenwiderstand (kleinerer R DS on) und ein besseres Wärmemanagement, bleibt also kühler.