Für alle, die es interessiert: ich habe nun folgende Lösung gefunden. : Als Schrittmotortreiber habe ich einen Trinamic Tmc5130 verwendet, welcher ein ABN-Encoder-Interface besitzt. Als Encoder wurde der Trinamic TMCS-20 verwendet. Den Tmc5130 kann man über SPI parametrieren und ihm einfach die Sollposition mitteilen. Um Anfahr/Bremsrampen und das Generieren der Schrittmotorsignale kümmert er sich selbst.
Der Programmablauf ist damit extrem simpel geworden.
- Sollposition übermitteln
- Im Loop auslesen, ob die Positionierung abgeschlossen ist.
- Wenn ja, dann die Encoderposition auslesen und mit der Sollposition vergleichen
- Wenn eine Abweichung besteht, die größer als eine definierte Höchstabweichung ist, wird die Ist-Position korrigiert und damit die Differenz zur Sollposition gebildet.
Entsprechend wird dann nachgestellt.
Ist eine Abweichung vorhanden, welche kleiner als die Definierte Höchstabweichung ist, wird die Ist-Position zur Soll Position erklärt
Größtenteils muss man nur noch Register im Schrittmotortreiber auslesen und beschreiben. Dafür würde wohl sogar ein ATTiny reichen ![]()
![]()
Danke an alle, die mir hier geholfen haben und mir die richtige Richtung gezeigt haben.