Posts Tagged ‘Schrittmotor-Treiber’

Ansteuern von Schrittmotoren mit Arduino

Montag, Mai 5th, 2014

Ein Arduino Controller kann verwendet werden, um eigenständige interaktive Objekte zu steuern oder um mit Softwareanwendungen auf Computern zu interagieren (z. B. Adobe Flash, Processing, diverse Skriptsprachen, Terminal etc.). Arduino wird beispielsweise auch an Kunsthochschulen genutzt, um interaktive Installationen aufzubauen. Die Hardware besteht aus einem einfachen I/O-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung verwendet die Programmiersprache Processing, die auch technisch weniger Versierten den Zugang zur Programmierung und zu Mikrocontrollern erleichtern soll. [Quelle: Wikipedia]

Um es Einsteigern in die Welt von Elektronik und Mikrocontrollern möglichst einfach zu machen, gibt es für die Arduino-Plattform eine große Vielfalt an steckbaren Erweiterungsmodulen, so genannte „Shields“. Auch für die Ansteuerung von Motoren sind diverse Shields erhältlich. Sie bestehen oft nur aus einem Treiberchip mit der minimalen Basisbeschaltung. Über die kleine Platine kann kaum Verlustleistung abgeführt werden, zudem fehlt es für größere Motoren an ausreichend dimensionierten Pufferelkos. Auch Schutzbeschaltungen (Kurzschlussschutz, Optokoppler in Richtung Controller) sind die absolute Ausnahme. Das Experimentieren mit Motoren kann so schnell zu einem frustrierenden Erlebnis werden, wenn mit den Motoren „reale“ Lasten angetrieben werden sollen. Im folgenden Beitrag wird gezeigt, wie man mit einem Arduino mit Hilfe der AccelStepper-Bibliothek über wenige I/Os nahezu alle Schrittmotorsteuerungen mit Takt-/Richtungsinterface ansteuern kann.

Zur Arduino Entwicklungsumgebung gehört auch eine einfache Bibliothek zur Ansteuerung von Schrittmotoren. Sie geht jedoch davon aus, dass die Motorwicklungen direkt oder mittels zwischengeschalteter Transistoren über die I/Os des Prozessors angesteuert werden (Verwendung von zwei Ausgängen je Motorwicklung, insgesamt 4 Ausgänge). Beschleunigungs- und Bremsrampen sind nicht vorgesehen. Durch diese einfache Ansteuerung lässt sich nur ein geringes Drehmoment bei niedrigen Drehzahlen erreichen. Die AccelStepper-Library unterstützt dagegen auch so genannte 2- und 3-Draht Interfaces sowie den Typ „Driver“. Gemeint ist damit die Ansteuerung von integrierten Treibern über Takt- und Richtungssignale. Es ist auch möglich, eigene Interface-Definitionen einzuführen, wie im Beispiel zu diesem Beitrag gezeigt wird. Wie der Name andeutet, implementiert die Lib außerdem Beschleunigungs- und Bremsrampen. Über die Bibliothek können zudem mehrere Motoren gleichzeitig angesteuert werden, was die Anwendungsmöglichkeiten von Arduino für Projekte mit Motoren deutlich erweitert.

Anschluss der Tiny-Step Endstufe an den Arduino Controller

Anschluss der Tiny-Step Endstufe an den Arduino Controller

Das Bild zeigt den Anschluss der Takt-Richtungsendstufe Tiny-Step II, welche auf dem A3979 von Allgero Micro basiert. Der Treiber realisiert Motorströme bis 2,25A bei bis zu 35V bei Mikroschritt-Auflösungen bis 1/16. Durch das durchdachte Kühlkonzept werden die genannten Leistungsdaten auch im Dauerbetrieb sicher erreicht. Der integrierte, selbstrückstellende Kurzschlussschutz sichert die Schaltung vor Schäden durch falsche Beschaltung. Neben den Anschlüssen für Takt und Richtung (grün und gelb) werden auch Ausgänge für Enable (Einschalten der Endstufe) und Stromabsenkung ausgegeben sowie ein Fehlersignal von der Endstufe über einen Eingang eingelesen. Diese Signale sind optional. Der fertige Aufbau ist im folgenden Bild zu sehen, angeschlossen ist ein Nema17 Motor mit 0,5Nm Haltemoment. Auch kleinere Nema23 Motoren können mit diesem Aufbau angesteuert werden.

