Forum: Mikrocontroller und Digitale Elektronik Schrittmotorsteuerung


von Waldemar_P (Gast)


Lesenswert?

Hallo ich will einen Schrittmotorsteuerung aufbauen,
es geht mir jetzt nicht um die Endstufen sondern die Steuerung mit Takt, 
Richtung, Beschleunigungsrampen, lineare interpolation usw. Das will ich 
in ein MC intergieren und die Daten vo PC via RS232 einlesen. Hat da 
schon einer Erfahrungen damit gemacht für Hilfe und Ratschläge bin ich 
Dankbar.

Gruß
Waldemar

von Steffen Burr (Gast)


Lesenswert?

Ich habe mir gerade die Teile angeschafft und bin gerade auch am 
experimentieren damit, allerdings mit einem kleinen Schrittmotor (aus 
einem Diskettenlaufwerk glaub ich ...). Ich verwende den TCA 3727 ...
Die Infos, die du suchst würden mich auch interessieren ...

Grüße Steffen

von Markus Burrer (Gast)


Lesenswert?

Ich würde Dir zu eine Kombination aus L297/L298 raten. Das vereinfacht 
die Ansteuerung erheblich. Ich habe gerade eben auch noch einen Beitrag 
in einem anderen Forum geschrieben.
Ließ mal den letzten Beitrag.
http://www.Elektronik-Projekt.de/Forum/YaBB.cgi?site=&board=mechanik&action=display&num=908&start=15
Ich kann Dir auch ein paar PDF Files zukommen lassen, in denen das 
genauer beschrieben ist

Gruß
Markus
http://www.elektronik-projekt.de/

von Waldemar_P (Gast)


Lesenswert?

Wie ich schon in dem erstem Thread angedeutet habe ich will mit einem MC 
die Endstufen ansteuern die oben beschriebene Kombinationaus L297/L298 
habe ich schon gebaut in dreifacher Ausführung jetzt bin ich dabei der 
Soft und Hartware für den Ansteuerung der obigen zu basteln. Es soll 
eine Platinen Bohr und Fräse werden. Dafür brauche ich Routinen für 
Lineare Interpolation ( am besten Integer wegen Rechenleistung ) um von 
einer zur anderen Koordinate bei dem Tisch zu gelangen und um die Masse 
an den Spindeln auszutricksen Beschleunigungs und Bremsrampen bei 
Anfahren der Motore.

von Markus Burrer (Gast)


Lesenswert?

Hm, ich wüsste nicht, was das für einen Vorteil bringen sollte. Der 
Controller kann das auch nicht viel besser als der L297. Höchstens du 
willst das zu Übungszwecken machen oder sowas...

von Waldemar_P (Gast)


Angehängte Dateien:

Lesenswert?

Für die einzelne Vektoren am xy Tisch denke ich könnte man die im Anhang 
dargestellte Routine verwenden Bresenham Algoritmus, nur wie soll man da 
mit den Brems und Beschl. Rampen vorgehen und dazwischen konstanter 
Schrittakt

gruß
Waldemar

von Waldemar_P (Gast)


Lesenswert?

Hallo Markus,
Die Kombination aus L297/L298 ist ein Kpl. Leistungsteuerung für 
Schrittmotore mit PWM für Konstanten Strom und Phasenstrom regulation. 
Die aber von Aussen mit Takt Richtung Halb-/Vollschritt Signalen 
angesteuert werden muß und für diesen Zweck will ich einen 
Microkontroller verwenden um nicht mit Programmen wie PC-NC oder andere 
durch Parallelschnittstelle die ansteuern zu müssen.

gruß
Waldemar

von Markus Burrer (Gast)


Lesenswert?

Ahso, von einer Ansteuerung per Mikrocontroller bin ich sowieo 
ausgegangen. Die Funktion des L297 komplett auf einem µC nachzubilden 
sollte allerdings schwierig werden

von Bernhard T (Gast)


Lesenswert?

Sag mal Markus,
was ist mit dir auf einmal los? Waldemar hat eindeutig geschrieben das 
er den L297 sogar schon einsetzt.
Gruß Bernhard

von Markus Burrer (Gast)


Lesenswert?

Nix. Im ersten Posting hat er ja noch nix davon geschrieben.
Ich bin halt nur der Meinung, das es keinen Sinn macht, den L297  durch 
einen µC zu ersetzten, es sein denn Preis oder Platz spielen eine Rolle.
Mit einem µC, zwei L297 und 2 L298 kann man eine schöne 
Schrittmotorsteuerung aufbauen und der µC hat noch genügend Reserven für 
andere Aufgaben.
Ich will hier keinem was vorschreiben, nur vorschlagen. Ich teile nur 
meine Meinung mit. Was nicht heißt, das die immer richtig oder passend 
ist ;)

Gruß
Markus

von Phil (Gast)


Lesenswert?

Hallo,
ich hab auch so ein Projekt angefangen und bin auch fast fertig damit. 
Ich hab eine Platine mit 3 TCA3727, einem 2313 und einem Max232 zur 
kommunikation. Die Hardware funktioniert, die Verbindung zwischen PC <-> 
MAX232 <-> UART funktioniert auch, nur die Software auf dem µC ist noch 
nicht ganz fertig. Bei Interesse kann ich gerne mehr infos geben!
Phil

von Waldemar_P (Gast)


Lesenswert?

