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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.