Testaufbau mit Arduino, Tiny-Step und Schrittmotor von Nidec Servo

Testaufbau mit Arduino, Tiny-Step und Schrittmotor von Nidec Servo

Nach dem gleichen Prinzip und hier sogar mit der identischen I/O-Beschaltung lassen sich aber auch deutlich leistungsfähigere Endstufen an den Arduino anbinden. Das folgende Bild zeigt einen Aufbau mit einer Endstufe vom Typ LAM DS1078 (bis 14A bei bis zu 90V), die einen Nema34 Motor mit 3,1Nm antreibt. Die DS10-Serie ist eine industrietaugliche Serie von Schrittmotorendstufen mit SPS-kompatiblen I/Os. Durch den Einsatz dieser Kraftpakete ergeben sich mit dem Arduino ganz neue Möglichkeiten.

Testaufbau mit LAM DS1078

Testaufbau mit LAM DS1078

Das Programmierbeispiel (Arduino-Projekte werden auch Sketch genannt) ist auf Git-Hub frei zum Download verfügbar. Ich würde mich über Rückmeldungen zum Einsatz der Accellib freuen.

Einschwingverhalten von Schrittmotoren

Dienstag, Juli 9th, 2013

Um Schrittmotoren in der Anwendung besser verstehen und beurteilen zu können ist es hilfreich, zunächst das Verhalten des Motors bei einem einzelnen Schritt zu betrachten. Auf dieser Basis lassen sich viele Dinge wie z.B. die Vorteile von Halb- und Mikroschritt sowie die Bedeutung der Last und ihrer Ankopplung an den Motor besser nachvollziehen.

Für die in diesem Beitrag behandelten Messungen wurde zur Erfassung der Rotorbewegung ein Encoder mit 5.000 Strichen und TTL-Ausgang verwendet. Mit Hilfe der 4-fach Flankenauswertung lässt sich die Bewegung auf 20.000 Pulse/U auflösen. Bei einem normalen Schrittmotor mit 200 Vollschritten/U entspricht das 100 Pulsen pro Vollschritt.

Der Encoder wurde über eine drehsteife Elastomer-Kupplung direkt an den Motor angekoppelt. Als Testmotor wurde ein Oriental Motor Typ PK268-E2.0B in paralleler Beschaltung eingesetzt. Auf der B-Welle war ein Dämpfer Typ D6CL-6.3F (Massenträgheit J_Dämpfer=18,5*10-6 kg*m², J_Motor=48*10-6 kg*m²) montiert.

Testaufbau, Schrittmotor mit Encoder

Schrittmotor PK268-E2.0B mit Encoder und Dämpfer

Angesteuert wurde der Motor über eine 3-Achs Endstufe „3D-Step“ mit der klassischen L297/L298 Treiber-Kombination bei 2,0A(effektiv), also etwas unterhalb des Nennstroms von 2,8A. Die Erfassung der Encoder-Signale erfolgte über eine Beckhoff-SPS mit einer Taktrate von 2ms.

Bei einem Vollschritt sollte der Motor einen Winkel von 1,8° weiterschalten. Eine erste Messung zeigt, dass der Motor trotz der Belastung durch den Dämpfer und den Encoder dabei deutliche Schwingungen ausfürt. Der Rotor schwingt bis fast 2,8° über und pendelt auf 1,5° zurück, bevor die Schwingung langsam abklingt und nach ca. 10ms in einem Toleranzband von +/- 0,2° ausklingt.

