Jake2010
05.03.2010, 09:38
Hallo zusammen,
nachdem ich mich nach diesem Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=52076) für einen Schrittmotor für meine Regelung entschieden habe, bin ich jetzt dabei, dem Motor das Drehen beizubringen.
Ich möchte jetzt zunächst für die Ansteuerung des Motors Beschleunigungs- und Bremsrampen programmieren (GCC). RN Control gibt das Taktsignal an RN Stepp 297 weiter. Durch diese beiden Quellen habe ich mir erstmal ein Grundverständnis für die Rampenprogrammierung angelesen:
1. http://www.embedded.com/columns/technicalinsights/56800129?_requestid=56271
2. http://www.atmel.com/dyn/resources/prod_documents/doc8017.pdf
Die Application Note 446 von Atmel ist schon recht gut. In der gezeigten Anwendung wird jedoch nur beschrieben, wie Beschleunigungs- und Bremsprofile mit vorher festgelegten Schrittzahlen gefahren werden können. In meiner Anwendung ist die absolute Schrittzahl vorher aber nicht bekannt. Ich möchte also nur die Änderung der Geschwindigkeit in den Rampen angeben, die erreichte Geschwindigkeit soll danach einfach beibehalten werden.
Zur Zeit habe ich nur einfache Rampen programmiert, wobei der Timerwert mit einem festen Wert in- bzw. dekrementiert wird.
ISR (TIMER1_COMPA_vect)
{
if (OCR1A != Sollwert)
{
if (OCR1A > Sollwert)
{
TIM16_AddOCR1A(-10);
}
if (OCR1A < Sollwert)
{
TIM16_AddOCR1A(10);
}
}
}
Ich würde allerdings gerne lineare Beschleunigungsrampen benutzen. Der Motor soll gegenwärtig bis max. 150 Steps/s machen können (Halbschritte).
Mir ist leider noch nicht klar, wie ich die Taktsignale als Rampen berechnen kann, ohne die Schrittzahlen angeben zu müssen. Ich würde gerne so schnell wie möglich beschleunigen/bremsen auf einen variablen Sollwert.
Hat jemand vielleicht schon Erfahrungen bei dieser Problematik?
Schönen Gruß,
Jake
nachdem ich mich nach diesem Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=52076) für einen Schrittmotor für meine Regelung entschieden habe, bin ich jetzt dabei, dem Motor das Drehen beizubringen.
Ich möchte jetzt zunächst für die Ansteuerung des Motors Beschleunigungs- und Bremsrampen programmieren (GCC). RN Control gibt das Taktsignal an RN Stepp 297 weiter. Durch diese beiden Quellen habe ich mir erstmal ein Grundverständnis für die Rampenprogrammierung angelesen:
1. http://www.embedded.com/columns/technicalinsights/56800129?_requestid=56271
2. http://www.atmel.com/dyn/resources/prod_documents/doc8017.pdf
Die Application Note 446 von Atmel ist schon recht gut. In der gezeigten Anwendung wird jedoch nur beschrieben, wie Beschleunigungs- und Bremsprofile mit vorher festgelegten Schrittzahlen gefahren werden können. In meiner Anwendung ist die absolute Schrittzahl vorher aber nicht bekannt. Ich möchte also nur die Änderung der Geschwindigkeit in den Rampen angeben, die erreichte Geschwindigkeit soll danach einfach beibehalten werden.
Zur Zeit habe ich nur einfache Rampen programmiert, wobei der Timerwert mit einem festen Wert in- bzw. dekrementiert wird.
ISR (TIMER1_COMPA_vect)
{
if (OCR1A != Sollwert)
{
if (OCR1A > Sollwert)
{
TIM16_AddOCR1A(-10);
}
if (OCR1A < Sollwert)
{
TIM16_AddOCR1A(10);
}
}
}
Ich würde allerdings gerne lineare Beschleunigungsrampen benutzen. Der Motor soll gegenwärtig bis max. 150 Steps/s machen können (Halbschritte).
Mir ist leider noch nicht klar, wie ich die Taktsignale als Rampen berechnen kann, ohne die Schrittzahlen angeben zu müssen. Ich würde gerne so schnell wie möglich beschleunigen/bremsen auf einen variablen Sollwert.
Hat jemand vielleicht schon Erfahrungen bei dieser Problematik?
Schönen Gruß,
Jake