StepperController

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Open Source Schrittmotorsteuerung von Peter Diener, Florian Kaiser und Thibault Bitenc.

Hier entsteht eine Seite zu einer DSP-basierten Schrittmotorsteuerung.

Eckdaten

Versorgungsspannung bei Betrieb mit Energierückgewinnung "Treiben / Bemsen": 50 V

Versorgungsspannung bei Betrieb ohne Energierückgewinnung: 100 V

Dauerausgangsstrom pro Halbbrücke: 10 A

Pulsausgangsstrom pro Halbbrücke: 20 A

Anzahl Switch-mode Brückenausgänge: 8

Anzahl Brückenausgänge mit RMS-Strommessung (RMS per HF-Periode): 4

Bemessungsstrom der Einspeisung (vom Netzteil): 10 A dauernd, 20 A kurzzeitig

Ausgangsstrom für schaltbaren Bremschopper-Widerstand: 10 A

Modulationsfrequenz: 20 kHz bis 100 kHz

Mögliche Motorkonfigurationen (u.A.):

  • 2 Stück 2-Phasen-Schrittmotoren
  • 1 Stück 5-Phasen-Schrittmotor
  • 2 Stück 3-Phasen-Synchronmotoren
  • 2 Stück 3-Phasen-Asynchronmotoren
  • evtl. Switched-Reluctance-Motoren

Vorüberlegungen

Bauteile:

DSP: TMS320F28062

Shuntauswertung: Phase Current Sensor IC: IR22771S, Farnell# 1603655 2,73 € (10 St.)

Gatetreiber: Half Bridge Driver IC: IRS2184SPBF Farnell# 1271819, 1,47 € (10 St.)

Bootstrap-Dioden: STPS2150A Farnell# 1611385, 0,312 € (10 St.)

FETs:

IRFI4110GPBF, Farnell# 1888169, 4,71 € (25 St.)

alternativ PSMN5R6-100XS, Farnell# 2114735, 2,28 € (25 St.)

Schaltnetzteil von 100 V auf 24 V wird ein LM5116MH, Farnell# 1342345, 8,04 €

Drossel für Schaltnetzteil nach Berechnung:

100 kHz, 100 V in, 24 V out, 1 A out, 40% ripple -> 456 µH

Eingesetzt wird Würth PD INDUKTIVITAET TYP XXL,270UH,1.6A, Farnell# 2082653 3,36 €, allerdings bei 250 kHz.

MOSFET für Schaltnetzteil: IRF7815PBF, 150V, 5.1A, SO8, Farnell# 1865585, 1,10 € (1 - 24 St.)

DC-DC Wandler für RS232: ADUM5000, Farnell# 2102522, 6,72 €, Besonderheit: Trafo in Silizium!

Spannungsregler für 5V Schiene: LM340MP-5.0/NOPB, Farnell# 1469097 :: Ersetzt!!!

Relaistreiber und Motorbremstreiber: Allegro A2981SLW-T, Farnell# 1329620, 3,12 €

Eingangsmodule: Widerstandsteiler, dann 74HCT14 Schmitt-Trigger

Noch aussuchen: ???

Zwischenkreiselkos: 8 Stück von Epcos B41231A9128M000, Farnell# 1839292, 1,64 €

Shuntwiderstand wurde ausgesucht für 250mV Spannungsabfall bei 15A Wicklungsstrom, d.h. 15mOhm, gewählt wird von VISHAY DALE LVR05R0150FE73, Farnell 1108082 1,38 €

Funktionsbeschreibung

Überblick

Bei dem Entwurf handelt es sich um eine volldigitale Schrittmotorsteuerung.

Ein extern anzuschließendes Netzteil stellt Gleichspannung zur Verfügung. Damit wird ein Zwischenkreis versorgt, der wiederum mit einem Kondensatorpaket gestützt wird. Der Zwischenkreis ist für Spannungsniveaus zwischen 30 V und 100 V ausgelegt. Das externe Netzteil speist den Zwischenkreis über eine Diode, so dass im Bremsbetrieb die Spannung am Zwischenkreis bis 100 V ansteigen kann, ohne, dass das Netzteil diese erhöhte Spannung aushalten muss. Wir empfehlen für das System ein Netzeil im Bereich 48 V bis 60 V und einem Nennstrom von 10 A. Es können Schaltnetzteile sowie konventionelle Netzteile verwendet werden, eine Glättung ist nicht notwendig.

Aus dem Zwischenkreis wird mit einem Schaltnetzteil eine Allgemeinspannungsversorgung von 24 V erzeugt. Daraus wiederum werden mit 3 weiteren Schaltnetzteilen 15 V für die Gateansteuerung der MOS-FETs und die Strommessung erzeugt, sowie 5 V Versorgungsspannung für externe Funktionen (z.B. Motordrehencoder) und 3,3 V für die CPU. Die CPU selbst enthält einen Linearregler auf 1,8 V für den Core.

Die Motorphasen werden mit einer Brückenendstufe aus dem Zwischenkreis versorgt. Am Zwischenkreis sind 8 Halbbrücken angeschlossen. Das bedeutet, es gibt 8 Leistungsausgänge, von denen jeder wahlweise auf Masse oder auf Zwischenkreisspannung geschaltet werden kann. Durch schnelle Modulation im Bereich mehrerer kHz lässt sich dadurch Strom an ohmsch-induktiven Lasten wie Motoren, Magneten u.Ä. einprägen. Im gegebenen Anwendungsfall wird speziell auf die Funktionalität in Bezug auf Schrittmotoren Wert gelegt, jedoch kann (mit etwas Anpassung der Software) auch eine andere Last versorgt werden.

