Skip to main content

this is a Python libary to drive a stepper motor with a Trinamic TMC2209 stepper driver and a Raspberry Pi

Project description

TMC_2209_Raspberry_Pi

This is a libary to drive a stepper motor with a TMC2209 stepper driver and a Raspberry Pi

This code is still experimental, so use it on your own risk.

This libary is programmed in pure Python. The performance of Python is not good enough to drive the motor with high speed. So if you move the motor with high speed and this libary the motor will loose steps.

My TMC2209 is a driver from Watterott: https://shop.watterott.com/SilentStepStick-TMC2209-V2_1

It has a rSense of 110 mOhm and it uses one Pin (PDN_UART) for UART RX and TX. So the PD_UART-Pin needs to be connected to the Raspberrry Pis RX-Pin directly and to the TX-Pin with an 1kOhm resistor. You can read more about this in the datasheet from Trinamic.

Because the TMC2209 use one shared pin for transmit and receive in the UART communication line, the Raspberry Pi also receives what it sends, Well, the Pi receive 8 bits from itself and 4 bit from the driver. So the Pi receives a total of 12 bits and only the last 4 needs to be used.

the code to run the stepper motor is based on the code of the AccelStepper Libary from Mike McCauley:
https://github.com/adafruit/AccelStepper
http://www.airspayce.com/mikem/arduino/AccelStepper/

the code for the uart communication is based on this code from troxel:
https://github.com/troxel/TMC_UART

the Documentation of the TMC2209 can be found here:
https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2209_Datasheet_rev1.06.pdf

Installation

  • clone this repo to your Raspberry Pi using
git clone https://github.com/Chr157i4n/TMC2209_Raspberry_Pi
  • install the python module bitstring with
pip3 install bitstring
  • enable the serial port in
sudo raspi-config

Tests

You can run the test files from the main directory with

python3 -m tests.test_script_01_uart_connection
  1. run the script test_script_01_uart_connection.py this only communicates with the TMC driver over UART. It should set some settings in the driver and then outputs the settings. When it outputs TMC2209: after 10 tries not valid answer. exiting, you need to check the UART-connection.

  2. run the script test_script_02_pin_connection.py this scripts enables the raspberry GPIO output for the dir, en and step pin and then checks the tmc driver register, whether the driver sees them as HIGH or LOW. Because then enable pin is activated for a short time, the motor current ouput will be also activated in this script for a short time. This script should output: Pin DIR: OK Pin STEP: OK Pin EN: OK if not, check the connection of the pin

  3. run the script test_script_03_basic_movement.py this script should move the motor 6 times one revolution back and forth.

  4. run the script test_script_04_stallguard.py in this script the stallguard feature of the TMC2209 is beeing setup. a funtion will be called, if the driver detects a stall. the function stops the current movement. The motor will be moved 10 revolutions. If the movement is unhindered finished, the script outputs Movement finished successfully. If you block the motor with pliers or so, the the motor will stop and the script outputs StallGuard! and Movement was not completed

For me this baudrates worked fine: 19200, 38400, 57600, 115200, 230400, 460800, 576000

If the TMC2209 driver is connected to Vmotor, the internal voltage regulator will create the Vio for the chip. So you dont need to connect anything to the Vio pin of the driver.

The function setCurrent only works correctly if the Vref voltage ist 1.2V, otherwise change Vref to 1.2V or give the actual Vref as parameter to the setCurrent function.

wiring diagram

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

TMC_2209_Raspberry_Pi-0.1.1.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

TMC_2209_Raspberry_Pi-0.1.1-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file TMC_2209_Raspberry_Pi-0.1.1.tar.gz.

File metadata

  • Download URL: TMC_2209_Raspberry_Pi-0.1.1.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.21.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/17.1.1 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.3

File hashes

Hashes for TMC_2209_Raspberry_Pi-0.1.1.tar.gz
Algorithm Hash digest
SHA256 448790cc34879f782051b646214a2f01f587de8e51fe5a6ad68385d1a3cc8f35
MD5 df8b0928f836c0d6446b49c879243593
BLAKE2b-256 cc47caa42f65497c7dfbb9a7ef353eea6193ee3da52471b2e1a69470be6129be

See more details on using hashes here.

Provenance

File details

Details for the file TMC_2209_Raspberry_Pi-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: TMC_2209_Raspberry_Pi-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 26.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.21.0 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/17.1.1 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.3

File hashes

Hashes for TMC_2209_Raspberry_Pi-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fc9d16bf9efb9f5d315261a65ef54464a987a34788fd103f681c861a2eabef41
MD5 a0159a432f7dc43d8a12298673dbb704
BLAKE2b-256 03b3f3751f2f62b919dbf8268503d5f1edb38382aaf96359470059c4dde18f73

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page