Forum: Mikrocontroller und Digitale Elektronik Mikroschritt-Schrittmotortreiber (TMC222): Laute und leise Positionen


von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,
ich benutze einen Schrittmotortreiber (TMC222), der sich nicht 
abschalten läßt. Allerdings gibt es bei so einem Schrittmotortreiber ja 
Stellen, in denen der Stromchopper laut ist und andere, bei denen er 
fast lautlos ist.

Kennt jemand eine Möglichkeit, in der Firmware so eine "leise" Stelle zu 
finden? Es kann ja nicht davon ausgegangen werden, daß der 
Schrittmotortreiber bei der Initialisierung in einer bestimmten 
Schrittposition ist: Schließlich kann er seit dem Reset des Controllers 
schon stundenlang in Betrieb gewesen sein...

Viele Grüße
W.T.

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Walter T. schrieb:

> Kennt jemand eine Möglichkeit, in der Firmware so eine "leise" Stelle zu
> finden? Es kann ja nicht davon ausgegangen werden, daß der
> Schrittmotortreiber bei der Initialisierung in einer bestimmten
> Schrittposition ist: Schließlich kann er seit dem Reset des Controllers
> schon stundenlang in Betrieb gewesen sein...

Wenn du das Problem schon erkannt hast, ist die Lösung doch ganz 
einfach: sorge dafür, dass der ansteuernde Controller immer nur zusammen 
mit dem Treiber resettet wird. Das übliche Verfahren wäre: Reset gib's 
nur beim PowerUp, sonst nie.

Wenn du nicht dazu in der Lage bist, Programme zu schreiben, die ohne 
Resettaste funktionieren, dann bleibt dir nur die Strommessung, um zu 
erkennen, wo der Treiber aktuell ist. Wobei Messung vielleicht ein wenig 
übertrieben ausgedrückt ist. Eigentlich geht es darum, festzustellen, ob 
konstanter Strom oder PWM ausgegeben werden.

Alternativ wäre auch möglich: Verzicht auf den Mikrostep-Betrieb, dann 
ist der Motortreiber bei jedem Schritt an einer "leisen" Stelle.

von eProfi (Gast)


Lesenswert?

Ich behaupte mal, ohne den TMC222 zu kennen, dass bei einem 
quietschenden, pfeifenden oder rauschenden Schrittmotor die Ansteuerung 
suboptimal ist, was meist an einem undurchdachten Layout liegt.
Wenn ich z.B. lese: 
http://www.roboternetz.de/community/threads/19470-PROTOBED-StepM-%C2%96-TMC222-RN
> Was mir gleich auffällt, dass der 100uF aus der Referenzschaltung im
> Datenblatt, bei euch verschwunden ist.
> Was hat der Kondensator verbrochen?
wundert mich gar nichts mehr.

Können die Leute nicht lesen?
http://www.trinamic.com/_scripts/download.php?file=_articles%2Fproducts%2Fintegrated-circuits%2Ftmc222%2F_datasheet%2FTMC222_datasheet.pdf
• 2.7nF capacitors: 2.7nF is the minimum value, 10nF is the maximum 
value
• the 1μF and 100μF must have a low ESR value
• 100nF capacitors must be close to pins VBB and VDD
• 220nF capacitors must be as close as possible to pins CPN, CPP, VCP
  and VBB to reduce EMC radiation.

Gut, beim 100µF steht nicht explizit, dass er möglichst nahe am IC 
liegen sollte, aber die Angabe LowESR sollte einen schon stutzig machen.

Gnd-Layout ist genauso wichtig. Die Power-Strompfade müssen getrennt von 
den Digitalen laufen  und möglichst kleine Flächen aufspannen.

Du hattest noch eine andere Frage, ob man den TMC wieder in den 
Power-On-State (ShutDown) bringen könnte.
Beitrag "Schrittmotortreiber TMC222 zum schweigen bringen"
Laut Datenblatt geht es, du musst die Figure 7: Internal handling of 
commands and flags  und  Table 8: Priority Encoder  beachten. Es geht 
nur vom Stopped-State aus mit einem HardStop-Command.