Jeder zweite Leistungsausgang verfügt über eine Strommessung, die digital ausgewertet werden kann. Dadurch kann der Strom an jeder Wicklung des Motors erfasst und auf einen Sollwert geregelt werden. Dieser Regler wird in Software implementiert.

Jede Halbbrücke besteht aus 2 N-Kanal-MOS-FETs, die über einen gemeinsamen Treiberbaustein gesteuert werden. Dieser stellt durch ausreichende Totzeit in Hardware sicher, dass kein Brückenkurzschluss durch gleichzeitiges Einschalten des oberen und unteren Transistors auftritt - auch im Fall eines Softwarefehlers. Über ein Enable-Signal kann die Treibersteuerung der FETs komplett abgeschaltet werden, hiermit lässt sich bei Bedarf eine Funktion für einen sicheren Halt einer Antriebsmaschine implementieren, aber auch ein freies Drehen ist möglich.

Die CPU, ein Digital-Signalprozessor TMS320F28062 steuert und regelt alle Funktionen. Hauptaufgabe ist die Regelung der Motorstrangströme durch Messung der Istwerte und entsprechende Ansteuerpulserzeugung für die MOS-FET-Halbbrücken. Sollwerte für diese Strangströme werden durch übergeordnete Regler errechnet (Lage-, und Geschwindigkeitsregelung). Die Regelung kann durch eine Rotorpositionsmessung am Motor per Drehencoder unterstützt werden. Dazu gibt es 2 Eingänge für gängige Incrementalencoder, wahlweise für 24 V oder 5 V Versorgungsspannung und wahlweise für 24 V oder 5 V Signalspannung. Unterstützt werden Incrementalgeber mit 2-Bit Gray Code mit und ohne und Indexmarke.

Für externe Funktionen sind weiterhin 4 Analogeingänge (umschaltbar zwischen 0-10V und 0-20mA) vorgesehen, die hochauflösend mit bis zu 1 Megasample pro Sekunde abgetastet werden können. Die Auflösung des AD-Wandlers beträgt 12 Bit. Das vorgeschaltete RC-Filterglied muss bei schnellen Messfunktionen an die benötigte Grenzfrequenz angepasst werden. Momentan sind die Eingänge auf langsame Signaländerung konfiguriert. In einer aktuellen Anwendung soll beispielsweise ein externer Unterdrucksensor ausgewertet werden.

Für allgemeine Funktionen stehen 8 Binäreingänge (24 V) zur Verfügung, hierüber lassen sich beispielsweise Fahrbefehle einfach per Taster steuern oder Rückmeldungen von angefahrenen Motorpositionen per Schalter abfragen. Außerdem sind 6 Binärausgänge zur Ansteuerung von 24 V Relais oder anderen kleinen Spulen, z.B. pneumatischen Magnetventilen vorgesehen.

Es gibt 4 Eingänge für Endlageschalter zum Einrichten und Kalibrieren der Motorposition z.B. für Linearantriebe. Per Software sind diese 4 Eingänge für eine Schnellbremsung vorgesehen, wenn die Endlagen überfahren werden.

Zwei 24 V Ausgänge sind für elektromagnetische Not- und Haltebremsen vorgesehen. Bei Bedarf können diese Ausgänge auch für allgemeine Funktionen verwendet werden, wenn keine Bremsen benötigt werden.

Das Sytem kann über 2 serielle Schnittstellen (RS-232) an eine übergeordnete Steuerung (z.B. einen PC) angeschlossen werden. Über diese 2 Schnittstellen kann ein Loop von einem PC über mehrere Motorsteuerungen und zurück zum PC aufgebaut werden. Der Loop ist bidirektional, d.h. Daten können in beide Richtungen übertragen werden. Fällt eine Richtung z.B. durch Kabelbruch aus, steht noch die andere Seite zur Verfügung und das System kann einen sicheren Stoppzustand unter allen Teilnehmern aushandeln. Über die serielle Schnittstelle ist ein Softwaredownload auf die CPU möglich. Dazu gibt es einen entsprechenden Bootloader.

Bei dem Leiterplattenlayout wurde besonderer Wert auf hohe Stromtragfähigkeit gelegt. So können kurzzeitig Pulsströme auf den Wicklungen gefahren werden, die den Nennstrom von 10 A um Faktoren übersteigen. Die Leisterplatte wird dazu mit 70 Mikrometer Kupferlagendicke und 4 Lagen gefertigt. Die leistungsführenden Leiterbahnen sind nicht nur auf der maximal möglichen Lagenzahl geführt, sondern auch massiv an die Leistungsbauteile angebunden und mit vielen Durchkontaktierungen versehen, die den Strom und die Wärme optimal auf alle Lagen verteilen und zudem ein Löten der Bauteile an den dicken Bahnen (mit entsprechend schwerem Lötkolben) ermöglichen.

Die Leiterplatte ist so gebaut, dass alle Anschlüsse für Kabel nach vorne herausgeführt werden können. Nur die serielle Schnittstelle sowie der JTAG-Debugger können von hinten über Flachbandkabel angeschlossen werden (Von DB-9 Steckern in Einlöttechnik halten wir nicht so viel... Wir nehmen lieber die mit Kabel und bauen diese neben der Leiterplatte in die Frontplatte). Alle Kabelanschlüsse sind über steckbare Klemmverbinder geführt.

Die Karte ist so ausgelegt, dass eine gefräste Frontplatte über die frontseitigen Steckanschlüsse angeordnet werden kann, so dass an der Frontplatte alles ordentlich beschriftet zugänglich ist.


Schaltpläne

StepperController.png

StepperController-Chopper.png

StepperController-IO.png

StepperController-RS232.png

StepperController-ClassD Amp 1.png

StepperController-ClassD Amp 2.png

StepperController-PowerSupply.png

Layout

StepperController Layout.svg