Messergebnis Vollschritt mit Dämpfer

Vollschritt mit Dämpfer

Noch deutlich schlimmer sieht es aus, wenn man den Dämpfer von der B-Welle des Motors entfernt. Das Überschwingen ist mit max. 3,0° von der Amplitude her zwar nur unwesentlich stärker, jedoch lässt sich deutlich erkennen, dass die Dämpfung stark reduziert wird. Es dauert jetzt ca. 25ms, bis der Rotor im selben Toleranzband bleibt wie dies beim ersten Versuch bereits nach 10ms der Fall war.

Messergebnis für Vollschritt ohne Dämpfer

Vollschritt ohne Dämpfer

Nach Umschalten der Endstufe in den (stromkompensierten) Halbschritt und erneuter Montage des Dämpfers ergibt der nächste Versuch die folgende Sprungantwort. Zu beachten ist hier, dass der Motor nach einem Halbschritt im Vergleich zu den vorherigen Versuchen nur den halben Winkel, also 0,9° zurück gelegt hat. Die Schwingung reicht hier von ca. 1,15 bis zurück nach 0,7° und erreicht bereits nach einer Schwingung ein Toleranzband von +/-0,1°. Zur besseren Vergleichbarkeit wurde der Maßstab des Graphen unverändert beibehalten.

Messergebnis für Halbschritt mit Dämpfer

Halbschritt mit Dämpfer

Beim Übergang zu einer kontinuierlichen Drehbewegung wird der Rotor je nach Drehzahl weitergeschaltet, bevor die durch einen einzelnen Schritt angeregte Schwingung vollständig abgeklungen ist. Das zeigt auch die folgende Messung bei ca. 42Hz Halbschritt. Trotzdem führen insbesondere der erste Überschwinger und die stufenweise Bewegung im unteren Drehzahlbereich zu unangenehmen Betriebsgeräuschen.

Messergebnis für eine kontinuierliche Bewegung mit ca. 42Hz Halbschrittrate

Kontinuierliche Bewegung mit ca. 42Hz Halbschrittrate

In der Anwendung treibt der Motor eine mehr oder weniger steif angekoppelte Last an. Es ist angesichts dieser Messungen leicht nachvollziehbar, dass der Motor mit seiner Schwingneigung leicht Resonanzstellen in der Mechanik anregen kann.

Die Amplitude des Überschwingens hängt direkt mit dem Drehmoment und damit mit dem Motorstrom zusammen. In diesem Versuch wurde der Motor bereits ca. 30% unterhalb seines Nennstroms betrieben. Bei Nennstrom ist also eine noch stärkere Schwingung zu erwarten. Umgekehrt bedeutet dies, dass eine Absenkung des Motorstroms –sofern in der Anwendung entsprechende Drehmomentreseven vorhanden sind- zu einer Reduktion von Schwingungen führen wird.

Wie der Gegenversuch mit dem Dämpfer zeigt, hilft eine steif angekoppelte Last, das Gesamtsystem zu bedämpfen. Auch die Auswahl einer geeigneten Kupplung sowie eine stabile Lastmechanik (geringe Schwingungsneigung) sind Hilfen, um Resonanzprobleme zu vermeiden. Einen deutlichen Vorteil bietet vor allem der Wechsel zum Halbschritt-Modus. Bei Einsatz einer Endstufe mit Drehmoment-Kompensation (also der Erhöhung des Phasenstroms in den Halbschrittpositionen) entsteht durch den Einsatz von Halbschritt kein nennenswerter Drehmomentverlust. Daher und wegen der erhöhten Schwingungsneigung im Vollschritt rate ich grundsätzlich von der Verwendung des Vollschrittbetriebs ab.

