Python library to drive Pololu Tic stepper motor controllers
Project description
ticlib
is a pure-Python library to drive Pololu Tic stepper motor controllers
over a serial, I²C, or USB connection.
Example code
from src.ticlib import TicUSB
from time import sleep
tic = TicUSB()
tic.halt_and_set_position(0)
tic.energize()
tic.exit_safe_start()
positions = [500, 300, 800, 0]
for position in positions:
tic.set_target_position(position)
while tic.get_current_position() != tic.get_target_position():
sleep(0.1)
tic.deenergize()
tic.enter_safe_start()
Available controllers
Serial
The serial controller has a dependency on the pyserial library.
Example:
import serial
from src.ticlib import TicSerial
port_name = "/dev/ttyS0"
baud_rate = 9600
port = serial.Serial(port_name, baud_rate, timeout=0.1, write_timeout=0.1)
tic = TicSerial(port)
Instantiation parameters for TicSerial
:
port
(required): Serial port used to communicate with the Tic.device_number
(optional): Number of the device that you want to control. Use this if you have multiple devices connected to your serial line. Defaults toNone
.crc_for_commands
(optional): IfTrue
, the library will append a CRC byte to every command sent to the Tic. Set this toTrue
if your Tic's "Enable CRC for commands" setting is turned on. Defaults toFalse
.crc_for_responses
(optional): IfTrue
, the library will expect a CRC byte at the end of every response returned by the Tic. Set this toTrue
if your Tic's "Enable CRC for responses" setting is turned on. Defaults toFalse
.
For more details, see Pololu's official documentation on serial command encoding.
I²C
The I²C controller has a dependency on the smbus2 library.
Example:
from smbus2 import SMBus
from src.ticlib import TicI2C
bus = SMBus(3)
address = 14
tic = TicI2C(bus, address)
Instantiation parameters for TicI2C
:
bus
(required): Your Tic's I²C bus. For example,SMBus(3)
represents/dev/i2c-3
.address
(required): Address of the Tic, that is its device number.
Note: If you use a Raspberry Pi, make sure to follow the workaround described in the Pololu documentation.
For more details, see Pololu's official documentation on I²C command encoding.
USB
The USB controller has a dependency on the pyusb library.
Example:
from src.ticlib import TicUSB
tic = TicUSB()
Instantiation parameters for TicUSB
:
product
(optional): USB product ID for your Tic. IfNone
, the device will be automatically detected. Use this if multiple Tic devices are connected to your computer. The available options are:TIC_T825
(0x00b3
),TIC_T834
(0x00b5
),TIC_T500
(0x00bd
),TIC_N825
(0x00c3
),TIC_T249
(0x00c9
), andTIC_36v4
(0x00cb
). Defaults toNone
.serial_number
(optional): The serial number (in string format) of your Tic. IfNone
, the device will be automatically detected. Use this if multiple Tic devices are connected to your computer. Default toNone
.
For more details, see Pololu's official documentation on USB command encoding.
Commands:
Available commands:
tic.clear_driver_error()
tic.deenergize()
tic.energize()
tic.enter_safe_start()
tic.exit_safe_start()
tic.go_home(value)
tic.halt_and_hold()
tic.halt_and_set_position(value)
tic.reset()
tic.reset_command_timeout()
tic.set_agc_option(value)
tic.set_current_limit(value)
tic.set_decay_mode(value)
tic.set_max_acceleration(value)
tic.set_max_deceleration(value)
tic.set_max_speed(value)
tic.set_starting_speed(value)
tic.set_step_mode(value)
tic.set_target_position(value)
tic.set_target_velocity(value)
For more details, see the official command reference.
Variables
Available variables:
# General status -------------------------------------
tic.get_error_occured()
tic.get_error_status()
tic.get_misc_flags()
tic.get_operation_state()
# Step planning ---------------------------------------
tic.get_acting_target_position()
tic.get_current_position()
tic.get_current_velocity()
tic.get_max_acceleration()
tic.get_max_deceleration()
tic.get_max_speed()
tic.get_planning_mode()
tic.get_starting_speed()
tic.get_target_position()
tic.get_target_velocity()
tic.get_time_since_last_step()
# Other -----------------------------------------------
tic.get_analog_reading_rx()
tic.get_analog_reading_scl()
tic.get_analog_reading_sda()
tic.get_analog_reading_tx()
tic.get_current_limit()
tic.get_decay_mode()
tic.get_device_reset()
tic.get_digital_readings()
tic.get_encoder_position()
tic.get_input_after_averaging()
tic.get_input_after_hysteresis()
tic.get_input_after_scaling()
tic.get_input_state()
tic.get_pin_states()
tic.get_rc_pulse()
tic.get_step_mode()
tic.get_vin_voltage()
tic.get_uptime()
# T249-only -------------------------------------------
tic.get_agc_bottom_current_limit()
tic.get_agc_current_boost_steps()
tic.get_agc_frequency_limit()
tic.get_agc_mode()
tic.get_last_motor_driver_error()
# 36v4-only -------------------------------------------
tic.get_last_hp_driver_errors()
For more details, see the official variable reference.
Settings
Available settings:
tic.settings.get_control_mode()
# Miscellaneous -------------------------------------------------
tic.settings.get_auto_clear_driver_error()
tic.settings.get_disable_safe_start()
tic.settings.get_ignore_err_line_high()
tic.settings.get_never_sleep()
tic.settings.get_vin_calibration()
# Soft error response -------------------------------------------
tic.settings.get_current_limit_during_error()
tic.settings.get_soft_error_position()
tic.settings.get_soft_error_response()
# Serial --------------------------------------------------------
tic.settings.get_serial_7bit_responses()
tic.settings.get_serial_14bit_device_number()
tic.settings.get_serial_alt_device_number()
tic.settings.get_serial_baud_rate()
tic.settings.get_serial_command_timeout()
tic.settings.get_serial_crc_for_commands()
tic.settings.get_serial_crc_for_responses()
tic.settings.get_serial_device_number()
tic.settings.get_serial_enable_alt_device_number()
tic.settings.get_serial_response_delay()
# Encoder -------------------------------------------------------
tic.settings.get_encoder_postscaler()
tic.settings.get_encoder_prescaler()
tic.settings.get_encoder_unlimited()
# Input conditioning --------------------------------------------
tic.settings.get_input_averaging_enabled()
tic.settings.get_input_hysteresis()
# RC and analog scaling -----------------------------------------
tic.settings.get_input_invert()
tic.settings.get_input_max()
tic.settings.get_input_min()
tic.settings.get_input_neutral_max()
tic.settings.get_input_neutral_min()
tic.settings.get_input_scaling_degree()
tic.settings.get_output_max()
tic.settings.get_output_min()
# Pin Configuration ---------------------------------------------
# SCL
tic.settings.get_scl_active_high()
tic.settings.get_scl_config()
tic.settings.get_scl_enable_analog()
tic.settings.get_scl_enable_pull_up()
tic.settings.get_scl_kill_switch()
tic.settings.get_scl_limit_switch_forward()
tic.settings.get_scl_limit_switch_reverse()
tic.settings.get_scl_pin_function()
# SDA
tic.settings.get_sda_active_high()
tic.settings.get_sda_config()
tic.settings.get_sda_enable_analog()
tic.settings.get_sda_enable_pull_up()
tic.settings.get_sda_kill_switch()
tic.settings.get_sda_limit_switch_forward()
tic.settings.get_sda_limit_switch_reverse()
tic.settings.get_sda_pin_function()
# TX
tic.settings.get_tx_active_high()
tic.settings.get_tx_config()
tic.settings.get_tx_enable_analog()
tic.settings.get_tx_kill_switch()
tic.settings.get_tx_limit_switch_forward()
tic.settings.get_tx_limit_switch_reverse()
tic.settings.get_tx_pin_function()
# RX
tic.settings.get_rx_active_high()
tic.settings.get_rx_config()
tic.settings.get_rx_enable_analog()
tic.settings.get_rx_kill_switch()
tic.settings.get_rx_limit_switch_forward()
tic.settings.get_rx_limit_switch_reverse()
tic.settings.get_rx_pin_function()
# RC
tic.settings.get_rc_active_high()
tic.settings.get_rc_config()
tic.settings.get_rc_kill_switch()
tic.settings.get_rc_limit_switch_forward()
tic.settings.get_rc_limit_switch_reverse()
# Motor ---------------------------------------------------------
tic.settings.get_current_limit()
tic.settings.get_decay_mode()
tic.settings.get_invert_motor_direction()
tic.settings.get_max_acceleration()
tic.settings.get_max_deceleration()
tic.settings.get_max_speed()
tic.settings.get_starting_speed()
tic.settings.get_step_mode()
# Homing --------------------------------------------------------
tic.settings.get_auto_homing()
tic.settings.get_auto_homing_forward()
tic.settings.get_homing_speed_away()
tic.settings.get_homing_speed_towards()
# T249-only -----------------------------------------------------
tic.settings.get_agc_bottom_current_limit()
tic.settings.get_agc_current_boost_steps()
tic.settings.get_agc_mode()
tic.settings.get_agc_frequency_limit()
# 36v4-only -----------------------------------------------------
tic.settings.get_hp_current_trip_blanking_time()
tic.settings.get_hp_decay_mode()
tic.settings.get_hp_enable_adaptive_blanking_time()
tic.settings.get_hp_enable_unrestricted_current_limits()
tic.settings.get_hp_fixed_off_time()
tic.settings.get_hp_mixed_decay_transition_time()
Modifying settings is currently not supported.
For more details, see the official settings reference.
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
Built Distribution
File details
Details for the file ticlib-0.1.0.tar.gz
.
File metadata
- Download URL: ticlib-0.1.0.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b840c62486077567085350ee81706444ef2ef25a5150ffccb221c907a77e0415 |
|
MD5 | 607c3aca6475e891bc393bd8dbb20396 |
|
BLAKE2b-256 | 531ae4ce95464c534c9efeaa8909a3cf0c9cbe5354c4238686aceaff2e3846fa |
File details
Details for the file ticlib-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: ticlib-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f016c17427dc352df3ced41a132d89159488dc3b0df7b6628a75771cc74baf94 |
|
MD5 | 2fed860a8dbc7e98fc0d513c5c2b8f0e |
|
BLAKE2b-256 | 837d9582eeb9ca58c1c251249797206333e3701e49b94531a12d6e6532c5f506 |