Forum: Mikrocontroller und Digitale Elektronik "Regelung" eines Schrittmotors mit µC


von Frank (Gast)


Lesenswert?

Hallo,

ich bin gerade dabei einen Schrittmotor zu regeln. Hört sich vllt für 
manche blöd an, aber Tatsache ist, dass der Motor auf 2400 Schritte (4 
Schritt Betrieb, 800 Schritte pro Umdrehung) ca. 20 Schritte. Benutze 
für die Ansteuerung einen fertig gekauften Schrittmotortreiber.

Da meine Aufgabe konkret die ist, eine Regelung zu implementieren ( und 
eben nichts an Ansteuerung etc. zu ändern) verwende ich nun optische 
Drehgeber.

Meine Idee ist nun, dass ich mit einem Timer ISR die tatsächlich 
gefahrenen Schritte (vom Drehgeber) mit dem PWM Signalen, die ich 
mitzähle und somit den "virtuellen" Schritten vergleiche.
Ist eine Abweichung vorhanden, setze ich die virtuellen Schritte auf die 
des Drehgebers zurück.
Soweit ich das bisher beurteilen kann klappt das "fast" ganz gut. Nur 
wenn es dann um den finalen Schritt geht passiert es, dass er 1-2 
Sekunden brauch um sich auszutarieren und hektisch hin und her dreht was 
natürlich auch ein sehr unbequemes Geräusch verursacht. Bei einer 
Toleranz von ±5 Schritten tritt dies nur noch sehr selten auf, 
allerdings hätte ich eben dennoch eine relativ hohe Abweichung.

Hättet ihr einen Vorschlag hierzu?

Oder eine andere sinnvolle Idee wie ich den Schrittmotor regeln kann?

Vielen Dank und Grüße,

Frank

von MaWin (Gast)


Lesenswert?

> Oder eine andere sinnvolle Idee wie ich den Schrittmotor regeln kann?

Du bemerkst gerade, daß ein Schrittmotor, dessen aktuelle Stellung mit 
einem Encoder erfasst wird wodurch man Schrittverluste erkennen und 
ausgleichen könnte, schwer anzusteuern ist.

Es gibt im wesentlichen 2 Methoden wie man klarkommt:

Wenn der Schrittmotor so langsam bewegt werden kann, daß er keine 
Beschleunigungspahse und Abbremsphase benötigt, kann man einfach so 
lange vorwärts Impuls geben, wei die Encoder-Position kleiner ist als 
die Sollposition und so lange rückwärts-Impulse geben, wie die Encoder 
Position grösser ist als die Sollposition, und dabei darf sich die 
Sollposition sogar jederzeit ändern.

Wenn der Schrittmotor jedoch so schnell bewegt werdne soll, daß er eine 
Beschleunigungsphase und eine Abbremsphase braucht, muß man bereits vor 
dem Erreichen der Zielposiotn abbremsen, und die könnte sich während 
dieser Zeit sogar gemeinerweise noch ändern so daß man zwangsweise über 
das Ziel hianusschiesst. Man ändert also (pro Zeiteinheit) das TEMPO des 
Motors, und kann ihn nur "ein bischen schneller" oder " ein bischen 
langsamer bis hin zum Stillstand und nachfolgender Drehrichtungsumkehr" 
stellen. Auch hier vergleicht man Sollposition und Istposition und 
entscheidet danach, in welche Richtung man das Tempo ändert.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

wie du offenbar selbst weisst, kann man einen Schrittmotor nicht regeln, 
aber:

Eine Lageregelung besteht üblicher- und zweckmässigerweise aus 2 
Regelkreisen, einer Geschwindigkeitsregelung und einer übergeordneten 
Lageregelung. Im Fall eines Schrittmotors ist die 
Geschwindigkeitsregelung in Wirklichkeit eine Geschwindigkeitssteuerung, 
aber das ist für die Lageregelung egal, die funktioniert unter diesen 
Umständen ganauso wie bei einem DC-Motor.

M.a.W. die Ausgangsgrösse der Lageregelung bestimmt die 
Schrittgeschwindigkeit.

Gruss Reinhard

von Uwe (Gast)


Lesenswert?

Die einfachste Regelung wäre die Schrittgeschwindigkeit in abhängigkeit 
zur entfernung der Sollposition zu verringern (Bei jedem Compare muß 
auch die aktuelle Differenz zwischen Ist- und Sollwert ausgewertet 
werden und die Geschwindigkeit angepaßt werden)

von frankman (Gast)


Lesenswert?

Noch einfacher wäre, zu untersuchen, WARUM der Schrittmotor Schritte 
verliert.

von Michael (Gast)


Lesenswert?

Frank schrieb:
> Nur
> wenn es dann um den finalen Schritt geht passiert es, dass er 1-2
> Sekunden brauch um sich auszutarieren und hektisch hin und her dreht was
> natürlich auch ein sehr unbequemes Geräusch verursacht.

Das hört sich nach einem Problem im Regelalgorithmus an, ggf. Timing 
zwischen Schrittausgabe und Sensorabfrage. Evtl. hilft eine Hysterese 
von einem Schritt.

von Holm T. (Gast)


Lesenswert?

>Hallo,
>
>wie du offenbar selbst weisst, kann man einen Schrittmotor nicht regeln,

...falshc!

In der DDR Schreibmaschine S6001 wurde der Wagenschrittmotor dieser 
Typenradmaschine als auch der Typenradmotor analog nachgeregelt.

Der Wagenmotor (kräftiges Teil mit ca. 10cm Durchmesser und ca 14cm 
lang, 36V) hatte einen 2 phasigen kapazitiven Geber montiert, der 
Schrittmotor des Typenrades einen optischen, wobei hier natürlich der 
Sonderfall eintrat, dass die jeweiligen "Zahnungen" mit den 
Schrittzahlen der Motoren übereinstimmten.

Das Teil hat es jedenfalls geschafft >10 Zeichen/Sekunde zu drucken und 
mit atemberaubender Geschwindigkeit den mehr als 2Kg schwehren 
Typenradschlitten zu tabulieren. Gesteuert wurde dieses 
Analog/Digitalkonglomerat mit 3 Schrittmotoren von einem einzigen Z80.

Schaltungsunterlagen dazu hatte ich früher einmal, möglicherweise lassen 
sich da bei Robotrontechnik.de sogar noch welche auftreiben, aber der 
Kram war schon sehr speziell, nutze als Komparatoren für die Chopper 
wohl irgendwelche Leitungsempfänger und Dergleichen..

Die Assemblerquellen für den Z80 waren schon zu DDR Zeiten den Weg alles 
irdischen gegangen, ich hatte damals versucht diese aufzutreiben, weil 
ich die Platinen bekommen hatte und das Typenraddruckwerk einzeln im 
Bastlerbedarf gehandelt wurde. Ein Wahnsinnsversuch einen drucker selbst 
zu bauen.
Die Programme wurden wohl in Sömmerda auf einem KRS4200 (Honneywell 9000 
Derivat) mit einem Crossassembler erstellt, die Lochstreifen nicht mehr 
auffindbar...

Lange Rede kurzer Sinn: es geht doch!

Gruß,

Holm

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.