STM32F3 Schrittmotor Ansteuern Pulse zählen

OP #5384166
Lesenswert?

Hi,

Ich versuche auf einem STM32 einen Schrittmotortreiber zu schreiben, 
wobei ich Rampen fahren möchte. Ich muss also während der 
Beschleunigungsphase nach jedem Puls einen Interrupt erzeugen und 
entsprechend die Periode des Timers anpassen. Wenn nun der Motor auf der 
Zielgeschwindigkeit ist, dann sind die Interrupts ja nicht mehr nötig, 
bis zur Entschleunigungsphase. Nun werden im Mikroschrittbetrieb bei 
höheren Geschwindigkeiten extrem viele Interrupts ausgelöst und dies 
kann Probleme bei anderer Peripherie auslösen.

Meine Frage ist nun, wie man mit einem STM32F3 am besten Rampen für 
einen Schrittmotor generiert? Ist der Interrupt Ansatz doch die beste 
Möglichkeit oder wird dies in der Praxis anders gelöst, evtl mit DMA?
OP #5384312
Lesenswert?

Ich bin mir noch nicht sicher, wie genau man am besten den Timer eines 
STM32 für mehrere Schrittmotoren einstellen sollte? Ich verwende Timer 1 
mit 3 Channels, an dem je ein Schrittmotortreiber STEP Input hängt. Nun 
kann ich anscheinend nur die DutyCycle pro Channel anpassen, nicht aber 
die Periodendauer. Sehe ich das richtig so? Oder kann ich auch je 
Channel irgendwie die Periodendauer einstellen?
#5384357
Lesenswert?

Nein, ich habe mal die Stepper über PWM gesteuert. Sehe aber kaum 
Vorteile. Letzendlich muss man dann eh in jeden Interrupt vom PWM 
springen um einen Counter zu haben. Ansonsten weißt du ja nicht wie 
viele Schritte du gefahren bist.

Am einfachsten ist es die Pins im Interrupt zu steuern (BSRR) und 
mittels Bresenham zu arbeiten. Wobei Teacup auch im TEMPORAL-Mode 
(Einstellbar in der Config) ohne Bresenham funktioniert.

Hab den auch mal mit PWM getestet. Aber gerade bei sehr schnellem PWM 
konnte ich die Schrittsignale nicht mehr ordentlich zählen und den 
Interrupt rechtzeitig beenden.

Das sind zumindest meine Erfahrungen in den letzten 2 Jahren damit 
gewesen. Seit dem haben sich meine Programmier-"Künste" ein wenig weiter 
entwickelt. Vielleicht würde ich das heute auch alles anders machen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren