Hallo Ich bin dabei, eine Schrittmotorsteuerung zu implementieren. Diese soll mit einer konstanten Beschleunigung realisiert werden. Dazu wird in einem konstanten zeitlichen Abstand die Schrittfrequenz neu berechnet, solange bis die Sollfrequenz erreicht ist. Nun habe ich aber das Problem, dass ich bei der Bestimmung des Zeitpunktes, in dem die Verzögerung einsetzen soll, Probleme habe. Ich möchte gerne die gesamte, zu verfahrende Schrittzahl und die Geschwindigkeit vorgeben. Der Beschleunigungswert ist immer konstant. Ich habe mir das ganze in Excel eingegeben, um Zusammenhänge besser zu erkennen. Das Diagramm habe ich als Bild hier angehängt. Nun stehe ich aber immernoch auf dem Schlauch, wie man die Schrittanzahl berechnet, ab wann verzögert werden muss. Ich hoffe, dieses Problem ist hier jemandem schon begegnet. Im Internet habe ich bereits gesucht, aber so explizit auf diese Frage leider keine Antwort bekommen. Die Anwendung soll zwar auf einem FPGA implementiert werden, aber vom Prinzip sind die Berechnungen usw. auf FPGA und µC ja gleich. Es wäre echt super wenn mir hier jemand auf die Sprünge helfen könnte. MfG Olli
Ich weiß mangels Hintergrundwissen nicht genau, was dein Problem ist. Aber ich glaube es würde dir schon helfen, wenn du einfach die diskrete Ableitung der Position bildest (also die Geschwindigkeit). Das geht über (x_alt - x_neu) / delta-zeit. Und da dann schauen, wie das Vorzeichen ist.
Bei Atmel gibt es m.W. eine Application Note, die sich dieses Problems annimmt. Das hier > Dazu wird in einem konstanten zeitlichen Abstand die Schrittfrequenz > neu berechnet, solange bis die Sollfrequenz erreicht ist. wirst du allerdings über Board werfen müssen. Der komplette Ablauf der Bewegung muss vollständig berechnet (bzw. durchgerechnet) werden, noch ehe der Schrittmotor seinen ersten Schritt macht.
Hallo, also die Geschwindigkeit im jeweiligen Punkt berechne ich ja schon. Mit der von Dir beschriebenen Rechnung, mit der Vorzeichenbetrachtung bekomme ich ja heraus ob ich mich gerade in der positiven oder negativen Steigung befinde. Meine Frage könnte konkret eher heissen: Wie berechne ich die Anzahl der Schritte, die benötigt wird, um von der maximalen Schrittfrequenz auf 0 Schritte/s (Stillstand) zu kommen. Wenn man dann diesen Wert von der insgesamt zu verfahrenden Schrittzahl abzieht, hat man ja den Punkt, ab dem verzögert werden muss. Vielen Dank für die Mühe! MfG Olli
Oliver S. schrieb: > Meine Frage könnte konkret eher heissen: > Wie berechne ich die Anzahl der Schritte, die benötigt wird, um von der > maximalen Schrittfrequenz auf 0 Schritte/s (Stillstand) zu kommen. Nun das sind genausoviele, wie zur Beschleunigung gebraucht werden. Der interessantere Fall ist aber der, wenn der Verfahrweg zu kurz ist als das der Motor maximale Schrittfrequenz erreichen darf, weil er es sonst nicht mehr derbremsen kann.
Karl Heinz Buchegger schrieb: > Der komplette Ablauf der Bewegung muss vollständig berechnet (bzw. > durchgerechnet) werden, noch ehe der Schrittmotor seinen ersten Schritt > macht. Eigentlich nicht. Man muß die Schritte der Beschleunigungsrampe mitzählen und sehen, ob diese Anzahl schon die Anzahl der restlichen Schritte erreicht; dann muß wieder gebremst werden. Dabei ist es dann unerheblich, ob die Beschleunigungsrampe vollständig abgelaufen ist, oder die max. Schrittfrequenz nicht erreicht wurde und vorzeitig gebremst wird.
Hallo, Atmel bezieht sich in seiner application note auf diese Interseite: http://www.eetimes.com/design/embedded/4006438/Generate-stepper-motor-speed-profiles-in-real-time , die noch mehr ins Detail mit zusätzlichen Beschleunigungsrampen geht. Das Programm motor.c http://www.eetimes.com/design/embedded/source-code/4210291/Motor-c kann man nach Registrierung herunterladen.
Hi Software gibt es doch auch zur Atmem-AppNote: http://www.atmel.com/dyn/resources/prod_documents/AVR446.zip MfG Spess
Differentialgleichungen sind bekannt ?
spess53 schrieb: > Hi > > Software gibt es doch auch zur Atmem-AppNote: > > http://www.atmel.com/dyn/resources/prod_documents/AVR446.zip > > MfG Spess Es ging mir mehr darum, dass dort die Herleitung und auch weitergehende Aspekte, wie die Erzeugung von verschiedenen Beschleunigungsrampen, beschrieben sind. Aber hier im Forum Beitrag "rampenbrechnung für schrittmotor" gibt ja reichlich dazu. Ab Beitrag "Re: rampenbrechnung für schrittmotor"
Hallo, ich habe das Problem nun gelöst und möchte meine Lösung hier berichten, damit sich andere dort evtl dran orientieren können. Also der Tipp von Willi hat mich auf den richtigen Weg gebracht. Ich Beschleunige nun konstant über eine Tabelle, die die nötigen Werte beinhaltet. In der Beschleunigungsphase zähle ich die Schritte mit. Wenn nun die Hälfte der Gesamtschrittzahl in der Beschleunigungsphase erreicht wird, wird direkt in die Verzögerungsphase übergegangen. Wenn die maximale Geschwindigkeit erreicht ist, macht er eben so viele Schritte bis Gesamtschrittzahl - Schrittzahl_der_Beschleunigung erreicht wurde. Damit habe ich die erforderliche Schrittzahl nun herausbekommen, ab wann angefangen werden muss zu bremsen. Dieses geht natürlich nur, wenn die Beschleunigungsrampe genau der Verzögerungsrampe entspricht. Das ist bei mir ja aber der Fall. Vielen Dank für die vielen Tipps und Anregungen. MFG
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.