Eine weitere Optimierung besteht im Einsatz von Steuerungen mit Mikroschritt und ggf. der Möglichkeit, das beim Schrittmotor besonders ausgeprägte Rastmoment zu kompensieren. Diesem Thema werde ich demnächst einen eigenen Beitrag widmen.

China-Endstufen im Test bei c’t Hardwarehacks

Mittwoch, Mai 2nd, 2012

Der c’t Redakteur Carsten Meyer widmet sich in seinem Testbericht auf Heise Hardware-Hacks den inzwischen sehr belieben 3- oder 4-achsigen Schrittmotorendstufen auf Basis des Toshiba TB6560AHQ. Im Test nimmt das Design genauer unter die Lupe und entdeckt einige Ungereimtheiten. Fazit: Wo Licht ist, ist auch Schatten…

Zum Testbericht auf Hardware-Hacks

Made in China – Hauptsache billig oder was?

Mittwoch, Juni 29th, 2011

Anläßlich des aktuell stattfindenden deutsch-chinesischen Gipfeltreffens in Berlin (oder sollte man besser sagen: der Handelmesse für DAX-Riesen) erinnere ich mich an eine SWR-Reportage zu den Arbeitsbedingungen in der chinesischen Elektroindustrie. Wie es im die Menschenrechte in China bestellt ist, sollte jedem politisch nur minimal interessierten Menschen klar sein. Wie die Arbeitsbedingungen konkret aussehen, war mir aber z.B. im Detail nicht klar. Welche Schlüsse man daraus zieht, bleibt jedem selbst überlassen. Ein völliger Verzicht auf Elektronik „Made in China“ dürfte ohnehin unmöglich sein, da in vielen Bereichen inzwischen fast ausschließlich in China produziert wird. Wo man aber die Wahl hat, sollte man vielleicht überlegen, ob man einem Produkt aus europäischer Produktion nicht den Vorzug gibt, auch wenn es vielleicht ein paar Prozent mehr kostet. Dafür hat man dann z.B. bei Problemen auch einen Ansprechpartner vor Ort.

SWR-Reportage ‚Hauptsache billig‘, Teil 3 bei YouTube

SWR-Reportage ‚Hauptsache billig‘, Teil 4 bei YouTube

Ergänzend dazu ein Bericht über den Gipfel bei Spiegel Online. Klar, dass Menschenrechte nur am Rande erwähnt werden, wenn man große Geschäfte machen will.

Die anderen Teile der Reportage sind übrigens auch interessant. Dort geht es um den Gemüseanbau in Portugal für Penny und die Textilherstellung für Lidl in Bangladesh…

Stromregelung von Schrittmotoren – Auf das Abschalten kommt es an

Sonntag, Mai 15th, 2011

Bei der Ansteuerung von Schrittmotoren haben sich schon längst Treiber mit Konstantstromregelung durchgesetzt. Ansteuerungen mit Konstantspannung findet man nur noch vereinzelt, z.B. bei Zeigerinstrumenten im Automobil, siehe vorletzter Beitrag. Entscheidend für die Performance einer Schrittmotor-Endstufe mit Konstantspannungsregelung ist, neben der Höhe der Versorgungsspannung und dem Wicklungsstrom vor allem die Phase, in der der Strom in der Wicklung wieder abgebaut wird. Die unterschiedlichen Verfahren erläutert der folgende Beitrag.

Induktivitäten versuchen, aufgrund der in ihnen gespeicherten Energie, nach dem Abschalten der Spannung den durch sie fließenden Strom aufrecht zu erhalten. Je nach dem, wie die Wicklung abgeschaltet wird, wird der Strom schneller oder langsamer abgebaut. Davon hängt letztlich auch ab, wie schnell der Strom in die Gegenrichtung aufgebaut werden kann, wenn der Schrittmotor schnell läuft und die Wicklungen oft umgepolt werden. Beim slow decay erfolgt der Stromabbau langsam, was bei hohen Drehzahlen (d.h. häufigem Umgepolen) dazu führen kann, dass der Strom nicht schnell genug abgebaut werden kann. Insbesondere im Mikroschritt ergibt sich dann eine deutliche Abweichung von der gewünschten, sinusähnlichen Stromkurve, die auch zu hörbaren Geräuschen durch Schwankungen im Drehmoment führen kann.