Von den anderen States RunInit, SoftStop, HardStop und GotoPos kommst Du 
nur über MotionFinished nach Stopped. Dazu muss vielleicht die ActPos 
ausgelesen und (mit SetPos) in TargetPos geschrieben werden.

von Walter T. (nicolas)


Lesenswert?

Danke für die Diskussions-Anknüpfungspunkte.

eProfi schrieb:
> Können die Leute nicht lesen?
> 
http://www.trinamic.com/_scripts/download.php?file=_articles%2Fproducts%2Fintegrated-circuits%2Ftmc222%2F_datasheet%2FTMC222_datasheet.pdf
> • 2.7nF capacitors: 2.7nF is the minimum value, 10nF is the maximum
> value
> • the 1μF and 100μF must have a low ESR value
> • 100nF capacitors must be close to pins VBB and VDD
> • 220nF capacitors must be as close as possible to pins CPN, CPP, VCP
>   and VBB to reduce EMC radiation.

Was habe ich mit dem Design bei Roboternetz am Hut? Das Datenblatt 
liefert mir doch alles frei Haus, inklusive der geforderten Kühlfläche.

eProfi schrieb:
> Ich behaupte mal, [...] dass bei einem
> quietschenden, pfeifenden oder rauschenden Schrittmotor die Ansteuerung
> suboptimal ist, was meist an einem undurchdachten Layout liegt

Von der Behauptung halte ich nicht viel. Wenn die Spulen singen, ist das 
reine Physik. Das passiert auch bei sehr hochwertig aufgebauten 
Schrittmotortreibern wie z.B. der Beast von Benezan Electronics und den 
Leadshine-Treibern.

eProfi schrieb:
> [...] ohne den TMC222 zu kennen, [...]

Ohne den TMC222 zu kennen, ist da eine sinnvolle Aussage doch kaum 
möglich.

eProfi schrieb:
> Laut Datenblatt geht es, du musst die Figure 7: Internal handling of
> commands and flags  und  Table 8: Priority Encoder  beachten. Es geht
> nur vom Stopped-State aus mit einem HardStop-Command.

Tja, wenn das so einfach wäre...
Das Trinamic-Forum schreibt das Gegenteil:

http://ttdg.trinamic.com/viewtopic.php?f=16&t=175&hilit=disable

c-hater schrieb:
> Wenn du nicht dazu in der Lage bist, Programme zu schreiben, die ohne
> Resettaste funktionieren, dann bleibt dir nur die Strommessung, um zu
> erkennen, wo der Treiber aktuell ist.

Es ist nicht unmöglich. Aber es ist umständlich. Ich mag gerne 
Programme, die die Peripherie ungeachtet der Vorgeschichte frisch 
initialisieren können.

c-hater schrieb:
> Alternativ wäre auch möglich: Verzicht auf den Mikrostep-Betrieb, dann
> ist der Motortreiber bei jedem Schritt an einer "leisen" Stelle.

Das könnte sogar ein Ansatz sein. Zwischen Mikroschritt- und 
Halbschrittbetrieb kann ich problemlos umschalten. Da der Antrieb 
selbsthemmend ist, geht mir da nichts verloren.

von eProfi (Gast)


Lesenswert?

Ich habe zum Thema hörbare Schrittmotoren bereits 2008 geschrieben:
Beitrag "Schrittmotorsteuerung mit l6203"
hier ein besserer Link zu besagter AN460 von Thomas L. Hopkins:
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00003771.pdf
siehe Abschnitt "Chopper Stability and Audio Noise".

Zum TMC-Problem: ich kann mir kaum vorstellen, dass jahrelang ein 
fehlerhaftes Datenblatt kursiert. Wäre schön, wenn wir Licht ins Dinkel 
bringen  und das Problem lösen könnten.

von c-hater (Gast)


Lesenswert?

Walter T. schrieb:

> Das könnte sogar ein Ansatz sein. Zwischen Mikroschritt- und
> Halbschrittbetrieb kann ich problemlos umschalten. Da der Antrieb
> selbsthemmend ist, geht mir da nichts verloren.

Halt nur die Vorteile des Microstepbetriebs. Wenn du die in deiner 
Anwendung nicht benötigst: klar, dann ist meine Vorschlag ganz eindeutig 
mit weitem Abstand die einfachste Lösung.

