Schrittmotoren

Funktion


Der Modul vereinfacht die Ansteuerung von Schrittmotoren. Er erzeugt alle Signale zur Ansteuerung des Motortreiber Bausteins L298 von ST Microelectronik und die Regelung des Phasenstroms. Die verwendete Schaltung ist auch für den Mikroschrittbetrieb geeignet. Getestet wurde hauptsächlich mit Motoren des Typs ECM243-S1.0A(external link) von EC Motion aber auch mit einer Reihe anderer Modelle. Die Spannung am Motortreiber wurde dabei mit 30V eingestellt und der Motor hat sich nur leicht erwärmt. Der Strom wird immer im zulässigen Bereich geregelt. Im Programm muss nach der Initialisierung nur die Anzahl der auszuführenden Schritte und der Start eingestellt werden. Die Beschleunigung und das Abbremsen werden vom Modul automatisch entsprechend der Initialisierung organisiert. Beim erreichen des TOP-Speed, beim Start des Bremsvorganges und der Stop-Position kann ein Interrupt ausgelöst werden.

Bei der Verwendung des Moduls wird mit den maximal möglichen Schrittfrequenz im Mikroschritt Betrieb gearbeitet, wodurch die sonst üblichen Geräusche von Schrittmotoren nicht entstehen. In dieser Betriebsart benötigen die verwendeten Motoren 1600 Schritte pro Umdrehung. Dabei sind 8 Mikroschritte ein Vollschritt.

Register bei 5 Beschleunigungsphasen (Die Anzahl der Phasen ist generierbar)


Die Rampe wird dabei mit RAMP_INT_CNT=5 Beschleunigungswerten und RAMP_INT_CNT-1=4 Drehzahlschwellen konfiguriert. Die Adresse von RAMP_CONF_END_ADR berechnet sich zu (RAMP_CONF_BASE_ADR + RAMP_INT_CNT * 2 - 2) = (1 + 5*2 -2) = 9.

OffsetRegisterFunktionZugriff
0STARTSPEED_ADRAnfangsgeschwindigkeitread/write
1RAMP_CONF_BASE_ADR = ACC_0Beschleunigungswert 1read/write
2TRESHOLD_0Drehzahlschwelle 1read/write
3ACC_1Beschleunigungswert 2read/write
4TRESHOLD_1Drehzahlschwelle 2read/write
5ACC_2Beschleunigungswert 3read/write
6TRESHOLD_2Drehzahlschwelle 3read/write
7ACC_3Beschleunigungswert 4read/write
8TRESHOLD_3Drehzahlschwelle 4read/write
9RAMP_CONF_END_ADR = ACC_4Beschleunigungswert 5read/write
10TOPSPEED_ADRmaximale Geschwindigkeitread/write
11STEP_MSB_ADRAuszuführende Schritte (high word)read/write
12STEP_LSB_ADRAuszuführende Schritte (low word)read/write
13MODE_ADRStatus und Kommandobitsread/write
14SPEED_ADRmomentane Geschwindigkeitread
15ACC_ADRmomentane Beschleunigungread


Aufbau des MODE Registers


Bit NummerFunktion
0Startet den Bewegungsvorgang
1aktiviert Notstopp
2bestimmt Drehsinn
3Ruhestromabsenkung 0
4Ruhestromabsenkung 1
5Motorstatus (1 Motor steht, 0 Motor in Bewegung)


Signale des Moduls


SignaleAnzahlRichtungBedeutung
stpr_drv 4 Ausgang Motorsignale zur Ansteuerung mit dem Drehfeld
stpr_en 2 Ausgang Freigabe der beiden Treiber des L298
isense_comp 2 Eingang Eingang zur Messung des Phasenstromes in den beiden Treibern des L298
vref_pwm 2 Ausgang Ausgang zur Regelung des Phasenstromes in den beiden Treibern des L298
opt_enc 1 Eingang Eingang für eine Lichtschranke an einer Schlitzscheibe des Motors


Funktionen für den Anwender aus der Datei "stepper.h"

Um alle Funktionen auch für mehrere Stepper in einem System nutzen zu können, beginnen alle Funktionen jetzt mit einem zusätzlichen Parameter. Dies ist ein Zeiger auf die Registerstrucktur des anzusprechenden Stepper Moduls. Wird im jConfig der Standart Name "microstepper_0" beibehalten, dann hat der Zeiger den Namen "MICROSTEPPER_0".

FunktionParameterBedeutung
void init_stepper(struct stepper *stepper0, unsigned int startfrequency, unsigned int topfrequency, unsigned int time)Startfrequenz, Topfrequenz, RampenzeitInitialisierung des Interface
void set_idle_pwr(struct stepper *stepper0, unsigned int pwr_down_sel)0 = NO_IDLE_PWRBetriebsart für den Ruhestrom einstellen
1 = QUARTER_IDLE_PWR
2 = HALF_IDLE_PWR
3 = FULL_IDLE_PWR
void init_motion(struct stepper *stepper0, unsigned int steps_msb, unsigned int steps_lsb, unsigned int direction)Anzahl der Schritte in 36 Bit und Drehrichtung einstellen.
void go(struct stepper *stepper0)Start der Bewegung.
void estop(struct stepper *stepper0)Sofort die Bewegung anhalten.
unsigned int is_moving(struct stepper *stepper0)aktueller Status der Motorsteuerung.




SpartanMC