Stromverlauf bei slow decay Stromregelung

Stromverlauf bei slow decay Stromregelung (Quelle: „A new microstepping motor driver IC“, Kongress-Paper über den A3977 zur PCIM 2001, Allegro Micro).

Beim „slow decay„, also dem langsamen Abklingen des Stromes, wird die Wicklung zunächst (während der deadtime) über die Dioden der Vollbrücke kurzgeschlossen, bevor einer oder beide unteren FETs bzw. Transistoren der Brücke eingeschaltet werden (prinzipiell können alternativ auch die oberen FETs eingeschaltet werden).  Man kann die beiden FETs gedanklich auch gegen 2 Widerstände ersetzen, die mit der Motorwicklung in Reihe geschaltet werden. Die Phase zwischen dem Ein-Zustand und dem Kurzschließen der Wicklung (Deadtime bzw. Totzeit) wird durch die Dioden überbrückt. Bei FETs wird diese Aufgabe automatisch von den internen Body-Dioden übernommen, bei Transistorbrücken müssen unbedingt schnelle externe Dioden verwendet werden. Wird anschließend nur ein FET eingeschaltet (Q4 im Bild), läuft der Strom auf der Gegenseite über die Diode. Da der Spannungsabfall über den Dioden meist größer ist als der in den FETs, schalten moderne Treiber meist beide FETs ein. Das Verfahren wird auch „synchronous rectification“ oder „synchronous decay“ genannt. Das folgende Bild zeigt die sich ergebenden Strompfade.

Strompfade bei slow-decay Stromregelung

Strompfade in einer FET-Brücke bei slow-decay Stromregelung

Deutlich schneller geht der Stromabbau beim „fast decay„, also dem schnellen Abklingen des Stromes. Nach der deadtime wird die Wicklung durch Umpolen kurzgeschlossen, bis der Strom auf Null abgeklungen ist. Auch hier kann der Kurzschluss entweder über die Dioden oder über gezieltes Schalten der FETs erfolgen. Dabei wird die in der Wicklung gespeicherte Energie in die Versorgung zurück gespeist, was zwar die Verluste mindert, aber auch zu einem höheren Ripple im Strom und in der Versorgungsspannung führt. Außerdem kann der schnelle Stromabbau dazu führen, dass bei niedrigen Drehzahlen der Mittelwert des Wicklungsstromes deutlich kleiner ist als eigentlich vorgesehen.

Strompfade bei fast-decay Stromregelung

Strompfade in einer FET-Brücke bei fast-decay Stromregelung

Im „mixed decay“ werden die Vorteile beider Verfahren vereint. Der Strom wird zunächst bis zu einer (meist in mehreren Stufen einstellbaren) Schwelle per fast decay abgebaut, bevor auf slow decay umgeschaltet wird. Zusätzlich wird in Phasen, in denen der Strom aufgebaut werden soll (also vom Nulldurchgang bis zum max. Phasenstrom) nur mit slow decay gearbeitet, wärend im 2. Teil der Halbwelle mit mixed decay gearbeitet wird. Das folgende Bild veranschaulicht die unterschiedlichen Phasen am Beispiel des A3977 im 1/8 Schritt Mikroschritt.

Phasenstrom mixed decay

Phasenstrom bei mixed decay Stromregelung, Unterteilung in Phasen des Stromauf- und -abbaus (Quelle: Datenblatt A3977, Allegro Micro).

Der unterschiedliche Verlauf des Motorstroms sieht dann in den mixed decay Phasen wie folgt dargestellt aus:

