Schrittmotorsteuerung mit TMC2100 SilentStepStick

  • Guten Morgen Zusammen,


    ich möchte gerne einen Nema17 Schrittmotor mit dem SilentStepStick (TMC2100) von Watterrott betreiben und habe ein kleines Verständnisproblem mit dem Anschluss am Pi. Verwendung soll das ganze später in einem Slider zur Kameraführung finden. Laut der Beschreibung von Watterrott werden die folgenden Anschlüsse für die Motorkontrolle mit GIPOs des Pis verbunden:

    1. STEP
    2. DIR
    3. EN

    zu 1) Bei STEP fange ich schon ein wenig an zu schwimmen. Soweit ich das verstehe, ist dieser für die Geschwindigkeit zuständig oder? Macht es dann Sinn diesen an ein PWM-Pin anzuschließen um variabel die Geschwindigkeit einstellen zu können?

    zu 2) Die Verwendung von DIR ist mir denke ich klar und kann mit einem beliebigen GIPO-Pin verbunden werden um die Laufrichtung zu bestimmen.

    zu 3) Bei diesem Anschluss bin ich mir total unsicher wofür er gut ist. Soweit ich verstehe kann darüber gesteuert werden ob bei Stillstand eine Haltemoment geben wird oder nicht.(?) Laut der Herstellerseite gibt es folgende drei Möglichkeiten:

    • GND=on
    • VIO=off
    • OPEN=Auto-Power-Down

    Verstehe ich es richtig, dass bei Verbindung mit GND am TMC2100 immer volle Power gegeben wird, bei Verbindung mit VIO am TMC2100 kein Haltemoment entsteht und beim offen lassen die automatische Steuerung durch den TMC2100 übernommen wird? Wenn ich das so richtig sehe würde ich EN mit VIO verbinden, da dich dank selbsthemmenden Schneckengetriebe keinen Haltemoment im Stillstand brauche und so Energie gespart wird.


    Und zu guter Letzt noch eine Frage ob ich zur Ansteuerung via Python besser die Bibliothek gipozero oder pigpio verwenden soll. Erstere hätte den Charm, dass ich diese bereits für diverse Taster in meinem Script verwende und letztere, dass ich dazu wenigstens mal ein Beispiel gefunden habe.


    Ich freue mich über jede Anregung :danke_ATDE:


    Viele Grüße und vielen Dank

    Bra!nPa!N

  • Hallo,

    das passt soweit fast ganz gut mit deiner erklärung.

    Also hier korrekter:

    STEP - Eine Flanke an diesem Pin löst einen Schritt des Schrittmotors aus. Hier ist die Frage ob ein PWM Ausgang da sinnvoll ist oder es nicht besser

    vom Programm gesteuert wird

    DIR - Die Drehrichtung des Schrittmotors

    EN - Deutsch ENABLE - Hiermit kann der komplette Schrittmotor Treiber Deaktiviert werden. Hier ist es evtl. sinnvoll dies durch das Programm zu Steuern.

    Wenn EN auf VIO gelegt wird ist der komplette Treiber deaktiviert. Dann bewegt sich der Motor nicht auch wenn ein STEP ankommt.

  • Vielen Dank für die schnelle Antwort Animefan!


    Zu STEP: Ist es richtig, dass du mit dem steuern über das Programm Methoden wie sleep etc. meinst?

    zu EN: Hier ist mir nicht wirklich klar, wie ich das über den Pi steuern soll, wenn der Pi nicht an EN angeschlossen wird. EDIT: Die Frage habe ich mir soeben selbst beantwortet: HIGH = inaktiv und LOW = aktiv.

    Edited 2 times, last by Bra!nPa!N ().

  • Hallo,

    Also das mit dem EN - Enable hast du dir so richtig beantwortet. Ich meinte das vom PI steuern auch nur in bezug auf Strom Sparen. Es ist nicht zwingend erforderlich.

    Den STEP kannst du auch mit einem PWM Signal ansteuern. Verlierst dann aber den Vorteil eines Schrittmotors.

    Ja man kann as über sleep ansteuern. Es gibt da aber bestimmt auch bessere methoden. Da bei einem Sleep das ganze Programm so lange wartet. Das ist unter umständen nicht so sinnvoll. Besonders wenn da noch eine GUI oder ein Webinterface laufen soll. Bin da aber auch nicht so firm. Auf einem Mikrocontroller würde ich es über einen Timer und eine Interrupt Routine lösen. Ob und wie es in Python zu lösen ist kann ich dir leider nicht sagen.

  • Hallo Bra!nPa!N


    Das Treiberboard aus deinem Link ist für 5V Logiklevel. Die GPIOs vom Pi haben aber nur 3,3V. Das sollte ohne Levelshifter nicht funktionieren. Falls du das Board schon hast probiere es ohne Levelshifter aus aber eventuell musst du noch mal los Einkaufen.


    :2cents:


    Gruß Oliver

  • Hallo Steinardo,


    ich weiß, da ich aber später drei Treibe in Betrieb haben werde habe ich mich dafür entschieden diese separat mit Energie zu befeuern. Aber Danke für den Hinwei :)


    Gruß

    Bra!nPa!N

  • Es geht um diesen Punkt, nicht um die Stromversorgung der Motoren:

    Quote
    • Logik-Versorgungsspannung: 5V


    [Edith]
    Oder hast du gleich aufgepasst und die Version genommen, die eine Logik-Versorgungsspannung von 3.3 bis 5V erlaubt? Wenn ja ist dein Link falsch und der wäre der richtige: SilentStepStick.
    [/Edith]

    Edited 2 times, last by doing ().

  • Dessen bin ich mir bewusst, die möchte ich aber auch extern versorgen. Wobei es natürlich trotzdem klüger gewesen wäre die mit zwecks Flexibilität die 3,3V-5V-Variante zu nehmen. Sobald ich alles am laufen habe werde ich einen Schaltplan inkl. Code posten. Ich wäre nur noch dankbar für Tipps hinsichtlich pigpio oder gpiozero. Was ist das besser geeignet? (gpiozero nutze ich bereits für Taster innerhalb des Scriptes)

  • Ich fürchte, du hast das Problem noch nicht erkannt. Der Pi stellt an den GPIO nur 3.3V zur Verfügung. Wenn dein Treiber hingegen 5V benötigt, dann brauchst du einen LevelShifter wie Steinardo bereits richtig schrieb,

  • Doch habe ich. Ich möchte aber nicht nur den Motor sondern auch den Chip selbst extern versorgen. Oder geht das etwa nicht?:conf:


    Edit: Jetzt macht es grade klick. Meinst du, dass die Pins STEP, DIR und EN 5V benötigen? ;(

  • Ja das Meinen wir. Falls du die Hardware schon hast probiere es einfach aus. Im worst case musst du dir halt einen Levelshifter besorgen.

    Bei mir z.B laufen APA102 LED (adressierbare LEDs mit 5V Logik-level) ohne Probleme auch ohne Levelshifter. Ich bin aber nicht repräsentativ. Das heißt es kann funktionieren muss aber nicht.

  • Umtausch in Auftrag geben...Das Porto ist dann wohl Lehrgeld :wallbash: Vielen Dank für die Hilfe!


    Bezüglich der Bibliothek werde ich einen neuen Thread aufmachen.