Hallo Raspberry-Pi Forum,
für mein Projekt besitze ich einen Schrittmotor mit einer Auflösung von 400 Steps/Rev. (0,9 °/Step). Es handelt sich hierbei um einen NEMA 23, der mittels dem Driver HBS57 als closed-loop stepper ausgeführt ist. Hier der Link zu dem Motor. https://de.aliexpress.com/item…e5-441f-ad2e-53f4e10a3644
Mein Ziel ist es nun, dass mein Schrittmotor einen gewissen Absolutwinkel (Anzahl an Schritten) mit einer definierten Geschwindigkeit (Drehzahl) abfährt. Darüber habe ich mir schon Gedanken gemacht und habe eine Lösung ausgearbeitet. Ich bin mir aber unsicher, ob diese Lösung eine "schöne" und effektive Lösung ist. Ich möchte diese euch kurz aufzeigen und eure Meinung dazu hören.
Ich möchte in meinem Programm den Absolutwinkel [°] und die Drehzahl [U/min] vorgeben, diese dienen als bekannt.
Die Anzahl der Impulse, die mein Schrittmotor verfahren muss ergibt sich, indem der gewollte Absolutwinkel durch die Schrittauflösung des Motors geteilt wird.
Anzahl benötigter Impulse = Absolutwinkel / Schrittauflösung
[°] / [°/Steps]
Die Drehzahl des Motors wird über die Frequenz der 5V-Pulse am Treiber Eingang bestimmt. Drehzahl des Motors ist proportional zu der Frequenz der Impulse am Pul- Eingang des Treibers. Über die Soll-Drehzahl, die ich vorgeben möchte kann ich die Frequenz [Hz] der Impulse mit folgender Formel berechnen.
f = (Soll-Drehzahl * Schrittauflösung)/60
[U/min] / [Steps/Rev.]
Da nun die Anzahl der benötigten Impulse und die Frequenz mit dem die Impulse eingehen bekannt ist, kann ich nun eine Zeit [s] berechnen. Durch die Division der benötigten Impulse und der Frequenz der Impulse weiß ich, wie lange ich die Pulse am Eingang des Treibers des Motors anlegen muss, bis die benötigte Anzahl an Schritten und so den Absolutwinkel erreicht sind.
t = Anzahl benötigter Impulse / f
Ich würde das dann so realisieren. Ich würde nach ablaufen der oben berechneten Zeit eine boolsche Variable auf True setzen und dadurch den Ausgang der Impuls-Signale abschalten.
Eine weitere Überlegung von mir war, das Impulssignal zusätzlich an einem Eingang anzulegen und mittels einem Timer die steigenden Flanken zu zählen. Problem hierbei leider ist, dass die Eingänge max. eine Frequenz von 400 Hz erkennen können. Die Impuls-Signale die an den Treiber des Motors gesendet werden, haben bis zu 15 kHz.
Das waren meine Ideen zu dem Thema. Ich bin mir nicht sicher wie genau diese ist und wie viel Abweichungen im Betrieb entstehen könnten.
Könnt ihr mit eurer Erfahrung und Know How einschätzen, ob dieses Vorgehen möglich ist. Habt ihr vielleicht eine bessere Herangehensweise?
Vielen Dank für eure Antworten.
Gruß Aron