Schrittmotor mit uC ansteuern

OP #5346498
Lesenswert?

Hallo Zusammen,

Ich habe einen A4988 Schrittmotortreiber, welchen ich gerne mit einem
uC ansteuern würde. Mich würde vor allem interessieren, ob meine Idee 
bezüglich der Ansteuerung des Treibers sinnvoll ist, oder zu sehr vom 
üblichen Vorgehen abweicht:

Den DIR Pin hänge ich an einen normalen GPIO, den STEP Pin verknüpfe ich 
mit einem PWM Channel eines Timers. Nun möchte ich Rampen fahren können, 
also berechne ich zuerst die Zeiten für die Rampe und vermindere dann 
schrittweise die Cycle Time des PWM Kanals, bis ich auf der gewünschten 
Geschwindigkeit bin, wobei ich immer 50% Duty Cycle verwende. Wie ich 
genau die einzelnen Parameter der Rampe berechne ist noch offen, es geht 
mir mehr um die Grundidee und die Machbarkeit damit.

Kann ich so sinnvoll einen Stepper ansteuern?

Grüsse Bert
Angehängte Dateien:
Gast #5348347
Lesenswert?

Bert S. schrieb:
> Kann ich so sinnvoll einen Stepper ansteuern?

Ja, sinnvollerweise macht man dies so, die nächste Schrittdauer
setzt man dann mit einem der Timer-Interrupts.
Einigermaßen schöne Rampen lassen sich allerdings nicht mit 8bit PWM 
machen,
es sei denn man änderst zusätzlich den Frequenzvorteiler, finde ich 
pers. aber nicht so schön.
Besser gleich 16bit Timer vorsehen wenn möglich.

Gruß Dominik
Gast #5348408
Lesenswert?

Bert S. schrieb:
> Nun möchte ich Rampen fahren können,
> also berechne ich zuerst die Zeiten für die Rampe und vermindere dann
> schrittweise die Cycle Time des PWM Kanals, bis ich auf der gewünschten
> Geschwindigkeit bin, wobei ich immer 50% Duty Cycle verwende.

Du brauchst keine 50% Duty, sondern nur soviel, wie der Treiber als 
Mindestpulslänge benötigt.

Also nimm dir einen Timer her, setze ein Compare-Register auf nen 
passenden Wert, so daß das Compare-Signal ausreichend lang ist und setze 
das Zähl-Ende des Timers entsprechend der jeweils gewünschen Zeit für 
einen Schritt.

Bei solchen Anwendungen sind die Controller der STM32 Riege etwas blöd 
wegen der in weiten Teilen nur 16 bittigen Peripherie, nimm lieber einen 
LPC dazu wenn du kannst, denn die sind besser bei 32 Bit Timern.

Und bei Rampen bedenke, daß du nicht nur die Anfahr-Rampe brauchst, 
sondern auch die gegenüberliegende Bremsrampe.

W.S.
Gast #5348440
Lesenswert?

W.S. schrieb:
> Bei solchen Anwendungen sind die Controller der STM32 Riege etwas blöd
> wegen der in weiten Teilen nur 16 bittigen Peripherie, nimm lieber einen
> LPC dazu wenn du kannst, denn die sind besser bei 32 Bit Timern.

Mit Elefanten nach Mücken werfen? Auch 32 Bit Timer können einmal 
überlaufen. Vielleicht doch besser 64 Bit Timer verwenden?
;-)

Einer der obigen Links erzeugt 50 kHz Schrittfrequenz mit einem ATtiny25 
@ 8 MHz.

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