Hallo Phil,
ich habe da 2 Fragen und zwar
mit welcher Sprache programierst Du den kontroller
und ob du bei dem Steuerung Rampen für hoch und Runterfahren der Motoren 
benutzen wirst. Ich habe da bei den Rampen doch meine Probleme. Für 
Hilfe werde ich Dankbar.

Waldemar

von Torsten (Gast)


Lesenswert?

@Phil: An genaueren Info´s oder dem Quellcode hab ich auch Interesse! 
Hänge nämlich auch gerad vor zwei TCA´s...
Und die laufen noch nicht grummel.

MfG Torsten

von Phil (Gast)


Lesenswert?

Hallo Torsten und Waldemar,
Ich Programmier ohne Rampen, meine Steuerund sieht nur set-mode vor, 
kein accelerate, d.h. die Dinger fahren ziemlich aprupt an. ich hab grad 
leider kaum Zeit, werd euch aber bald näheres schicken!
Phil

von Gerhard Humer (Gast)


Lesenswert?

Hallo Waldemar

Warum nicht PC-NC od. DinCNC über Parallelport ?
Hab mir mal die Mühe gemacht und so ne Linearinterpolation
u. Kreisinterpolation in QB (Dos) und VB (WIN98) zu programmieren und 
über Parallelport auszugeben.
Das geht auch , aber ist ziemlich viel Rechnerei mit
Winkelfunktionen drinn. Rampen hab ich vorerst gar nicht verwendet.
Das ganze auf einem MC laufen zu lassen wird sehr sehr
zeitkritisch .

Den Weg den ich nun gehe:
Servomotoren anstatt Schrittmotoren !
(hab dadurch immer Positionsrückmeldung wegen Encoder,
keine Schrittverluste)
Servomotorprogramm läuft auf einem AT90S2313.
Steuerprogramm: DinCNC (Takt u. Richtung)
                bzw. Eigen-programm (VB) für 4-Achs-
Interpolation

Gruss Gerhard

von Michael (Gast)


Lesenswert?

Falls jemand doch einmal eine Steuerung mit Rampen programmieren möchte, 
ein Vorschlag für notwendige Routinen, für die ein AVR bestens geeignet 
ist. Die notwendigen Variablen sollten im Modulkopf als static 
deklariert sein:

1. Interruptroutine:
1.1 Ausgabe des neuen Bitmusters für den Stepper
1.2 Soll-Istposition vergleichen
1.3 Interrupt abschalten, wenn Sollposition erreicht: fertig
Motorstrom (zeitverzögert) reduzieren!!!
1.4 andernfalls testen, ob Start- oder Stopprampe notwendig ist und 
Nachladewert (z.B. T1-compare) für nächsten Timerinterrupt berechnen und 
ins Register schreiben.
1.5 neues Bitmuster (abhängig von der Drehrichtung) ermitteln und für 
nächsten Interruptaufruf zwischenspeichern.

2. Initialisierung
 init_stepper(start_frequenz, lauf_frequenz, rampenschritte);
Die Frequenzen müssen in Zeiten (Timerintervalle) umgerechnet werden; 
die Differenz der Intervalle wird durch die Rampenschritte dividiert und 
als Intervalländerung für die Interruptroutine gebraucht. Init von 
Timer, Port,  +++

3. Test, ob Stepper aktiv
  uchar stepper_aktiv(); 1= Timerinterrupt ist aktiv

4. Sollposition vorgeben
  schreibe_sollpostion(long sollwert); Timerinterrupt temporär 
abschalten!
Neue Position global (static) ablegen; Timerinterrupt aktivieren, wenn 
abgeschaltet. Vorsicht bei Änderung der Drehrichtung: zuerst mit Rampe 
stoppen - dann Motor neu starten !!!

5. Istposition abfragen
  long lese_istposition(); Timerinterrupt temporär abschalten!
Zum Vergleich, ob Ziel erreicht.

Der Aufwand ist nicht gering, wenn es aber funktioniert, hat man eine 
schöne Routine. Typische init-Werte sind (500,2500,100) für kleine 
Schrittmotore an einem L6219. In jedem Fall sollte Halbschrittbetrieb 
gewählt werden.

Es kann hier nicht jedes Detail benannt werden, totzdem viel Erfolg !

von Profi (Gast)


Lesenswert?

Noch ein später Nachtrag:
Es gibt ein neues Treiber-IC: L6208 von ST.
Ich glaube 24 Pins im DIP, SO und Powerxxx-Gehäuse.

Beinhaltet einen L297 und zwei L6203, wenn ich mich recht erinnere. 
Optimal! Wenig Verdrahtung, weil fast alles drin.

Ohne Kühlblech 2,5 A Dauerstrom und über 3 A kurzzeit.
8 - 50 V Vcc. Was will man da noch sagen?

Datenblatt bei www.st.com erhältlich, einfach im Suchen-Fenster L6208 
eingeben, schon bekommt man Application-Notes etc.

Grüße von Profi

von Reiner (Gast)


Lesenswert?

Wie wär's denn mit TRINAMIC. www.trinamic.de
TMC428 3-Achsen-Controller  Rampen, Positionieren, Referenzen suchen 
etc.
TMC236 1-Achsen Teiber

Soweit ich weiß läßt Trinamic seine Chips von Atmel produzieren. Die 
laufen auch prima mit den ATMegas.


Reiner

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.