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
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
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.
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...
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
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
Ahso, von einer Ansteuerung per Mikrocontroller bin ich sowieo
ausgegangen. Die Funktion des L297 komplett auf einem µC nachzubilden
sollte allerdings schwierig werden
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
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
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
@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
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
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
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 !
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
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