Metadata-Version: 2.1
Name: TMCM-Lib
Version: 1.0.0
Summary: Trinamic Motion Control Module Library for Python
Home-page: https://github.com/florian-lapp/tmcm-lib-py
Author: Florian Lapp
Author-email: e5abed0c@gmail.com
License: MIT
Description: # TMCM-Lib – Trinamic Motion Control Module Library for Python
        
        This project aims to offer a clean high-level interface to the TMCM stepper motor controllers by
        Trinamic with TMCL firmware.
        
        It currently only supports the module TMCM-3110 but others should be fairly easy to integrate.
        
        ## Features
        
        - Object-oriented design
        - Documented public elements via type hints and docstrings
        - Signaling errors via exceptions
        - Blocking and non-blocking moving
        - Expressing currents, velocities, and accelerations in physical units
        - Reverting of motor direction per motor
        - Setting, getting, and moving to coordinates
        - Sending heartbeat messages automatically
        
        ## Installing
        
        ```
        pip install TMCM-Lib
        ```
        
        ## Importing
        
        ``` python
        import tmcm_lib
        ```
        
        ## Examples
        
        ### Configuring
        
        ``` python
        from tmcm_lib import Port, Module
        
        # Constructs the port to which the module is connected.
        port = Port('COM1')
        # Constructs the module connected to the port.
        module = Module.construct(port)
        # Enables the pull-up resistors of the limit switches of the module.
        module.switch_limit_pullup_enabled = True
        # Sets the activity of the limit switches of the module (True = high, False = low).
        module.switch_limit_activity = True
        
        # Gets the first motor of the module.
        motor = module.motors[0]
        
        # Sets the moving current of the motor in units of milliamperes.
        motor.current_moving = 1_000
        # Sets the standby current of the motor in units of milliamperes.
        motor.current_standby = 100 
        # Sets the microstep resolution of the motor.
        motor.microstep_resolution = 256
        # Sets the velocity for moving the motor in units of fullsteps per second.
        motor.velocity_moving = 800
        # Sets the acceleration for moving the motor in units of fullsteps per square second.
        motor.acceleration_moving = 400
        # Enables the left limit switch of the motor.
        motor.switch_limit_left.enabled = True
        # Enables the right limit switch of the motor.
        motor.switch_limit_right.enabled = True
        ```
        
        ### Identifying
        
        ``` python
        # Prints the model number of the module (e.g. "3110" for TMCM-3110).
        print(module.model_number)
        # Prints the firmware version of the module (e.g. "(1, 14)" for 1.14).
        print(module.firmware_version)
        ```
        
        ### Moving (Blocking)
        
        Blocking moving waits while the motor is moving.
        
        ``` python
        # Moves the motor relatively by the given distance in units of microsteps.
        motor.move_by(512_000)
        # Moves the motor absolutely to the given position in units of microsteps.
        motor.move_to(0)
        # Moves the motor in right direction until stopped (by a limit switch).
        motor.move_right()
        ```
        
        ### Moving (Non-blocking)
        
        Non-blocking moving returns immediately after starting the moving.
        
        ``` python
        # Starts moving the motor relatively by the given distance in units of microsteps.
        motor.move_by(512_000, False)
        # Waits while the motor is moving.
        motor.wait_while_moving()
        # Starts moving the motor absolutely to the given position in units of microsteps.
        motor.move_to(0, False)
        # Waits while the motor is moving.
        while motor.moving :
            ...
        # Starts moving the motor in right direction until stopped (by a limit switch or stop).
        motor.move_right(False)
        ...
        # Stops the motor.
        motor.stop()
        ```
        
        ### Motor union
        
        A motor union is a set of motors that move simultaneously.
        Motors can move synchronously (i.e. they stop at the same time) or asynchronously.
        
        ``` python
        from tmcl_lib import MotorUnion
        
        # Constructs a motor union of the first and second motor of the module.
        motor_union = MotorUnion(module, [0, 1])
        
        # Moves the motor union synchronously absolutely to the given position in units of microsteps
        # (i.e. first motor to first component; second motor to second component).
        motor_union.move_to((512_000, 256_000))
        ```
Keywords: Trinamic,TMCM,TMCL,Stepper-Motor-Control
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Typing :: Typed
Description-Content-Type: text/markdown
