Talk to Trinamic Stepper Motors using TMCL over serial
Project description
Python TMCL client library
Clone of NativeDesign/python-tmcl
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 pytmcl
Install without pip
> git clone https://github.com/LukeSkywalker92/pyTMCL.git
> cd pyTMCL
> 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 pyTMCL ## 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 = pyTMCL.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 pyTMCL ## 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 = pyTMCL.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)
Example usage (callbacks)
from serial import Serial from time import sleep import pyTMCL # serial-address as set on the TMCM module. MODULE_ADDRESS = 0 # Open the serial port presented by your rs485 adapter serial_port = Serial("COM4") # Create a Bus instance using the open serial port bus = pyTMCL.connect(serial_port) # Get the motor motor = bus.get_motor(MODULE_ADDRESS) motor.axis.max_positioning_speed = 200 # From this point you can start issuing pyTMCL commands # to the motor as per the pyTMCL docs. This example will # rotate the motor left at a speed of 1234 for 2 seconds def angle_to_steps(angle): return int(angle * 256 / 1.8) def callback(arg1, arg2): print("Argument 1: " + str(arg1) + " Argument2: " + str(arg2)) motor.move_relative(angle_to_steps(360), callback=callback, args=("Finished Moving", "Turned 360 Degree"))
API Overview
class Motor (bus, address, axis)
move_absolute (position, callback=None, args=(), kwargs={})
Move the motor to the specified absolute position.
Call callback function with *args
and **kwargs
when position is reached. (callback is optional).
move_relative (offset, callback=None, args=(), kwargs={})
Move the motor by the specified offset relative to current position.
Call callback function with *args
and **kwargs
when position is reached. (callback is optional).
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size pyTMCL-1.0.10.tar.gz (7.2 kB) | File type Source | Python version None | Upload date | Hashes View |