Forum: Mikrocontroller und Digitale Elektronik Schrittmotor mit uC ansteuern


von Bert S. (kautschuck)


Angehängte Dateien:

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

von Dominik (Gast)


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

von m.n. (Gast)


Lesenswert?

Hier findest Du ein paar Schaltungen und Programme: 
http://mino-elektronik.de/Generator/takte_impulse.htm#bsp3a

von W.S. (Gast)


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.

von m.n. (Gast)


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.

von georg (Gast)


Lesenswert?

Bert S. schrieb:
> den STEP Pin verknüpfe ich
> mit einem PWM Channel eines Timers

Da erhebt sich die Frage, ob du damit bis zur Frequenz (nahe) Null 
herunterkommst, du willst ja Rampen fahren. Davon angesehen ist es egal 
woher die Taktfrequenz kommt.

Georg

von Michael B. (laberkopp)


Angehängte Dateien:

Lesenswert?

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

Vielleicht.
Wir wissen nicht, was du kannst.
STEP auch als normaler Pin und in Software timen würde reichen und macht 
die Programmierung einfacher.

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.