Forum: Mikrocontroller und Digitale Elektronik Schrittmotorsteuerung mit STM32F103xx


von MayerKurt (Gast)


Lesenswert?

Hallo,

ich möchte eine Schrittmotorsteuerung mit einem STM32F103 und der 
Library von ST realisieren.
https://www.st.com/en/embedded-software/stsw-stm32018.html
Der Controller ist scheinbar speziell dafür ausgelegt.


Laut der Beschreibung ist es möglich 19 Motoren gleichzeitig zu 
betreiben.
Ich komme nur auf 16, 4 Timer mit jeweils 4 Channels. Das wäre auch 
nicht das Problem, 16 würden reichen, wahrscheinlich auch weniger aber 
es soll Ersatz für einen bisherigen MC68332 Controlleer sein, der eine 
TPU mit 16 Timer hat.

Auf alle Fälle, ist mir nicht klar, wie die 4 Motoren, die an einem 
Timer hängen, zur gleichen Zeit mit unterschiedlicher Geschwindigkeit 
fahren sollen. Auch das fahren von Rampen, während ein anderer Motor 
läuft, ist doch nicht möglich, da eine Veränderung der Timerperiode auch 
die anderen Motoren beeinflusst.

Hat vielleicht jemand eine Idee?, ich kann mir nicht vorstellen, daß das 
von Seitens ST so gemeint ist.

von Walter T. (nicolas)


Lesenswert?

MayerKurt schrieb:
> Laut der Beschreibung ist es möglich 19 Motoren gleichzeitig zu
> betreiben.

Die Zahl "19" kommt im gesamten Dokument nicht vor. Woher stammt sie?

Die Application note sieht erst einmal so aus, als könne mit dem 
Beispiel-Quelltext ein Motor mit Rampen gesteuert werden auf Timer TIM2.

von MayerKurt (Gast)


Lesenswert?

Abschnitt 2.1.1, ist ausgeschreiben "nineteen"

Ja, das Beispiel ist nur für einen Motor.

Ich wollte es jetzt erweitern für mehrere Motoren und die Möglichkeit 
eine direkte Anzahl von Schritten zu fahren, im Beispiel geht das ja nur 
für eine gewisse Zeit.

von Walter T. (nicolas)


Lesenswert?

Tatsache. Hatte ich überlesen

Das klingt für mich erst einmal weit hergeholt. Klar kann ich mit einem 
Timer problemlos x Motoren per Bitbanging ansteuern, aber woher die 
ziemlich konkrete Zahl "19" bezogen auf vier Timer herkommen soll 
(medium density device), ist mir auch ein Rätsel.

: Bearbeitet durch User
von Holm T. (Gast)


Lesenswert?

Man muß nicht zwangsläufig einen Timer für jeden Motor verwenden, eine 
Zeitbasis für Alle sollte ggf. ausreichend sein, wobei mich mir 19 Stück 
auf einmal evtl. nicht vornehmen wollen würde.

Ein durchlaufender Timer mit konstanter Frequenz soltle es tun, man muß 
nur für jeden Motor die Ticks mitzählen die bis zum nächsten Stepimpuls 
vergehen müssen. Dazu würde ich ein Timersystem in Software 
implementieren, ich weiß das es Sowas für AVR gibt, Jörg hat das mal 
geschrieben.
Dazu wird jeder Software Timer mit einem Handle und einer Callback 
Funktion bei abgelaufener Zeit implementiert. Jeder Motor belegt dann 
einen solchen Software-Timer.

Gruß,

Holm

von Walter T. (nicolas)


Lesenswert?

Walter T. schrieb:
> aber woher die
> ziemlich konkrete Zahl "19" bezogen auf vier Timer herkommen soll

Ich glaube, ich habe die Lösung gefunden:

http://dilbert.com/strip/2008-05-08

von (Gast)


Lesenswert?

Die 19 beziehen sich vermutlich auf die vorhandenen I/Os, sie faseln was 
von 80 IO Pins die zur Verfügung stehen, je Motor je eine Leitung für 
Step, Dir, Full/Half Step und decay-mode, dazu kommen dann noch Enable 
und Reset für die Treiber.

Effiziente Schrittsynthese kann man in einem fixen Timer-Raster, z.b. 
200kHz, mit DDS machen.

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
Noch kein Account? Hier anmelden.