5.1. Motion parameters
This section explains the Tic settings and variables that directly control the motion of the stepper motor.
The Tic represents stepper motor positions in units of microsteps, which are also called pulses. The number of microsteps that correspond to one full step is determined by the “step mode” setting.
By default, an increasing position corresponds to taking steps forward through the motor driver’s current indexer table, so the amount of current flowing from B1 to B2 lags behind the amount of current flowing from A1 to A2. The “invert motor direction” setting flips this correspondence.
Positions are stored as 32-bit signed integers, so they have a range of −2,147,483,648 to +2,147,483,647 (−0x8000 0000 to +0x7FFF FFFF).
With high speeds or long system run times, it is possible for the Tic’s 32-bit “current position” variable to overflow. If the Tic moves at its fastest speed (50,000 kHz) in one direction for approximately 12 hours, that would correspond to more than 2,147,483,647 microsteps. The Tic considers position +2,147,483,647 to be adjacent to position −2,147,483,648, and if you command it to go from one position to another, it will use the direction that gets it to the target position in the least number of steps, even if that involves letting the current position variable wrap around. Position overflow should not cause any issues for the Tic, but it could be important to consider it if you are writing software to control the Tic and dealing with positions.
The Tic represents speeds in units of microsteps (or pulses) per 10,000 seconds. For example, a speed of 200,000 corresponds to 20 microsteps per second. A speed is a non-negative integer that expresses how fast a stepper motor could move, but does not express direction.
The allowed range of speeds is 0 to 500,000,000 (50,000 pulses per second, or 50 kHz), but speeds from 1 to 6 will behave the same as speed 0 (see below).
Low speed considerations
Speeds from 1 to 6 will behave the same as a speed of 0 (the Tic will never take a step when the speed is so low because its step planning algorithm cannot keep track of times that long). Therefore, the minimum speed that the Tic can actually achieve is 7 steps per 10,000 seconds, or one step every 23 minutes.
It is important to note that the Tic only allows integer (whole number) speeds. So if your stepper motor is moving at speed 10 and you want it to go 1% faster, you cannot simply change your speed to 10.1; your options would be 10 or 11. For speeds higher than 50 (1 pulse every 200 seconds), the inaccuracy caused by this is less than 1%.
High speed considerations
If you are trying to use high speeds, it is important to consider how fast your stepper motor is capable of moving. See Section 4.3 for tips about finding your stepper motor’s maximum speed.
The Tic’s step planning algorithm uses a 3 MHz timer to schedule when to take steps. When the Tic is moving the motor at a certain speed, it first converts the speed into units of timer ticks by dividing 30,000,000,000 (3×1010) by the speed, rounding down. For example, a speed of 10,000 corresponds to 3×1010/1×104 = 3×106 timer ticks, which corresponds to 1 second. The rounding from this division can cause the Tic to move slightly faster than commanded. The biggest effect is at speed 491,803,279, where steps are 60 timer ticks apart, resulting in a speed that is 1.66% faster than desired. The effect is less than 1% for any speed less than 300,000,000 (30 kHz), and less than 0.1% for any speed less than 30,000,000 (3 kHz).
Current position and current velocity
The Tic keeps track of “Current position” and “Current velocity” variables at all times. Both of these are 32-bit signed integers and they default to zero when the Tic is turned on.
The Tic uses velocity variables like “Current velocity” to hold both a speed and a direction. The absolute value of a velocity is a speed, and positive velocities correspond to increasing positions while negative velocities correspond to decreasing positions.
“Current position” can be set with a “Halt and set position” command, which has a side effect of setting the “Current velocity” to zero. The “Current velocity” can also be forced to zero by the “Halt and hold” command and by certain error conditions.
The Tic also keeps track of a flag called “Position uncertain”, which indicates whether the Tic has received external confirmation that the value of its “Current position” variable is correct (see Section 5.4).
Target position and target velocity
Whenever the Tic is moving the stepper motor, it is either in “Target position mode” or “Target velocity mode”.
In “Target position mode”, the Tic has a variable called “Target position” that specifies what position the Tic is moving to. In this mode, the Tic will plan steps for the stepper motor with the goal of making its current position equal to the target position and its current velocity equal to zero, while maintaining the speed/acceleration/deceleration limits described later in this section.
In “Target velocity mode”, the Tic has a variable called “Target velocity” that specifies the velocity the Tic should maintain. It will plan steps so that its current velocity reaches the target velocity, while respecting the limits described later in this section. The target velocity can be set to any 32-bit signed integer value, but if the absolute value of the “target velocity” is larger than the max speed, then the Tic will never reach the target velocity.
In both of these modes, the Tic is designed to handle a frequently changing target. For instance, it is OK if the target position changes while the Tic is traveling towards it, and the Tic will handle changes like this seamlessly and quickly.
When the Tic’s control mode is Serial / I²C / USB, you can use the “Set target position” and “Set target velocity” commands to set the target position and target velocity, respectively. These commands allow you to change between “Target position mode” and “Target velocity mode” on the fly. In the other control modes (besides STEP/DIR mode), you are limited to just one of those two modes (either target position or target velocity), and the target is set automatically based on an input to the Tic.
The Tic’s default motion settings.
The Tic’s “Max speed” setting sets an upper limit on how fast the Tic will try to drive the stepper motor. See Section 4.3 for tips about finding your stepper motor’s maximum speed. The setting can be temporarily overridden using the “Set max speed” command, as described in Section 8.
The “Max speed” uses the Tic’s standard speed units of pulses per 10,000 seconds, and these are the units you must use when entering it into the Tic software. For convenience, the Tic Control Center displays the maximum speed in units of pulses per second to the right its input box.
The Tic’s “Starting speed” setting is the maximum speed at which instant acceleration and deceleration are allowed. For example, if you set the starting speed to 1,000,000 (100 pulses per second), then the Tic will be able to instantly change from any velocity in the range of −1,000,000 to +1,000,000 to any other velocity in that range. Setting the starting speed might allow you to make your system faster since it will not waste time accelerating or decelerating through low speeds where it is not needed. This setting can be temporarily overridden using the “Set starting speed” command, as described in Section 8.
The “Starting speed” uses the Tic’s standard speed units of pulses per 10,000 seconds.
Max acceleration and max deceleration
The “Max acceleration” setting specifies how rapidly the speed is allowed to increase, while the “Max deceleration” setting specifies how rapidly the speed is allowed to decrease. See Section 4.3 for tips about choosing these settings.
These settings can be temporarily overridden using the “Set max acceleration” and “Set max deceleration” settings, as described in Section 8. However, note that the “Set max acceleration” command never changes the “Max deceleration” value, even if the “Use max acceleration limit for deceleration” checkbox is checked.
Both of these settings use units of pulses per second per 100 seconds. In other words, they specify how much the speed can rise or fall in one hundredth of a second (0.01 s or 10 ms). The range of allowed values is 100 to 2,147,483,647.