Stromverlauf mixed decay

Stromverlauf mixed decay (Quelle: „A new microstepping motor driver IC“, Kongress-Paper über den A3977 zur PCIM 2001, Allegro Micro).

Weitere Literatur zum Thema: „Current Recirculation and Decay Modes“, Application Report SLVA321–March 2009, Texas Instruments

Übersicht über gängige integrierte Schrittmotor-Treiber

Mittwoch, April 27th, 2011

Soll für eine Anwendung eine neue Schrittmotor-Steuerung entwickelt werden, geht die Suche nach den geeigneten Treiber-Bausteinen los. Neben den „alten Bekannten“ wie z.B. L293D, L297/L298 oder PBL3717A gibt es heute eine interessante Auswahl an voll integrierten Lösungen mit Mikroschritt und vielen weiteren interessanten Funktionen. Die folgende Tabelle gibt eine Übersicht über die bekanntesten ICs und deren wichtigeste Eigenschaften. Nicht zu allen Bauteilen sind über die Hersteller Demo-Boards erhältlich. Daher sind, soweit bekannt, exemplarisch einige Produkte aufgeführt, in denen die genannten ICs enthalten sind. Um die Darstellung übersichtlich zu halten, sind nur die Basisdaten genannt. Eine umfangreichere Darstellung steht zum Download zur Verfügung.

 

 

 

 

 

Bauteil Hersteller max.
Mikrostep
Nennstrom Spannung I/O Anmerkungen
Produkte
Amis30624 On Semi 0,57A 7-29V I²C int. Motioncontroller
Amis30522 On Semi 1/32 1,5A 6-30V Takt-/Dir,
SPI f. Konfig.
mit Stalldetection
A3959
(=IMT-903)
Allegro Micro beliebig 3,0A 10-50V Takt/Dir Slider SFX,
SMCI33
A3977
A3979
Allegro Micro 1/8 / 1/16 2,5A 8-35V Takt/Dir Tiny-Step II
A3986 Allegro Micro 1/16 >5,0A 12-50V Takt-/Dir HEM-545,
SMCI47-S
LMD18245 National Semi beliebig 3,0A 12-55V Brake/Dir
L293 ST 1,0A 5-36V parallel, incl. Enable
L297 ST Voll/Halb Takt/Dir f. externe H-Brücken
3D-Step
L298 ST 2,0A 8-46V parallel, incl. Enable 3D-Step
L6506 ST beliebig Takt/Dir f. externe H-Brücken
HP-Step.pro
L6201/L6202
L6203
ST 1,5A/4,0A 12-48V parallel, incl. Enable HP-Step.pro
L6208 ST Voll/Halb 2,8A 12-52V Takt/Dir µStep m. ext. DAC
L6219 ST 1/4 0,75A 10-46V Phase/Current µStep m. ext. DAC
PBL3717A ST, Ericsson 1/4 1,0A 10-46V Phase/Current µStep m. ext. DAC
PBL3770A
UC3770A
Ericsson, TI Voll/Halb 1,5A 10-40V Phase/Current
TA8435H
(=IMT-901)
Toshiba 1/8 1,5A 24V Takt/Dir Step3N (Fa. Lewetz)
TB62201
(=IMT-902)
Toshiba 1/16 1,2A 20-34V parallel, incl. Enable
TB6560A Toshiba 1/16 3,0A 5-34V Takt/Dir Imax f. HQFP: 1,5A
TMC236
TMC246
Trinamic 1/16 1,5A 7-34V SPI (12-bit) TMC246 m. Stalldetection
TMC239
TMC249
Trinamic 1/16 >4,0 7-34V SPI (12-bit) TMC249 m. Stalldetection
TMC261
TMC262
Trinamic 1/256 1,2A/>5,0A 9-59V Takt/Dir,
SPI f. Konfig.
lastabhängiger Strom

schrittmotortreiber.pdf