Skip to content

TMCL Serial interface to Trinamic Stepper Motors

License

Notifications You must be signed in to change notification settings

mbs-tahir/python-tmcl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python TMCL client library

Python wrapper around Trinamic's TMCL serial interface for controlling TMCM stepper modules via a serial-to-rs485 converter.

Installation

Install using pip

> pip install tmcl

Install without pip

> git clone https://github.com/NativeDesign/python-tmcl.git
> cd python-tmcl
> python setup.py install

Usage

Use an RS485-to-serial adapter to connect your PC to one or more TMCM modules. Before starting you should check the modules' serial-address and baud-rate is a known value. Out of the box (warning: anecdotal) modules usually have an address of 1 and a baud-rate of 9600 but this is not guarenteed. The easiest way to check these values is by using the TMCL IDE on a windows machine.

If using multiple TMCM modules attached to the same rs485 bus you must ensure that each module is set to a different serial-address so that they don't clash.

Example usage (single-axis modules)

from serial import Serial
from time import sleep
import TMCL

## serial-address as set on the TMCM module.
MODULE_ADDRESS = 1

## Open the serial port presented by your rs485 adapter
serial_port = Serial("/dev/tty.usbmodem1241")

## Create a Bus instance using the open serial port
bus = TMCL.connect(serial_port)

## Get the motor
motor = bus.get_motor(MODULE_ADDRESS)

## From this point you can start issuing TMCL commands 
## to the motor as per the TMCL docs. This example will
## rotate the motor left at a speed of 1234 for 2 seconds
motor.rotate_left(1234)
sleep(2)
motor.stop()

Example usage (multi-axis modules)

from serial import Serial
import TMCL

## Open the serial port presented by your rs485 adapter
serial_port = Serial("/dev/tty.usbmodem1241")

## Create a Bus instance using the open serial port
bus = TMCL.connect(serial_port)

## Get the motor on axis 0 of module with address 1
module = bus.get_module( 1 )

a0 = module.get_motor(0)
a1 = module.get_motor(1)
a2 = module.get_motor(2)

API Overview

class Motor (bus, address, axis)

move_absolute (position)

Move the motor to the specified absolute position.

move_relative (offset)

Move the motor by the specified offset relative to current position.

reference_search (rfs_type)

Start a reference search routine to locate limit switches.

rotate_left (velocity)

Rotate the motor left-wards at the specified velocity.

rotate_right (velocity)

Rotate the motor right-wards at the specified velocity.

run_command (cmd)

Execute a predefined user subroutine written to TMCM module firmware

send (cmd, type, motorbank, value)

Send a raw TMCL command to the motor.

stop ()

Stop the motor

About

TMCL Serial interface to Trinamic Stepper Motors

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%