Hi, letztlich sind das die PID Regelparameter, die sich aus der Abtastzeit von ca. 341µs und den Motordaten ergeben.
Aber das ist alles nicht so problematisch, wenn man nach der guten alten Faustformel vorgeht:
Erstmal den Motor anschalten und kp solange erhöhen, bis der Motor anfängt zu schwingen. Dann gehst du mit Ki aufs doppelte und mit kd aufs 5-10-fache. Dann wird der Motor erstmal recht ordentlich laufen.
Wenn die Regelung zu "aggressiv ist" geh mit kd halt zurück und ggf. auch mit kp..
Damit der Integrator nicht überschießt, kann man noch ein Integrationslimit definieren.
Ja, das Trapezprofil ist vorgegeben, der Baustein enthält einen Rampengenertator, d.h konstante Beschleunigung bis zur max. Drehzahl, dann konstante Geschwindigkeit. DIe Brensrampe wir dann zum passenen Zeitpunkt eingeleitet, sodass es eine Punktlandung gibt...
Wir ich bereits schrieb, kann man den Regler auch während der Fahrt mit anderen Geschwingkeiten versorgen. Hierzu kann man entweder das Positionsregister während der Fahrt auslesen oder man setzt einen Breakpoint (ähnlich Timer Intterrupt) der dann bei Erreichen einer Wegmarke einen Interrupt auslöst. Wenn man zuvor schon die nächstr Geschwindigkeit und ggf. auch Position übertragen hat, kann man dann in der ISR einfach das nächste Update Kommando geben und diese Werte weden on the fly übernommen..
Man kann auch die Beschleunigung ändern. Aber das ist nicht vorgesehen, geht aber. Hierzu muss man allerdings tricksen.
Jede Achse regelt erstmal für sich. D.h. solange die Regelreserve vorhanden ist, wird die PWM erhöht und die Position wird auf den Sollwert geregelt (den der Rampengenerator für die Zeit vorgibt), das kann der LM629 ziemlich genau und gut (kurze Abtastintervalle usw.).
Für den Fall, dass der Regler es nicht mehr packt, kann man vorher einen Schleppgehler definieren. Wenn dieser überschritten wird, gibts einen Interrupt. Man kann dann mit dem Controller entscheiden, was man macht, also alle Achsen hart stoppen, auslauen lassne oder so..
Der Sinn der Coprozessoren ist es ja, dass man den µController voll entlastet. Der muss nur noch die Parameter eingeben und dann per ISR oder Polling die Achscontroller überwachen. Da kann 1 ATMEL locker mehere Achsen betreuen. (Der LM629 erzeugt die PWM mit ca. 15kHz in der 6MHz Version und das Vorzeichen selbst, da hat der Controller nichts mit zu tun.)
Der LM629 benötigt allersings parallele Datenleitungen, also 8 bit für die Daten. Dann einen Pin, der sagt, ob eine Adresse oder Daten kommen (ALE) und eine Chip-Sellect-Leitung, die den jeweiligen Controller auswählt, und die Interruptleitung, die man am besten jedem Chip einzeln spendiert (dank der neuen AVR Controller kann man ja damit asen, zur Not kann man auch alle zusammen schalten und muss dann alle Chips abklappern, um zu erkennern wers war.)
Macht:
8 Datenleitung
1 ALE
1 CS pro Achse
1 Interrupt pro Achse
Sind bei 3 Achsen: 15 Pins
Also ne Menge.
Wenn du die Regelung selbst proggen willst, solltest du wahrscheinlich je Achse 1 AVR nehmen, denn der hat reichlich zu tun, zumindest, wenn er Sample-Times wie der LM629 erreichen will. Das wird mit dem AVR nicht für 3 Achsen gehn.
Auf der andere Seite, da ja die µC heut nix mehr kosten und alles an Board haben, spricht auch nichts dagegen, für jede Achse 1 zu nehmen.
Der LM629 stammt aus Zeiten, da 8051 (original) noch Maß der Dinge waren, die nicht so schnell rechnen konnten, da war so ein 16-Bit-Coprozessor schon praktisch.
Mit dem LM629 sparst du aber mehr als reichlich Entwicklungsstunden.
Ich hab den LM629 mal 1989 eingesetzt, mit einem 500 Strich Inkrementalgeber. Der hat 200W (Peak 800W) Servoantriebe sehr gut geregelt, unterwegs auf wenige Inkremente Abweichung, dann mit Punktlandung auf 2/100mm.
Eine echte 4Quadranten-Servoregelung ist was anderes als nur einfach losfahren. Hängt halt von der Anwendung ab.
Gruß Sigo
Lesezeichen