Aber bedenke: Der Sinn eines Antriebs ist normalerweise nicht, sich 
NICHT zu bewegen, sondern vielmehr, sich möglichst effizient zu 
bewegen. Und genau in dieser Situation hat halt der Microstep-Betrieb 
dermassen signifikante Vorteile, dass sich die Entwickler praktisch 
jedes neuzeitlichen Steppertreibers haben verführen lassen, diese 
Betriebsart jeweils darin einzubauen. Das haben die nicht aus Langeweile 
gemacht, oder einfach nur deswegen, weil es geht...

Im Übrigen hast du es in der Hand, die Vorteile zu verknüpfen, sobald du 
auf die Möglichkeit für einen Reset zu "jedem beliebigen" Zeitpunkt 
verzichtest. Dann kannst du nämlich einfach mitzählen und bei Stillstand 
den Treiber immer noch die paar Microsteps bis zur nächsten stabilen 
Position weiter bewegen. Hat er die erstmal erreicht, darfst du dann 
auch deinen verschissen µC resetten, ohne das es laut wird. Naja, 
jedenfalls, wenn du dessen Initialierungsphase hardwaremäßig und 
softwaremäßig hinreichend im Griff hast, so dass sich nicht für den 
Treiber irgendwelche Steps ergeben...

von oszi40 (Gast)


Lesenswert?

Walter T. schrieb:
> Stellen, in denen der Stromchopper laut ist und andere, bei denen er
> fast lautlos ist.

Wie sehen denn die Oszillogramme dazu aus? Evtl. kommt bei dieser 
Chopper-Frequenz etwas in Resonanz oder z.B. Abschaltspannungsspitzen 
beeinflussen die restliche Schaltung?

von Walter T. (nicolas)


Lesenswert?

oszi40 schrieb:
> Wie sehen denn die Oszillogramme dazu aus? Evtl. kommt bei dieser
> Chopper-Frequenz etwas in Resonanz oder z.B. Abschaltspannungsspitzen
> beeinflussen die restliche Schaltung?

Es ist nicht wahnsinnig laut. Es ist sogar recht leise. So wie ein 
Röhrenfernseher, der kein Bild anzeigt. Und genauso wie bei einem 
Röhrenfernseher ohne Bild geht mir das Geräusch tierisch auf die Nerven, 
so daß ich gerne einige Zeilen Quelltext investiere, um es noch leiser 
zu bekommen, wenn der Motor steht. Wenn der Motor läuft, ist das 
Geräusch in Ordnung. Wenn sich etwas bewegt, darf es auch Geräusche 
machen. Im Stillstand nervt das aber.

von Peter D. (peda)


Lesenswert?

Die Mikroschritte sind hauptsächlich dazu gedacht, um das Laufgeräusch 
zu senken. Positionieren sollte man aber nur auf Vollschritten.
Beim Stehen auf nem Mikroschritt muß ja der Motor immer zwischen zwei 
Vollschritten mit der PWM hin und her vibrieren. Außerdem ist das 
Haltemoment erheblich reduziert.

von eProfi (Gast)


Lesenswert?

> Beim Stehen auf nem Mikroschritt muß ja der Motor immer zwischen
> zwei Vollschritten mit der PWM hin und her vibrieren.
?!?
Solche Worte aus Deiner Hand verwundern mich. Sowohl durch die 
Spuleninduktivität als auch durch die Trägheit des Rotors bleibt von der 
PWM (vergleiche Periode mit Tau) so gut wie nichts übrig.

> Außerdem ist das Haltemoment erheblich reduziert.
Durch die Cos/Sin-Ansteuerung bleibt der resultierende Vektor (Wurzel 
aus x^2+y^2) doch immer gleich lang.

