← Alle Projekte SOFTWARE

PyTmcStepper

GitHub · PyPI

Python · Raspberry Pi

TMC2209

Eine in Python geschriebene Bibliothek zum Ansteuern eines Schrittmotors mit einem Trinamic-Schrittmotortreiber (z. B. TMC2209 oder TMC2240) und einem Einplatinencomputer wie einem Raspberry Pi.

Die Bibliothek hat 2 Hauptaufgaben:

  • das Bewegen des Motors über das STEP/DIR-Interface mit Geschwindigkeitsrampe
  • das Auslesen und Beschreiben der TMC-Register via UART/SPI

Da sich beim Raspberry Pi 5 die GPIO-Hardware geändert hat und die bis dato Standard-Bibliothek RPi.GPIO daher nicht mehr mit dem RPi5 kompatibel ist, muss eine alternative Bibliothek wie z. B. gpiozero für den RPi5 verwendet werden. Da RPi.GPIO jedoch aufgrund des in C geschriebenen Backends eine bessere Performance hat, soll beim RPi4 oder älter weiterhin RPi.GPIO verwendet werden. Daher wurde eine GPIOWrapper-Klasse implementiert, welche je nach Board eine andere GPIO-Bibliothek nutzt. Mittlerweile werden auch noch weitere Boards über deren spezifische GPIO-Bibliotheken unterstützt.

Zudem werden verschiedene Trinamic-Schrittmotortreiber wie der TMC2209 und der TMC2240 unterstützt. Die Architektur der Bibliothek ermöglicht es, recht einfach neue Schrittmotortreiber hinzuzufügen. Ende 2025, Anfang 2026 kam zusätzlich die Unterstützung für MicroPython und CircuitPython hinzu. Über ein pyftdi-kompatibles FTDI-Board wie das FT232H kann die Bibliothek auch auf einem Desktop-PC, z. B. mit Windows, verwendet werden.

Über GitHub Actions ist die CI/CD-Pipeline eingebunden. Der Code wird automatisch durch Pylint und das Framework unittest auf Einhaltung des Styleguides und korrekte Funktionalität getestet. Diese Unittests laufen primär auf CPython, und mit CPython wird auch die Code-Coverage ermittelt. Weitere Unittests laufen auf dem MicroPython-Unix-Port, um die Kompatibilität mit MicroPython zu gewährleisten. Zudem wird über Python Semantic Release automatisch anhand von SemVer und den Commit Message Conventions eine neue Version erstellt und auf GitHub und PyPI veröffentlicht.

Bibliotheken

  • pySerial
  • spidev
  • RPi.GPIO
  • gpiozero
  • python-periphery
  • Jetson.GPIO
  • OPi.GPIO
  • PyFtdi