Zurück zum Thema Abschalten des Spulenstroms beim TMC222:
Was Walters These, dass der Spulenstrom nicht mehr abgeschaltet werden 
kann, unterstützt, ist die Tatsache, dass in der Table 8: Priority 
Encoder zwei Zeilen mit HardStop gibt, in der ersten (dabei könnte das 
HardStop-Kommando 0x83 gemeint sein, ist in der ersten Spalte nicht "--> 
ShutDown" eingetragen.
Der Unterschied HardStop-Command und HardStop-Condition hätte besser 
(ausführlicher) beschrieben werden können.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Peter,

> Die Mikroschritte sind hauptsächlich dazu gedacht, um das Laufgeräusch
> zu senken. Positionieren sollte man aber nur auf Vollschritten.
> Beim Stehen auf nem Mikroschritt muß ja der Motor immer zwischen zwei
> Vollschritten mit der PWM hin und her vibrieren. Außerdem ist das
> Haltemoment erheblich reduziert.

Wie kommst du denn auf das dünne Brett? Es ist ja nicht so, dass die 
Spulen abwechselnd bestromt würden. Außerdem liegt die mechanische 
Zeitkonstante des Rotors mindestens eine Größenordnung unter der 
elektrischen.

Mit freundlichen Grüßen
Thorsten Ostermann

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo "eProfi"

> Ich habe zum Thema hörbare Schrittmotoren bereits 2008 geschrieben:
> Beitrag "Schrittmotorsteuerung mit l6203"

Naja, zwischen dem L6203/L297 und dem TMC222 liegen Jahrzehnte der 
Entwicklung. Ich wage zu bezweifeln, dass man die Erkentnisse aus dem 
Thread auf das Problem hier übertragen kann. Allerdings dürfte 
tatsächlich ein schlechtes Layout die wahrscheinlichste Ursache für die 
Störgeräusche sein.

@Walter: Der TMC222 hat doch einen integrierten "Motioncontroller", der 
via SPI ansprechbar ist. Unabhängig vom Reset deines Controllers kannst 
du also zu jeder Zeit die aktuelle Position auslesen und daraus 
errechnen, ob du in einer Voll- oder Mikroschritt-Position stehst. Im 
Stillstand sollte man auch (wenn die Anwendung das zulässt) den 
Motorstrom reduzieren, um unnötige elekrtische Verluste und eine 
entsprechende Erwärmung von Motor und Treiber zu vermeiden. Vielleicht 
macht der TMC das aber auch schon automatisch, wenn man ihn richtig 
konfiguriert?

Mit freundlichen Grüßen
Thorsten Ostermann

von m.n. (Gast)


Lesenswert?

Walter T. schrieb:
> Wenn sich etwas bewegt, darf es auch Geräusche
> machen. Im Stillstand nervt das aber.

Hast Du die Möglichkeit, im Stillstand die Versorgungsspannung zu 
reduzieren?

von Peter D. (peda)


Lesenswert?

eProfi schrieb:
> Sowohl durch die
> Spuleninduktivität als auch durch die Trägheit des Rotors bleibt von der
> PWM (vergleiche Periode mit Tau) so gut wie nichts übrig.

Dann dürfte es ja keine Geräusche geben. Geräusche bedürfen einer 
mechanischen Bewegung.
Ein stromloser Stepper will immer den Magnetfluß optimieren, d.h. auf 
einen Vollschritt einrasten. Mit einem zusätzlichen Haltestrom erreicht 
man dann noch eine optimale Bremswirkung.

von m.n. (Gast)


Lesenswert?

Peter D. schrieb:
> Dann dürfte es ja keine Geräusche geben. Geräusche bedürfen einer
> mechanischen Bewegung.

Es zwitschert aber nicht die Achse, sondern die Spulen.

> Mit einem zusätzlichen Haltestrom erreicht
> man dann noch eine optimale Bremswirkung.

Diese bahnbrechende Erkenntnis würde ich mir patentieren lassen :-(

von Peter D. (peda)


Lesenswert?

m.n. schrieb:
> Diese bahnbrechende Erkenntnis würde ich mir patentieren lassen :-(

Patentieren kann man nur, was nicht offensichtlich ist.
Aber ich hab schonmal lachen müssen, als sich jemand abquälte, einen 
Stepper zu drehen, der noch unter Haltestrom stand.

von oszi40 (Gast)


Lesenswert?

Peter D. schrieb:
> Stepper zu drehen, der noch unter Haltestrom stand.

Das kommt nur auf die aktuelle Größe des Haltestroms an. :-) Rauschen 
und zischen kann er trotzdem je nach Ansteuerung. Auge auf Oszi und 
vergleichen.

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.