POWER DRIVER FOR STEPPER MOTORS
INTEGRATED CIRCUITS
TMC2300 Datasheet
Low Voltage Driver for Two-Phase Stepper Motors up to 1.2A RMS - StealthChop™ for Quiet
Movement - UART Interface Option. With StallGuard Sensorless Homing and CoolStep Energy Saving.
APPLICATIONS
4
FEATURES
AND
BENEFITS
Voltage Range 2V (1.8V) … 11V DC
Battery Operation min. 2 AA / NiMh cells, or 1-2 Li-Ion cells
2-phase Stepper Motors up to 1.2A RMS, 2A peak
Standby 100µF
electrolytic / depending
on supply resistance
and motor current
OA1
Stand Still
Current
Reduction
Step Pulse
Generator
STEPPER
+VM
VS
Step&Dir input
DIR
AD0
UART Address setting
1n-100n
10V
TMC2300
MicroPlyer
Step and Direction
motion control
VCP
100n
Optional external
capacitor
1.8VOUT
Place near IC with
short path to die pad
StealthChop2
current
controller
S
N
stepper
motor
RSA
BRA
Connect directly
to GND plane
BRB
Use low inductivity SMD
type for R SA and RSB
OB1
CoolStep
Full Bridge B
OB2
StallGuard4
STANDBY
BRB
500k
RSB
CLK oscillator
GND
+VIO
DIE PAD
EN
Connect directly
to GND plane
opt. driver enable
Figure 1.1 TMC2300 basic application block diagram for stepper motors
MODES OF OPERATION:
OPTION 1: Standalone stepper STEP/DIR Driver (Legacy Mode)
A CPU (µC) generates step & direction signals. The TMC2300 operates the motor as commanded by the
configuration pins and STEP/DIR signals. Motor run current is fixed by sense resistor setting. The pin
PDN_UART selects automatic standstill current reduction. Feedback from the driver to the CPU is
granted by the DIAG output signal. Enable or disable the motor using the EN pin and VIO/NSTANDBY
pin.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
5
STANDALONE STEP/DIR STEPPER DRIVER
OA1
S/D
ERROR
TMC2300
S
OA2
N
OB1
OB2
Figure 1.2 Stand-alone driver
OPTION 2: STEP/DIR Driver with Full Diagnostics and Control
Similar to Option 1, but pin PDN_UART is connected to the CPU UART interface.
UART
Additional options (label UART):
+
+
+
+
+
+
+
CoolStep energy saving
StallGuard sensorless homing
Detailed diagnostics and thermal management
Passive braking and freewheeling for flexible, lowest power stop modes
More options for microstep resolution setting (fullstep to 256 microstep)
Software controlled motor current setting and more chopper options
Option for motion using internal pulse generator (no STEP/DIR signals required)
UART INTERFACE FOR FULL DIAGNOSTICS AND CONTROL
OA1
S/D
High-Level
Interface
CPU
UART
TMC2300
OA2
S
N
OB1
OB2
Figure 1.3 STEP/DIR Driver with UART
This mode allows replacing all control lines like ENN, DIAG, MS1, MS2 by a single interface line. This
way, only three signals are required for full control: STEP, DIR and PDN_UART. Even motion without
external STEP pulses is provided by an internal programmable step pulse generator: Just set the
desired motor velocity. However, no ramping is provided by the TMC2300. Access to multiple driver
ICs is possible using 4 different address settings or via an analog multiplexer IC.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
6
1.1 Key Concepts
The TMC2300 implements advanced features which are exclusive to TRINAMIC products. These features
contribute toward greater precision, greater energy efficiency, higher reliability, smoother motion, and
cooler operation in many stepper motor applications.
StealthChop2™ No-noise, high-precision chopper algorithm for inaudible motion and inaudible
standstill of the motor. Allows faster motor acceleration and deceleration than
StealthChop™ and extends StealthChop to low stand still motor currents.
StallGuard™
Sensorless motor load measurement. It allows sensorless homing of a drive by
sensing mechanical obstacles. Further, mechanics can be validated by monitoring
motor load.
MicroPlyer™
Microstep interpolator for obtaining full 256 microstep smoothness with lower
resolution step inputs starting from fullstep
CoolStep™
Uses StallGuard measurement in order to adapt the motor current for best efficiency
and lowest heat-up of motor and driver
In addition to these performance enhancements, TRINAMIC motor drivers offer safeguards to detect
and protect against shorted outputs, output open-circuit, overtemperature, and undervoltage
conditions for enhancing safety and recovery from equipment malfunctions.
1.2 Control Interfaces
The TMC2300 supports both, discrete control lines for basic mode selection and a UART based single
wire interface with CRC checking.
1.2.1
UART Interface
UART
The single wire interface allows unidirectional operation (for parameter setting only), or bi-directional
operation for full control and diagnostics. It can be driven by any standard microcontroller UART or
even by bit banging in software. Baud rates from 9600 Baud to 500k Baud may be used. No baud rate
configuration is required, as the TMC2300 automatically adapts to the masters’ baud rate. The frame
format is identical to the intelligent TRINAMIC controller & driver ICs TMC51XX and TMC22XX. A CRC
checksum allows data transmission over longer distance. For fixed initialization sequences, store the
data including CRC into the µC, thus consuming only a few 100 bytes of code for a full initialization.
CRC may be ignored during read access, if not desired. This makes CRC use an optional feature! The IC
has a fixed address selected by 2 pins. Multiple drivers can be programmed in parallel by tying
together all interface pins, in case no read access is required. An optional addressing can be provided
by analog multiplexers, like 74HC4066.
From a software point of view the TMC2300 is a peripheral with a number of control and status
registers. Most of them can either be written only or are read only. Some of the registers allow both,
read and write access. In case read-modify-write access is desired for a write only register, a shadow
register can be realized in master software.
1.3 Moving and Controlling the Motor
1.3.1
STEP/DIR Interface
The motor is controlled by a step and direction input. Active edges on the STEP input can be rising
edges or both rising and falling edges as controlled by a special mode bit (DEDGE). Using both edges
cuts the toggle rate of the STEP signal in half, which is useful for communication over slow interfaces
such as optically isolated interfaces. The state sampled from the DIR input upon an active STEP edge
determines whether to step forward or back. Each step can be a fullstep or a microstep, in which
there are 2, 4, 8, 16, 32, 64, 128, or 256 microsteps per fullstep. A step impulse with a low state on
DIR increases the microstep counter and a high state decreases the counter by an amount controlled
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
7
by the microstep resolution. An internal table translates the counter value into the sine and cosine
values which control the motor current for microstepping.
1.3.2 Internal Step Pulse Generator
UART
Some applications do not require a precisely co-ordinated motion – the motor just is required to
move until a certain event occurs, or a certain distance is passed. The TMC2300 comes with an
internal pulse generator for these applications: Just provide the velocity via UART interface to move
the motor. The velocity sign automatically controls the direction of the motion. This way, the motor
will move without processor pulse generation. The processor just needs to terminate motion, when
the target is reached, e.g. by polling the microstep counter. However, the pulse generator does not
integrate a ramping function. Motion at higher velocities will require ramping up and ramping down
the velocity value via software.
STEP/DIR mode and internal pulse generator mode can be mixed in an application!
1.4 StealthChop2 Driver
StealthChop is a voltage chopper-based principle. It is optimum especially for low voltage operation,
because microstepping sine waves are generated even at 100% duty cycle. It especially guarantees
that the motor is absolutely quiet in standstill and in slow motion, except for noise generated by
bearings. Unlike other voltage mode choppers, StealthChop2 does not require any configuration. It
automatically learns the best settings during the first motion after power up and further optimizes the
settings in subsequent motions. An initial homing sequence is sufficient for learning. StealthChop2
allows high motor dynamics, by reacting at once to a change of motor velocity.
Benefits of using StealthChop2:
- Significantly improved microstepping with low cost motors
- Motor runs smooth and quiet
- Absolutely no standby noise
- Reduced mechanical resonance yields improved torque
1.5 StallGuard4 – Load Sensing
UART
StallGuard4 provides an accurate measurement of the load on the motor. It can be used for stall
detection as well as other uses at loads below those which stall the motor, such as CoolStep loadadaptive current reduction. This gives more information on the drive, allowing functions like
sensorless homing and diagnostics of the drive mechanics.
1.6 CoolStep – Load Adaptive Current
UART
CoolStep drives the motor at the optimum current. It uses the StallGuard4 load measurement
information to adjust the motor current to the minimum amount required in the actual load situation.
This saves energy and keeps the components cool.
Benefits are:
- Energy efficiency
- Motor generates less heat
- Less or no cooling
- Use of smaller motor
- Less motor noise
power consumption decreased up to 90% (w. no load on motor)
improved mechanical precision
improved reliability
less torque reserve required → cheaper motor does the job
Due to less energy exciting motor resonances
Figure 1.4 shows the efficiency gain of a 42mm stepper motor when using CoolStep compared to
standard operation with 50% of torque reserve. coolStep is enabled above 60RPM in the example.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
8
0,9
Efficiency with coolStep
0,8
Efficiency with 50% torque reserve
0,7
0,6
0,5
Efficiency
0,4
0,3
0,2
0,1
0
0
50
100
150
200
250
300
350
Velocity [RPM]
Figure 1.4 Energy efficiency with coolStep (example)
1.7 Automatic Standstill Power Down
An automatic current reduction drastically reduces application power dissipation and cooling
requirements. Per default, the stand still current reduction is enabled by pulling PDN_UART input to
GND. It reduces standstill power dissipation to less than 33% by going to slightly more than half of
the run current.
Modify stand still current, delay time and decay via UART. Automatic freewheeling and passive motor
braking are provided as an option for stand still. Passive braking reduces motor standstill power
consumption to zero, while still providing effective dampening and braking!
STEP
CURRENT
IRUN
IHOLD
RMS motor current trace with pin PDN=0
TPOWERDOWN IHOLDDELAY
power down power down
ramp time
delay time
t
Figure 1.5 Automatic Motor Current Power Down
1.8 Index Pulse
UART
The index output gives one pulse per electrical rotation, i.e. one pulse per each four fullsteps. It
shows the internal sequencer microstep 0 position (MSTEP near 0). This is the power on position. In
combination with a mechanical home switch, a more precise homing is enabled.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
2
9
Pin Assignments
The TMC2300 comes in a tiny package in order to fit miniaturized devices. For the ease of use, pinning
is shown separately for both function-modes.
11
12
13
17
16
TMC2300
(Standalone
Stepper)
© B. Dwersteg,
TRINAMIC
PAD
6
7
8
9
14
14
MS2_AD1
EN
STEPPER
MODE
PDN_UART
10
5
9
4
5
8
3
4
7
2
3
6
OA2
VCP
DIR
STEP
MS1
18
1
2
TMC2300
(UART Stepper)
© B. Dwersteg,
TRINAMIC
PAD
OB2
GND
1.8VOUT
DIAG
VIO/NSTDBY
19
15
20
13
16
12
17
OB2
GND
1.8VOUT
DIAG
VIO/NSTDBY
10
MS2
EN
STEPPER
MODE
PDN
18
1
OA2
VCP
DIR
STEP
MS1_AD0
19
15
20
11
BRA
OA1
VS
OB1
BRB
BRA
OA1
VS
OB1
BRB
2.1 Package Outline TMC2300
Figure 2.1 TMC2300 Pinning Top View Stepper Driver – QFN20, 3x3mm², 0.4mm pitch
2.2 Signal Descriptions / Stepper modes
Pin
OA2
Number
1
VCP
2
DIR
3
DI
STEP
MS1_AD0
4
5
DI
DI
MS2_AD1
6
DI
EN
7
DI
STEPPER
8
DI
MODE
9
DI
PDN_UART
10
DIO
VIO/NSTDBY
11
DIAG
12
www.trinamic.com
Type
DO
Function
Motor coil A output 2
Charge pump voltage. Optionally tie to VS using 1nF to 100nF
capacitor. May be left unconnected.
DIR input
(Analog test output in factory test mode)
STEP input
Microstep resolution configuration
MS2, MS1: 00: 1/8, 01: 1/32, 10: 1/64, 11: 1/16
For UART based configuration selection of UART Address 0…3
(AD0=LSB, AD1=MSB)
Enable input. The power stage becomes switched off (all motor
outputs floating) when this pin becomes driven to a low level.
Also used to clear error flags.
Mode selection input.
STEPPER, MODE:
00: do not use
01: do not use
10: Stepper
11: Standalone Stepper
(CLK, TST input in factory test mode)
UART Input/Output.
In standalone mode: Inverted power-down control input (low =
automatic standstill current reduction).
1.8V to 5V IO supply voltage for all digital pins. IC goes to standby
mode and resets, when this pin is pulled to GND.
Diagnostic output. High level upon driver error or stall. Reset by
EN=low.
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
Pin
Number
1.8VOUT
13
GND
OB2
14
15
BRB
16
OB1
17
VS
18
OA1
19
BRA
20
Exposed
die pad
-
www.trinamic.com
Type
10
Function
Output of internal 1.8V regulator. Attach 100nF ceramic capacitor to
GND near to pin for best performance. Provide the shortest
possible loop to the GND pad.
GND. Connect to GND plane near pin.
Motor coil B output 2
Sense resistor connection for coil B. Place sense resistor to GND
near pin.
Motor coil B output 1
Motor supply voltage. Provide filtering capacity >10µF near pin with
shortest possible loop to GND pad.
Motor coil A output 1
Sense resistor connection for coil A. Place sense resistor to GND
near pin.
Connect the exposed die pad to a GND plane. Provide as many as
possible vias for heat transfer to GND plane.
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
3
11
Sample Circuits
The sample circuits show the connection of external components in different operation and supply
modes. The connection of the bus interface and further digital signals is left out for clarity. The
TMC2300 is configured for different application modes by two pins, as well as by settings available via
the UART interface.
STEPPER/MODE: CONFIGURATION OF OPERATION MODE
STEPPER
VCC_IO
VCC_IO
MODE
GND
VCC_IO
Operation Mode
UART controlled stepper driver, MS1 and MS2 select the UART address.
Standalone Stepper. Set power down mode using PDN, and microstep
resolution using MS1 and MS2.
3.1 Standard Application Circuit
STEP
AD1
Configuration
Interface
STEPPER
MODE
UART interface
Driver error /
Index pulse /
Stall
1.8V to 5V
I/O voltage
/ standby
B. Dwersteg, ©
TRINAMIC 2016
UART
UART interface
+ Register Block
DIAG
Programmable
Diagnostic
Output
VIO/
NSTDBY
100n
Standby
detector
+VM
100n
Internal charge
pump
STANDBY
Full Bridge A
OA2
BRA
256 Microstep
Sequencer
10µ
Or low ESR >100µF
electrolytic / depending
on supply resistance
and motor current
OA1
Stand Still
Current
Reduction
Step Pulse
Generator
AD0
UART Address setting
1.8V Voltage
regulator
Step&Dir input
DIR
1n-100n
10V
VS
TMC2300
MicroPlyer
Step and Direction
motion control
VCP
100n
Optional external
capacitor
1.8VOUT
Place near IC with
short path to die pad
StealthChop2
current
controller
S
N
stepper
motor
RSA
BRA
Connect directly
to GND plane
BRB
Use low inductivity SMD
type for R SA and RSB
OB1
CoolStep
Full Bridge B
OB2
StallGuard4
STANDBY
BRB
500k
RSB
CLK oscillator
GND
+VIO
DIE PAD
EN
Connect directly
to GND plane
opt. driver enable
Figure 3.1 Standard Application Circuit for 2V to 11V Supply
The standard application circuit uses a minimum set of additional components to operate a stepper
motor. Two sense resistors set the motor coil current. See chapter 8 to choose the right sense
resistors. Take care to keep power supply ripple due to chopper operation at a few 100mV, max.,
especially when low voltage operation is desired. Use a ceramic, or low ESR capacitors for filtering
the power supply. The capacitors need to cope with the current ripple caused by chopper operation. A
minimum capacity of 100µF electrolytic, or 10µF ceramic capacitor near the driver is recommended to
keep ripple low. Actual demand will depend on the internal power supply resistance and the desired
motor current. VCC_IO can be supplied from a separate supply, e.g. a 3.3V regulator, or be driven by a
microcontroller port pin. AD0 and AD1 set the UART address. A charge pump capacitor can be added
for slightly reduced power dissipation when operating near the lower voltage limit of roughly 2V.
Basic layout and component hints
Place sense resistors and all filter capacitors as close as possible to the related IC pins. Use a solid
common GND for all GND connections, also for sense resistor GND. Connect 1.8VOUT filtering capacitor
directly to 1.8VOUT and the GND pin. See layout hints for more details. Low ESR electrolytic capacitors
are recommended for VS filtering unless supply resistance is very low.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
12
3.2 Standalone Stepper
STEP
Step and Direction
motion control
VCP
100n
1.8VOUT
Place near IC with
short path to die pad
1.8V Voltage
regulator
Step&Dir input
100n
Internal charge
pump
STANDBY
10µ
Full Bridge A
OA2
S
MS1
MS2
MODE
Disable standstill
current reduction
B. Dwersteg, ©
TRINAMIC 2016
PDN
StealthChop2
current
controller
Standby
detector
N
stepper
motor
RSA
BRA
Connect directly
to GND plane
BRB
Use low inductivity SMD
type for R SA and RSB
OB1
Driver Error
VIO/
NSTDBY
100n
256 Microstep
Sequencer
Power down
DIAG
Driver error
BRA
Configuration
Interface
STEPPER
MicroPlyer
Microstep Resolution
(GND or VIO)
Or low ESR >100µF
electrolytic / depending
on supply resistance
and motor current
OA1
Stand Still
Current
Reduction
1.8V to 5V
I/O voltage
/ standby
+VM
VS
TMC2300
DIR
No capacitor required
Full Bridge B
OB2
STANDBY
BRB
500k
RSB
CLK oscillator
GND
+VIO
DIE PAD
EN
Connect directly
to GND plane
opt. driver enable
Figure 3.2 Standalone Stepper Operation
The standalone stepper application uses just three interface lines, to operate the stepper: STEP, DIR
and DIAG for feedback. Microstep resolution and standstill power down become pre-configured by
tying MS1, MS2 and PDN to VIO or GND. The motor current is determined by the choice of sense
resistors.
3.2.1 Configuration Pins
The TMC2300 provides three configuration pins. These pins allow quick configuration for standalone
operation.
PDN_UART: CONFIGURATION OF STANDSTILL POWER DOWN (STANDALONE STEPPER MODE)
PDN_UART
GND
VIO
UART interface
Current Setting
Enable automatic power down in standstill periods
Disable automatic power down
When using the UART interface, the power-down configuration pin is
automatically disabled. Program IHOLD as desired for standstill periods.
MS1/MS2: CONFIGURATION OF MICROSTEP RESOLUTION FOR STEP INPUT (STANDALONE STEPPER MODE)
MS2
GND
GND
VIO
VIO
MS1
GND
VIO
GND
VIO
www.trinamic.com
Microstep Setting
8 microsteps
32 microsteps
64 microsteps
16 microsteps
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
13
3.3 Highly Efficient Driver
The TMC2300 integrates a highly efficient power stage, offering low RDSon even at low supply
voltages, due to its internal charge pump. This enables high motor current drive capability and low
power dissipation for battery powered applications.
RDSon vs. VS
400,00
350,00
300,00
250,00
200,00
150,00
100,00
50,00
0,00
1,5
2,0
2,5
RDSon (LS) [mOhm]
3,0
3,5
4,0
RDSon(HS) [mOhm]
Figure 3.3 RDSon Variation over Supply Voltage
When operating at a high motor current, the driver power dissipation due to MOSFET switch onresistance significantly heats up the driver. This power dissipation will significantly heat up the PCB
cooling infrastructure, if operated at an increased duty cycle. This in turn leads to a further increase of
driver temperature. An increase of temperature by about 100°C increases MOSFET resistance by
roughly 50%. This is a typical behavior of MOSFET switches. Therefore, under high duty cycle, high
load conditions, thermal characteristics have to be carefully taken into account, especially when
increased environment temperatures are to be supported. Refer the thermal characteristics and the
layout hints for more information. As a thumb rule, thermal properties of the PCB design become
critical for the tiny QFN 3mm x 3mm package at or above 0.8A RMS motor current for increased
periods of time. For currents above 0.8A, a 4-layer PCB layout with 5 via contact of the die attach pad
to the GND plane is required. Keep in mind that resistive power dissipation raises with the square of
the motor current. On the other hand, this means that a small reduction of motor current significantly
saves heat dissipation and energy.
Pay special attention to good thermal properties of your PCB layout, when going for 0.8A RMS current
or more.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
14
3.4 Low Power Standby
Battery powered applications, as well as mains powered applications conforming to EU energy saving
regulations, often require a standby mode, where the power-supply remains on. Current consumption
in this mode must be minimized. Control near zero power TMC2300 standby operation by switching
off the I/O supply voltage on VIO_NSTDBY pin. At the same time make sure, that no digital input pin
is at a high level. An input level above VIO_NSTDBY would hinder pulling down VIO_NSTDBY, due to
the ESD protection diodes in each digital I/O pin. These diodes clamp each input to a level between
GND and the IO supply voltage VIO_NSTDBY. Therefore, stop the motor first, and allow sufficient time
for the motor to come to a standstill, pull the enable input EN low, and also all other input pins, to
switch off the motor completely before switching off VIO voltage. All driver registers are reset to their
power-up defaults after leaving standby mode. See Figure 3.4.
Operation
Actual Power Draw
Low current standby
Standstill
0)
%01: Freewheeling
%10: Coil shorted using LS drivers (passive braking)
%11: Coil shorted using HS drivers (passive braking)
0
Fixed value for PWM_GRAD
(PWM_GRAD_AUTO = PWM_GRAD)
1
Automatic tuning (only with pwm_autoscale=1)
PWM_GRAD_AUTO is initialized with PWM_GRAD
and becomes optimized automatically during
motion.
Preconditions
1. PWM_OFS_AUTO has been automatically
initialized. This requires standstill at IRUN for
>130ms in order to a) detect standstill b) wait >
128 chopper cycles at IRUN and c) regulate
PWM_OFS_AUTO so that
-1 < PWM_SCALE_AUTO < 1
2. Motor running and 1.5 * PWM_OFS_AUTO <
PWM_SCALE_SUM < 4* PWM_OFS_AUTO and
PWM_SCALE_SUM < 255.
Time required for tuning PWM_GRAD_AUTO
About 8 fullsteps per change of +/-1.
0
User defined feed forward PWM amplitude. The
current settings IRUN and IHOLD have no influence!
The resulting PWM amplitude (limited to 0…255) is:
PWM_OFS * ((CS_ACTUAL+1) / 32)
+ PWM_GRAD * 256 / TSTEP
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
30
0X70: PWMCONF – VOLTAGE MODE PWM STEALTHCHOP
Bit
Name
Function
17
16
pwm_freq1
pwm_freq0
PWM frequency
selection
15
14
13
12
11
10
9
8
PWM_
GRAD
User defined amplitude
gradient
7
6
5
4
3
2
1
0
PWM_
OFS
User defined amplitude
(offset)
Comment
1
Enable automatic current control (Reset default)
Set to zero (for a short time) in order to force a
new initialization of PWM_OFS_AUTO=PWM_OFS and
PWM_GRAD_AUTO=PWM_GRAD.
%00: fPWM=2/1024 fCLK
%01: fPWM=2/683 fCLK
%10: fPWM=2/512 fCLK
%11: fPWM=2/410 fCLK
Velocity dependent gradient for PWM amplitude:
PWM_GRAD * 256 / TSTEP
This value is added to PWM_AMPL to compensate for
the velocity-dependent motor back-EMF.
(Reset default=16)
With automatic scaling (pwm_autoscale=1) the value is
used for first initialization, only. Set PWM_GRAD to the
application specific value (it can be read out from
PWM_GRAD_AUTO) to speed up the automatic tuning
process.
User defined PWM amplitude offset (0-255) related to full
motor current (CS_ACTUAL=31) in stand still.
(Reset default=36)
When using automatic scaling (pwm_autoscale=1) the
value is used for initialization, only. The autoscale
function starts with PWM_SCALE_AUTO=PWM_OFS and
finds the required offset to yield the target current
automatically.
PWM_OFS = 0 will disable scaling down motor current
below a motor specific lower measurement threshold.
This setting should only be used under certain
conditions, i.e. when the power supply voltage can vary
up and down by a factor of two or more. It prevents
the motor going out of regulation, but it also prevents
power down below the regulation limit.
PWM_OFS > 0 allows automatic scaling to low PWM duty
cycles even below the lower regulation threshold. This
allows low (standstill) current settings based on the
actual (hold) current scale (register IHOLD_IRUN).
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
5.5.3
31
DRV_STATUS – Driver Status Flags
0X6F: DRV_STATUS – DRIVER STATUS FLAGS AND CURRENT LEVEL READ BACK
Bit
31
Name
stst
Function
standstill indicator
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
-
reserved
Comment
This flag indicates motor stand still in each operation
mode. This occurs 2^20 clocks after the last step pulse.
Ignore these bits
-
reserved
Ignore these bits
CS_
ACTUAL
actual motor current /
smart energy current
Actual current control scaling, for monitoring the
function of the automatic current scaling.
-
reserved
Ignore these bits
-
0
Ignore these bits
t150
t120
olb
6
ola
5
s2vsb
4
s2vsa
150°C comparator
120°C comparator
open load indicator
phase B
open load indicator
phase A
low side short
indicator phase B
low side short
indicator phase A
3
s2gb
2
s2ga
1
ot
0
otpw
1: Temperature threshold is exceeded, driver is off
1: Temperature prewarning threshold is exceeded
1: Open load detected on phase A or B.
Hint: This is just an informative flag. The driver takes no
action upon it. False detection may occur in fast motion
and standstill. Check during slow motion, only.
1: Short on low-side MOSFET detected on phase A or B.
The driver becomes disabled. The flags stay active, until
the driver is disabled by software (enabledrv=0) or by
the ENN input. Flags are separate for both chopper
modes.
1: Short to GND detected on phase A or B. The driver
becomes disabled. The flags stay active, until the driver
is disabled by software (enabledrv=0) or by the ENN
input.
1: The overtemperature limit has been reached. Drivers
become disabled until otpw is also cleared due to
cooling down of the IC.
The overtemperature flag is common for both bridges.
1: The overtemperature pre-warning threshold is
exceeded.
The overtemperature pre-warning flag is common for
both bridges.
www.trinamic.com
short to ground
indicator phase B
short to ground
indicator phase A
overtemperature flag
overtemperature prewarning flag
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
6
32
StealthChop™
StealthChop is an extremely quiet mode of operation for stepper motors. It is based on a
voltage mode PWM. In case of standstill and at low velocities, the motor is absolutely
noiseless. Thus, StealthChop operated stepper motor applications are very suitable for
indoor or home use. The motor operates absolutely free of vibration at low velocities.
With StealthChop, the motor current is applied by driving a certain effective voltage into
the coil, using a voltage mode PWM. With the enhanced StealthChop2, the driver automatically adapts
to the application for best performance. No more configurations are required. Optional configuration
allows for tuning the setting in special cases, or for storing initial values for the automatic adaptation
algorithm.
Figure 6.1 Motor coil sine wave current with StealthChop (measured with current probe)
6.1 Automatic Tuning
StealthChop2 integrates an automatic tuning procedure (AT), which adapts the most important
operating parameters to the motor automatically. This way, StealthChop2 allows high motor dynamics
and supports powering down the motor to very low currents. Just two steps have to be respected by
the motion controller for best results: Start with the motor in standstill, but powered with nominal
run current (AT#1). Move the motor at a medium velocity, e.g. as part of a homing procedure (AT#2).
Figure 6.2 shows the tuning procedure.
Border conditions in for AT#1 and AT#2 are shown in the following table:
AUTOMATIC TUNING TIMING AND BORDER CONDITIONS
Step
AT#1
Parameter
PWM_
OFS_AUTO
AT#2
PWM_
GRAD_AUTO
www.trinamic.com
Conditions
- Motor in standstill and actual current scale (CS) is
identical to run current (IRUN).
- If standstill reduction is enabled (pin PDN_UART=0),
an initial step pulse switches the drive back to run
current.
- Pin VS at operating level.
- Motor must move at a velocity, where a significant
amount of back EMF is generated and where the full
run current can be reached. Conditions:
- 1.5 * PWM_OFS_AUTO
<
PWM_SCALE_SUM
<
4 * PWM_OFS_AUTO
- PWM_SCALE_SUM < 255.
Hint: A typical range is 60-300 RPM. Determine best
conditions with the evaluation board and monitor
PWM_SCALE_AUTO going down to zero during tuning.
Duration
≤ 2^20+2*2^18 tCLK,
≤ 130ms
(with internal clock)
8 fullsteps are required
for a change of +/-1.
For a typical motor with
PWM_GRAD_AUTO
optimum at 64 or less, up
to 400 fullsteps are
required.
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
33
Power Up
PWM_GRAD_AUTO becomes
initialized with 16
Driver Enabled?
N
Y
Stand still
N
Y
N
AT#1
Driver Enabled?
Standstill reduction enabled?
Y
Issue (at least) a single step
pulse and stop again, to
power motor to run current
stealthChop2 regulates to nominal
current and stores result to
PWM_OFS_AUTO
(Requires stand still for >130ms)
Move the motor, e.g. for homing.
Include a constant, medium velocity
ramp segment.
AT#2
Homing
Ready
stealthChop2 regulates to nominal
current and optimizes PWM_GRAD_AUTO
(requires 8 fullsteps per change of 1,
typically a few 100 fullsteps in sum)
stealthChop2 settings are optimized!
Option with UART
Store PWM_GRAD_AUTO
for faster tuning procedure
stealthChop2 keeps tuning during
subsequent motion and stand still periods
adapting to motor heating, supply
variations, etc.
Figure 6.2 StealthChop2 automatic tuning procedure
Attention with varying supply voltage:
Modifying the supply voltage VS invalidates the result of the automatic tuning process. However,
automatic tuning adapts to changed conditions whenever AT#1 and AT#2 conditions are fulfilled.
This is no problem with sinking supply voltage, i.e. due to the battery running low, as the regulator
corrects by increasing the PWM value. However, with an increasing supply voltage, motor current
rises, as the lower regulator limit is given by the result of the las AT#1 phase. Take this into account,
when experimenting with a lab supply and modifying supply voltage.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
34
6.2 StealthChop Options
UART
In order to match the motor current to a certain level, the effective PWM voltage becomes scaled
depending on the actual motor velocity. Several additional factors influence the required voltage level
to drive the motor at the target current: The motor resistance, its back EMF (i.e. directly proportional
to its velocity) as well as the actual level of the supply voltage. Two modes of PWM regulation are
provided: The automatic tuning mode (AT) using current feedback (pwm_autoscale = 1, pwm_autograd
= 1) and a feed forward velocity-controlled mode (pwm_autoscale = 0). The feed forward velocitycontrolled mode will not react to a change of the supply voltage or to events like a motor stall, but it
provides very stable amplitude. It does not use nor require any means of current measurement. This
is perfect when motor type and supply voltage are well known. Therefore, we recommend the
automatic mode, unless current regulation is not satisfying in the given operating conditions.
It is recommended to operate in automatic tuning mode.
Non-automatic mode (pwm_autoscale=0) should be taken into account only with well-known motor
and operating conditions. In this case, programming via the UART interface is required. The operating
parameters PWM_GRAD and PWM_OFS can be determined in automatic tuning mode initially.
The StealthChop PWM frequency can be chosen in four steps in order to adapt the chopper frequency
to the motor inductance. It balances low current ripple and good higher velocity performance vs.
increased dynamic power dissipation at higher frequency.
CHOICE OF PWM FREQUENCY
Clock frequency
fCLK
PWM_FREQ=%00
fPWM=2/1024 fCLK
12MHz (typ. value)
23.4kHz
PWM_FREQ=%01
fPWM=2/683 fCLK
(default)
35.1kHz
PWM_FREQ=%10
fPWM=2/512 fCLK
PWM_FREQ=%11
fPWM=2/410 fCLK
46.9kHz
58.5kHz
Table 6.1 Choice of PWM frequency – green / light green: recommended
6.3 StealthChop Current Regulator
In StealthChop voltage PWM mode, the autoscaling function (pwm_autoscale = 1, pwm_auto_grad = 1)
regulates the motor current to the desired current setting. Automatic scaling is used as part of the
automatic tuning process (AT), and for subsequent tracking of changes within the motor parameters.
The driver measures the motor current during the chopper on time and uses a proportional regulator
to regulate PWM_SCALE_AUTO in order match the motor current to the target current. PWM_REG is the
proportionality coefficient for this regulator. Basically, the proportionality coefficient should be as
small as possible in order to get a stable and soft regulation behavior, but it must be large enough to
allow the driver to quickly react to changes caused by variation of the motor target current (e.g.
change of VREF). During initial tuning step AT#2, PWM_REG also compensates for the change of motor
velocity. Therefore, a high acceleration during AT#2 will require a higher setting of PWM_REG. With
careful selection of homing velocity and acceleration, a minimum setting of the regulation gradient
often is sufficient (PWM_REG=1). PWM_REG setting should be optimized for the fastest required
acceleration and deceleration ramp (compare Figure 6.3 and Figure 6.4). The quality of the setting
PWM_REG in phase AT#2 and the finished automatic tuning procedure (or non-automatic settings for
PWM_OFS and PWM_GRAD) can be examined when monitoring motor current during an acceleration
phase Figure 6.5.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
35
Figure 6.3 Scope shot: good setting for PWM_REG
Figure 6.4 Scope shot: too small setting for PWM_REG during AT#2
Motor Current
PWM scale
Motor Velocity
PWM reaches max. amplitude
RMS current constant
(IRUN)
PW
M_
Nominal Current
(sine wave RMS)
Stand still
PWM scale
PWM_OFS_(AUTO) ok
ok
O)
UT
(_A
AD
GR
M_
PW
GR
(P
AD
W
M_
(_A
RE
UT
G
O)
du
ok
rin
g
AT
#2
ok
)
255
Current may drop due
to high velocity
IHOLD
PWM_OFS_(AUTO) ok
0
0
Figure 6.5 Successfully determined PWM_GRAD(_AUTO) and PWM_OFS(_AUTO)
www.trinamic.com
Time
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
36
Quick Start
For a quick start, see the Quick Configuration Guide in chapter 15.
6.3.1
Lower Current Limit
The StealthChop current regulator imposes a lower limit for motor current regulation. As the coil
current can be measured in the shunt resistor during chopper on phase only, a minimum chopper
duty cycle allowing coil current regulation is given by the blank time as set by TBL and by the
chopper frequency setting. Therefore, the motor specific minimum coil current in StealthChop
autoscaling mode rises with the supply voltage and with the chopper frequency. A lower blanking
time allows a lower current limit. It is important for the correct determination of PWM_OFS_AUTO,
that in AT#1 the run current set by the sense resistor and IRUN is well within the regulation range.
Lower currents (e.g. for standstill power down) are automatically realized based on PWM_OFS_AUTO
and PWM_GRAD_AUTO respectively based on PWM_OFS and PWM_GRAD with non-automatic current
scaling. The freewheeling option allows going to zero motor current.
Lower motor coil current limit for StealthChop2 automatic tuning:
𝐼𝐿𝑜𝑤𝑒𝑟 𝐿𝑖𝑚𝑖𝑡 = 𝑡𝐵𝐿𝐴𝑁𝐾 ∗ 𝑓𝑃𝑊𝑀 ∗
𝑉𝑀
𝑅𝐶𝑂𝐼𝐿
With VM the motor supply voltage and RCOIL the motor coil resistance.
ILower Limit can be treated as a thumb value for the minimum nominal IRUN motor current setting.
EXAMPLE:
A motor has a coil resistance of 5Ω, the supply voltage is 8.4V. With TBL=%01 and PWM_FREQ=%00,
tBLANK is 24 clock cycles, fPWM is 2/(1024 clock cycles):
𝐼𝐿𝑜𝑤𝑒𝑟 𝐿𝑖𝑚𝑖𝑡 = 24 𝑡𝐶𝐿𝐾 ∗
2
8.4𝑉
24 8.4𝑉
∗
=
∗
= 78𝑚𝐴
1024 𝑡𝐶𝐿𝐾 5Ω
512 5Ω
This means, the motor target current for automatic tuning must be 78mA or more, taking into account
all relevant settings.
Attention
For automatic tuning, a lower coil current limit applies. The motor current in automatic tuning phase
AT#1 must exceed this lower limit. ILOWER LIMIT can be calculated or measured using a current probe.
Setting the motor run-current or hold-current below the lower current limit during operation by
modifying IRUN and IHOLD is possible after successful automatic tuning.
The lower current limit also limits the capability of the driver to respond to changes of VREF.
6.4 Velocity Based Scaling
UART
Velocity based scaling scales the StealthChop amplitude based on the time between each two steps,
i.e. based on TSTEP, measured in clock cycles. This concept basically does not require a current
measurement, because no regulation loop is necessary. A pure velocity-based scaling is available via
UART programming, only, when setting pwm_autoscale = 0. The basic idea is to have a linear
approximation of the voltage required to drive the target current into the motor. The stepper motor
has a certain coil resistance and thus needs a certain voltage amplitude to yield a target current
based on the basic formula I=U/R. With R being the coil resistance, U the supply voltage scaled by the
PWM value, the current I results. The initial value for PWM_AMPL can be calculated:
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
𝑃𝑊𝑀_𝐴𝑀𝑃𝐿 =
37
374 ∗ 𝑅𝐶𝑂𝐼𝐿 ∗ 𝐼𝐶𝑂𝐼𝐿
𝑉𝑀
With VM the motor supply voltage and ICOIL the target RMS current
The effective PWM voltage UPWM (1/SQRT(2) x peak value) results considering the 8 bit resolution and
248 sine wave peak for the actual PWM amplitude shown as PWM_SCALE:
𝑈𝑃𝑊𝑀 = 𝑉𝑀 ∗
𝑃𝑊𝑀_𝑆𝐶𝐴𝐿𝐸 248 1
𝑃𝑊𝑀_𝑆𝐶𝐴𝐿𝐸
∗
∗
= 𝑉𝑀 ∗
256
256 √2
374
With rising motor velocity, the motor generates an increasing back EMF voltage. The back EMF voltage
is proportional to the motor velocity. It reduces the PWM voltage effective at the coil resistance and
thus current decreases. The TMC2300 provides a second velocity dependent factor (PWM_GRAD) to
compensate for this. The overall effective PWM amplitude (PWM_SCALE_SUM) in this mode
automatically is calculated in dependence of the microstep frequency as:
𝑓𝑆𝑇𝐸𝑃
𝑓𝐶𝐿𝐾
With fSTEP being the microstep frequency for 256 microstep resolution equivalent
and fCLK the clock frequency supplied to the driver or the actual internal frequency
𝑃𝑊𝑀_𝑆𝐶𝐴𝐿𝐸_𝑆𝑈𝑀 = 𝑃𝑊𝑀_𝑂𝐹𝑆 + 𝑃𝑊𝑀_𝐺𝑅𝐴𝐷 ∗ 256 ∗
As a first approximation, the back EMF subtracts from the supply voltage and thus the effective current
amplitude decreases. This way, a first approximation for PWM_GRAD setting can be calculated:
𝑃𝑊𝑀_𝐺𝑅𝐴𝐷 = 𝐶𝐵𝐸𝑀𝐹 [
𝑉
𝑓𝐶𝐿𝐾 ∗ 1.46
] ∗ 2𝜋 ∗
𝑟𝑎𝑑
𝑉𝑀 ∗ 𝑀𝑆𝑃𝑅
𝑠
CBEMF is the back EMF constant of the motor in Volts per radian/second (See chapter 7).
MSPR is the number of microsteps per rotation, e.g. 51200 = 256µsteps multiplied by 200 fullsteps for
a 1.8° motor.
Motor current
PWM scaling
(PWM_SCALE_SUM)
255
PWM reaches
max. amplitude
Constant motor
RMS current
Nominal current
(e.g. sine wave RMS)
M_
PW
AD
GR
Cur
r
(de ent dr
p en
ops
mo
d
tor s on
loa
d)
PWM_OFS
0
0
VPWMMAX
Figure 6.6 Velocity based PWM scaling (pwm_autoscale=0)
www.trinamic.com
Velocity
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
38
Hint
The values for PWM_OFS and PWM_GRAD can easily be optimized by tracing the motor current with a
current probe on the oscilloscope. Alternatively, automatic tuning determines these values and they
can be read out from PWM_OFS_AUTO and PWM_GRAD_AUTO.
Hint
Start the motor from standstill when switching on StealthChop the first time and keep it stopped for
at least 128 chopper periods to allow StealthChop to do initial standstill current control.
6.5 Flags in StealthChop
UART
As StealthChop uses voltage mode driving, status flags based on current measurement respond
slower, respectively the driver reacts delayed to sudden changes of back EMF, like on a motor stall.
Attention
A motor stall, or abrupt stop of the motion during operation in StealthChop can trigger an
overcurrent condition. Depending on the previous motor velocity, and on the coil resistance of the
motor, it significantly increases motor current for a time of several 10ms. With low velocities, where
the back EMF is just a fraction of the supply voltage, there is no danger of triggering the short
detection. When homing using StallGuard4 to stop the motor upon stall, this is basically avoided.
6.5.1
Open Load Flags
In StealthChop mode, OLA and OLB show if the current regulation sees that the nominal current can
be reached on both coils.
-
A flickering OLA or OLB can result from asymmetries in the sense resistors or in the motor
coils.
An interrupted motor coil leads to a continuously active open load flag for the coil.
One or both flags are active, if the current regulation did not succeed in scaling up to the full
target current within the last few fullsteps (because no motor is attached or a high velocity
exceeds the PWM limit).
With StealthChop, PWM_SCALE_SUM can be checked to detect the correct coil resistance.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
6.5.2
39
PWM_SCALE_SUM Informs about the Motor State
Information about the motor state is available with automatic scaling by reading out
PWM_SCALE_SUM. As this parameter reflects the actual voltage required to drive the target current into
the motor, it depends on several factors: motor load, coil resistance, supply voltage, and current
setting. Therefore, an evaluation of the PWM_SCALE_SUM value allows checking the motor operation
point. When reaching the limit (255), the current regulator cannot sustain the full motor current, e.g.
due to a drop in supply voltage.
6.6 Freewheeling and Passive Braking
UART
StealthChop provides different options for motor standstill. These options can be enabled by setting
the standstill current IHOLD to zero and choosing the desired option using the FREEWHEEL setting.
The desired option becomes enabled after a time period specified by TPOWERDOWN and
IHOLD_DELAY. Current regulation becomes frozen once the motor target current is at zero current in
order to ensure a quick startup. With the freewheeling options, both freewheeling and passive
braking can be realized. Passive braking is an effective eddy current motor braking, which consumes a
minimum of energy, because no active current is driven into the coils. However, passive braking will
allow slow turning of the motor when a continuous torque is applied.
Hint
Operate the motor within your application when exploring StealthChop. Motor performance often is
better with a mechanical load, because it prevents the motor from stalling due mechanical oscillations
which can occur without load.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
40
PARAMETERS RELATED TO STEALTHCHOP
Parameter
PWM_LIM
pwm_
autoscale
pwm_
autograd
Description
Limiting value for limiting the current jerk when
switching on StealthChop following a disable
condition. Reduce the value to yield a lower
current peak.
Enable automatic current scaling using current
measurement or use forward controlled velocity
based mode.
Enable automatic tuning of PWM_GRAD_AUTO
Setting
0 … 15
Comment
Upper four bits of 8 bit
amplitude limit
(Default=12)
0
1
Forward controlled mode
Automatic scaling with
current regulator
disable, use PWM_GRAD
from register instead
enable
fPWM=2/1024 fCLK
fPWM=2/683 fCLK
fPWM=2/512 fCLK
fPWM=2/410 fCLK
Results in 0.5 to 7.5 steps
for PWM_SCALE_AUTO
regulator per fullstep
PWM_OFS=0 disables
linear current scaling
based on current setting
0
1
0
1
2
3
PWM_REG
User defined PWM amplitude (gradient) for 1 … 15
velocity-based scaling or regulation loop gradient
when pwm_autoscale=1.
PWM_OFS
User defined PWM amplitude (offset) for velocity- 0 … 255
based scaling and initialization value for automatic
tuning of PWM_OFFS_AUTO.
PWM_GRAD User defined PWM amplitude (gradient) for 0 … 255
velocity-based scaling and initialization value for
automatic tuning of PWM_GRAD_AUTO.
FREEWHEEL Stand still option when motor current setting is 0
zero (I_HOLD=0). The freewheeling option makes 1
the motor easy movable, while both coil short 2
options realize a passive brake.
3
PWM_SCALE Read back of the actual StealthChop voltage PWM -255 …
_AUTO
scaling correction as determined by the current 255
regulator.
PWM_SCALE Allow monitoring of the automatic tuning and 0 … 255
_AUTO
determination of initial values for PWM_OFS and
PWM_OFS
PWM_GRAD.
_AUTO
enabledrv
General enable for the motor driver
0
1
TBL
Comparator blank time. This time needs to safely 0
cover the switching event and the duration of the 1
ringing on the sense resistor. Choose a setting of 2
1 or 2 for typical applications. For higher 3
capacitive loads, 3 may be required. Lower
settings allow StealthChop to regulate down to
lower coil current values.
PWM_FREQ
PWM frequency selection. Use the lowest setting
giving good results. The frequency measured at
each of the chopper outputs is half of the
effective chopper frequency fPWM.
www.trinamic.com
Normal operation
Freewheeling
Coil short via LS drivers
Coil short cia HS drivers
(read only) Scaling value
becomes frozen when
driver is disabled
(read only)
Driver off, all outputs hi-Z
Driver enabled
16 tCLK
24 tCLK
32 tCLK
40 tCLK
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
7
41
Fitting the Motor
Especially for low voltage operation, the motor should be carefully selected to give a good fit to the
application’s mechanics, as well as available supply voltage and current. Therefore, it is important to
understand the supply voltage requirement for a given motor. Both, the generation of a certain
torque, and the ability to provide this torque at a desired velocity, require a motor specific voltage.
These two components add up.
Main relevant parameters for a stepper motor:
Nominal (RMS) coil current
Nominal coil resistance
Rated coil voltage
Holding torque at ICOILNOM
ICOILNOM [A]
RCOIL [Ω]
UN = RCOIL * ICOILNOM [V]
HoldingTorque [Nm]
(sometimes specified instead of ICOILNOM)
The specified motor torque is reached with the RMS ICOIL current in both motor coils, in order to build
up the required magnetic field strength. A lower current will basically proportionally generate a lower
torque, e.g. 70% of torque at 70% current. Even a reduction to 70% saves a lot of energy, because
power dissipation goes with the square of the current. Thus, a motor with more reserves can offer
better efficiency!
With this, calculate the required supply voltage UBAT for motor stand still and slow motion, taking into
account the driver’s power stage resistance plus 0.3V loss in the sense resistor:
𝑈𝐵𝐴𝑇 = (𝑅𝐶𝑂𝐼𝐿 + 2 ∗ 0.17Ω) ∗ 𝐼𝐶𝑂𝐼𝐿 ∗ √2 + 0.3𝑉
ICOIL is the RMS motor current which gives the desired torque.
For higher velocity operation (more than a few electrical rotations per second), the motor specific
back EMF constant CBEMF should be additionally taken into account (see below explanation). With this,
the lowest feasible supply voltage for a given motor and a maximum velocity [RPM] calculates to:
𝑈𝐵𝐴𝑇 = 0.3𝑉 + ((𝑅𝐶𝑂𝐼𝐿 + 2 ∗ 0.17Ω) ∗ 𝐼𝐶𝑂𝐼𝐿 +
𝐻𝑜𝑙𝑑𝑖𝑛𝑔𝑇𝑜𝑟𝑞𝑢𝑒[𝑁𝑚] 2𝜋 ∗ 𝑉𝑒𝑙𝑜𝑐𝑖𝑡𝑦[𝑅𝑃𝑀]
∗
) ∗ √2
2 ∗ 𝐼𝐶𝑂𝐼𝐿𝑁𝑂𝑀
60
Adapt your motor to battery operation
With most motor suppliers you have the chance to adapt the coil winding. This allows to trade in a
lower motor voltage for battery operation versus higher motor current. E.g. a motor with a short,
thick coil wire can work at a lower voltage, than the same motor with a long, thin coil wire, but it
needs a higher current for the same torque.
UNDERSTANDING THE BACK EMF CONSTANT OF A MOTOR
The back EMF constant is the voltage a motor generates when turned with a certain velocity. Often
motor datasheets do not specify this value, as it can be deducted from motor torque and coil current
rating. Within SI units, the back EMF constant CBEMF has the same numeric value as the torque
constant. For example, a motor with a torque constant of 1 Nm/A would have a CBEMF of 1V/rad/s.
Turning such a motor with 1 rps (1 rps = 1 revolution per second = 6.28 rad/s) generates a back EMF
voltage of 6.28V. Thus, the back EMF constant can be calculated as:
𝐶𝐵𝐸𝑀𝐹 [
𝑉
𝐻𝑜𝑙𝑑𝑖𝑛𝑔𝑇𝑜𝑟𝑞𝑢𝑒[𝑁𝑚]
]=
𝑟𝑎𝑑/𝑠
2 ∗ 𝐼𝐶𝑂𝐼𝐿𝑁𝑂𝑀 [𝐴]
ICOILNOM is the motor’s rated phase current for the specified holding torque
HoldingTorque is the motor specific holding torque, i.e. the torque reached at ICOILNOM on both coils.
The torque unit is [Nm] where 1Nm = 100Ncm = 1000mNm.
The BEMF voltage is valid as RMS voltage per coil, thus the nominal current has a factor of 2 in this
formula.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
8
42
Selecting Sense Resistors
Set the desired maximum motor current by selecting an appropriate value for the sense resistor. The
following table shows the RMS current values which can be reached using standard resistors and
motor types fitting without additional motor current scaling. Additional 15mΩ PCB resistance are
included in the calculation.
CHOICE OF RSENSE AND RESULTING MAX. MOTOR CURRENT
RSENSE [Ω]
RMS current [A]
IRUN=31
1.50
1.20
1.00
0.82
0.75
0.68
0.50
470m
390m
330m
270m
220m
180m
150m
0.15
0.18
0.22
0.27
0.29
0.32
0.42
0.45
0.53
0.61
0.73
0.87
1.02
1.18
Fitting motor type at
max. current setting
(examples)
150mA motor
200mA motor
300mA motor
400mA motor
500mA
600mA
700mA
800mA
motor
motor
motor
motor
1A motor *)
1.2A motor *)
*) At high currents, duty cycle restriction for motion might apply, due to heat up of IC and board.
Sense resistors should be carefully selected. The full motor current flows through the sense resistors.
Due to chopper operation the sense resistors see pulsed current from the MOSFET bridges. Therefore,
a low-inductance type such as film or composition resistors is required to prevent voltage spikes
causing ringing on the sense voltage inputs leading to unstable measurement results. Also, a lowinductance, low-resistance PCB layout is essential. Any common GND path for the two sense resistors
must be avoided, because this would lead to coupling between the two current sense signals. A
massive ground plane is best. Please also refer to layout considerations in chapter 20.
The sense resistor needs to be able to conduct the peak motor coil current in motor standstill
conditions, unless standby power is reduced. Under normal conditions, the sense resistor conducts
less than the coil RMS current, because no current flows through the sense resistor during the slow
decay phases. A 0.25W type is sufficient for most applications up to 800mA RMS.
Attention
Be sure to use a symmetrical sense resistor layout and short and straight sense resistor traces of
identical length. Well matching sense resistors ensure best performance.
A compact layout with massive ground plane is best to avoid parasitic resistance effects.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
9
43
Motor Current Control
The basic motor current is set by the value of the sense resistors. Several possibilities allow scaling
down motor current, e.g. to adapt for different motors, or to reduce motor current in standstill or low
load situations.
METHODS FOR SCALING MOTOR CURRENT
Method
Pin EN
Pin PDN_UART
UART interface
Parameters
Disable
/
enable
driver stage
Disable
/
enable
standstill
current
reduction to IHOLD
IHOLD_IRUN
TPOWERDOWN
Range
1: Motor enable
0: Motor disable
0: Standstill current
reduction enabled.
1: Disable
IRUN, IHOLD:
1/32 to 32/32 of full
scale current.
Primary Use
- Disable
motor
to
allow
freewheeling or power saving
- Enable current reduction to
reduce heat up in stand still
-
Fine programming of run and
hold (stand still) current
Change IRUN for situation
specific motor current (range 8
to 31)
Select the sense resistor to deliver enough current for the motor at full current scale. This is the
default current scaling (IRUN = 31).
STANDALONE MODE RMS RUN CURRENT CALCULATION:
𝐼𝑅𝑀𝑆 =
325𝑚𝑉
1
∗
𝑅𝑆𝐸𝑁𝑆𝐸 + 30𝑚Ω √2
IRUN and IHOLD allow for scaling of the actual current scale (CS) from 9/32 (IRUN, minimum value),
resp. 1/32 to 32/32 when using UART interface, or via automatic standstill current reduction:
RMS CURRENT CALCULATION WITH UART CONTROL OPTIONS OR HOLD CURRENT SETTING:
𝐼𝑅𝑀𝑆 =
𝐶𝑆 + 1
𝑉𝐹𝑆
1
∗
∗
32
𝑅𝑆𝐸𝑁𝑆𝐸 + 30𝑚Ω √2
CS is the current scale setting as set by the IHOLD and IRUN.
VFS is the full-scale voltage (please refer to electrical characteristics, VSRT). Default is 325mV.
Hint
For best precision of current setting, measure and fine tune the current in the application.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
44
PARAMETERS FOR MOTOR CURRENT CONTROL
Parameter
IRUN
IHOLD
IHOLD
DELAY
TPOWER
DOWN
Description
Setting
Current scale when motor is running. Scales coil 8 … 31
current values as taken from the internal sine
wave table. For proper operation, do not set
values lower than 8. Optimum range is 16 to 32.
Identical to IRUN, but for motor in stand still.
0 … 31
Allows smooth current reduction from run current 0
to hold current. IHOLDDELAY controls the number 1 … 15
of clock cycles for motor power down after
TPOWERDOWN in increments of 2^18 clocks:
0=instant power down, 1..15: Current reduction
delay per current step in multiple of 2^18 clocks.
Example: When using IRUN=31 and IHOLD=16, 15
current steps are required for hold current
reduction. A IHOLDDELAY setting of 4 thus results
in a power down time of 4*15*2^18 clock cycles,
i.e. roughly one second at 16MHz clock frequency.
Sets the delay time from stand still (stst) detection 0 … 255
to motor current power down. Time range is
about 0 to 5.6 seconds.
www.trinamic.com
Comment
scaling factor
0: 1/32, …, 8: 9/32 …
31: 32/32
IRUN is full scale (setting
31) in standalone mode.
instant IHOLD
1*218 … 15*218
clocks per current
decrement
0…((2^8)-1) * 2^18 tCLK
A minimum setting of 2
is required to allow
automatic
tuning
of
PWM_OFFS_AUTO
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
45
10 StallGuard4 Load Measurement
UART
StallGuard4 provides an accurate measurement of the load on the motor. It is developed for operation
in conjunction with StealthChop. StallGuard can be used for stall detection as well as other uses at
loads below those which stall the motor, such as CoolStep load-adaptive current reduction. The
StallGuard4 measurement value changes linearly over a wide range of load, velocity, and current
settings, as shown in Figure 10.1. When approaching maximum motor load, the value goes down to a
motor-specific lower value. This corresponds to a load angle of 90° between the magnetic field of the
coils and magnets in the rotor. This also is the most energy-efficient point of operation for the motor.
500
StallGuard4 reading
SG_RESULT
450
Start value depends
on motor, velocity
and operating current
400
350
SG_RESULT reaches compare
value and indicates danger of
stall. This point is set by
stallGuard threshold value
SGTHRS.
300
100% load value depends on
motor, operating current and
velocity
250
200
Stall detection
150
threshold SGTHRS*2
high 100
Stall Output
low 50
0
Motor stalls above this point.
Load angle exceeds 90° and
available torque sinks.
10
20
30
40
50
60
70
80
90
100
motor load
(% max. torque)
Figure 10.1 Function principle of StallGuard4
Parameter
SGTHRS
Status word
SG_RESULT
Description
This value controls the StallGuard4 threshold
level for stall detection. It compensates for
motor specific characteristics and controls
sensitivity. A higher value gives a higher
sensitivity. A higher value makes StallGuard4
more sensitive and requires less torque to
indicate a stall.
Description
This is the StallGuard4 result. A higher reading
indicates less mechanical load. A lower reading
indicates a higher load and thus a higher load
angle.
Setting
0… 255
Comment
The double of this value is
compared to SG_RESULT.
The stall output becomes
active if SG_RESULT fall
below this value.
Range
0… 510
Comment
Low value: highest load
High value: high load
In order to use StallGuard4, check the sensitivity of the motor at border conditions.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
46
10.1 Tuning StallGuard4
The StallGuard4 value SG_RESULT is affected by motor-specific characteristics and application-specific
demands on load, coil current, and velocity. Therefore, the easiest way to tune the StallGuard4
threshold SGTHRS for a specific motor type and operating conditions is interactive tuning in the actual
application.
INITIAL PROCEDURE FOR TUNING STALLGUARD SGTHRS
1.
2.
3.
4.
Operate the motor at the normal operation velocity for your application and monitor SG_RESULT.
Apply slowly increasing mechanical load to the motor. Check the lowest value of SG_RESULT
before the motor stalls. Use this value as starting value for SGTHRS (apply half of the value).
Now monitor the StallGuard output signal via DIAG output (configure properly, also set
TCOOLTHRS) and stop the motor when a pulse is seen on the respective output. Make sure, that
the motor is safely stopped whenever it is stalled. Increase SGTHRS if the motor becomes
stopped before a stall occurs.
The optimum setting is reached when a stall is safely detected and leads to a pulse at DIAG in
the moment where the stall occurs. SGTHRS in most cases can be tuned for a certain motion
velocity or a velocity range. Make sure, that the setting works reliable in a certain range (e.g. 75%
to 150% of desired velocity) and also under extreme motor conditions (lowest and highest
applicable temperature).
DIAG is pulsed by StallGuard, when SG_RESULT falls below SGTHRS. It is only enabled in StealthChop
mode, and when TCOOLTHRS ≥ TSTEP
The external motion controller should react to a single pulse by stopping the motor if desired. Set
TCOOLTHRS to match the lower velocity threshold where StallGuard delivers a good result.
SG_RESULT measurement has a high resolution, and there are a few ways to enhance its accuracy, as
described in the following sections.
10.2 StallGuard4 Update Rate
The StallGuard4 measurement value SG_RESULT is updated with each full step of the motor. This is
enough to safely detect a stall, because a stall always means the loss of four full steps.
10.3 Detecting a Motor Stall
To safely detect a motor stall, the stall threshold must be determined using a specific SGTHRS setting
and a specific motor velocity or velocity range. Further, the motor current setting has a certain
influence and should not be modified, once optimum values are determined. Therefore, the maximum
load needs to be determined that the motor can drive without stalling. At the same time, monitor
SG_RESULT at this load. The stall threshold should be a value safely within the operating limits, to
allow for parameter stray. More refined evaluation may also react to a change of SG_RESULT rather
than comparing to a fixed threshold. This will rule out certain effects which influence the absolute
value.
10.4 Limits of StallGuard4 Operation
StallGuard4 does not operate reliably at extreme motor velocities: Very low motor velocities (for many
motors, less than one revolution per second) generate a low back EMF and make the measurement
unstable and dependent on environment conditions (temperature, etc.). Other conditions will also lead
to a poor response of the measurement value SG_RESULT to the motor load. Very high motor
velocities, in which the full sinusoidal current is not driven into the motor coils also leads to poor
response. These velocities are typically characterized by the motor back EMF exceeding the supply
voltage.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
47
11 CoolStep Operation
UART
CoolStep is an automatic smart energy optimization for stepper motors based on the motor
mechanical load, making them “green”.
11.1 User Benefits
Energy efficiency
Motor generates less heat
Less cooling infrastructure
Cheaper motor
–
–
–
–
consumption decreased up to 90%
improved mechanical precision
for motor and driver
does the job!
CoolStep allows substantial energy savings, especially for motors which see varying loads or operate
at a high duty cycle. Because a stepper motor application needs to work with a torque reserve of 30%
to 50%, even a constant-load application allows significant energy savings because CoolStep
automatically enables torque reserve when required. Reducing power consumption keeps the system
cooler, increases motor life, and allows reducing cost in the power supply and cooling components.
Reducing motor current by half results in reducing power by a factor of four.
11.2 Setting up for CoolStep
CoolStep is controlled by several parameters, but two are critical for understanding how it works:
Parameter
Description
SEMIN
4-bit unsigned integer that sets a lower threshold. 0
If SG_RESULT goes below this threshold, CoolStep 1…15
increases the current to both coils. The 4-bit
SEMIN value is scaled by 32 to cover the lower
half of the range of the 10-bit SG value. (The
name of this parameter is derived from
SmartEnergy, which is an earlier name for
CoolStep.)
4-bit unsigned integer that controls an upper 0…15
threshold. If SG is sampled equal to or above this
threshold enough times, CoolStep decreases the
current to both coils. The upper threshold is
(SEMIN + SEMAX + 1)*32.
SEMAX
Figure
-
Range
Comment
disable CoolStep
threshold is SEMIN*32
Once SGTHRS has been
determined, use
1/16*SGTHRS+1
as a starting point for
SEMIN.
threshold is
(SEMIN+SEMAX+1)*32
0 to 2 recommended
11.1 shows the operating regions of CoolStep:
The black line represents the SG_RESULT measurement value.
The blue line represents the mechanical load applied to the motor.
The red line represents the current into the motor coils.
When the load increases, SG_RESULT falls below SEMIN, and CoolStep increases the current. When the
load decreases, SG_RESULT rises above (SEMIN + SEMAX + 1) * 32, and the current is reduced.
www.trinamic.com
stallGuard2
reading
mechanical load
48
motor current
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
current setting I_RUN
(upper limit)
motor current reduction area
SEMAX+SEMIN+1
SEMIN
½ or ¼ I_RUN
(lower limit)
motor current increment area
0=maximum load
load angle optimized
Zeit
slow current reduction due
to reduced motor load
load
angle
optimized
current increment due to
increased load
stall possible
load angle optimized
Figure 11.1 CoolStep adapts motor current to the load
Five more parameters control CoolStep and one status value is returned:
Parameter
SEUP
SEDN
SEIMIN
TCOOLTHRS
Status
word
CSACTUAL
Description
Range
Sets the current increment step. The current 0…3
becomes incremented for each measured
StallGuard2 value below the lower threshold.
Sets the number of StallGuard2 readings above 0…3
the upper threshold necessary for each current
decrement of the motor current.
Sets the lower motor current limit for CoolStep
operation by scaling the IRUN current setting.
Operate well above the minimum motor current
as determined for StealthChop current regulation.
Lower velocity threshold for switching on
CoolStep and stall output. Below this velocity
CoolStep becomes disabled (not used in STEP/DIR
mode). Adapt to the lower limit of the velocity
range where StallGuard2 gives a stable result.
Description
0
1
number of StallGuard2
measurements per
decrement:
32, 8, 2, 1
0: 1/2 of IRUN
1: 1/4 of IRUN
IRUN ≥ 16 recommended
1…
2^20-1
Specifies lower CoolStep
velocity by comparing
the threshold value to
TSTEP
Range
Comment
This status value provides the actual motor 0…31
current scale as controlled by CoolStep. The value
goes up to the IRUN value and down to the
portion of IRUN as specified by SEIMIN.
www.trinamic.com
Comment
step width is
1, 2, 4, 8
1/32, 2/32, … 32/32
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
49
11.3 Tuning CoolStep
CoolStep uses SG_RESULT to operate the motor near the optimum load angle of +90°. The basic
setting to be tuned is SEMIN. Set SEMIN to a value which safely activates CoolStep current increment
before the motor stalls. In case SGTHRS has been tuned before, a lower starting value is
SEMIN = 1+SGTHRS/16.
The current increment speed is specified in SEUP, and the current decrement speed is specified in
SEDN. They can be tuned separately because they are triggered by different events that may need
different responses. The encodings for these parameters allow the coil currents to be increased much
more quickly than decreased, because crossing the lower threshold is a more serious event that may
require a faster response. If the response is too slow, the motor may stall. In contrast, a slow
response to crossing the upper threshold does not risk anything more serious than missing an
opportunity to save power.
CoolStep operates between limits controlled by the current scale parameter IRUN and the seimin bit.
Attention
When CoolStep increases motor current, spurious detection of motor stall may occur. For best results,
disable CoolStep during StallGuard based homing.
In case StallGuard is desired in combination with CoolStep, try increasing coolStep lower threshold
SEMIN as required.
11.3.1 Response Time
For fast response to increasing motor load, use a high current increment step SEUP. If the motor load
changes slowly, a lower current increment step can be used to avoid motor oscillations.
Hint
The most common and most beneficial use is to adapt CoolStep for operation at the typical system
target operation velocity and to set the velocity thresholds according. As acceleration and
decelerations normally shall be quick, they will require the full motor current, while they have only a
small contribution to overall power consumption due to their short duration.
11.3.2 Low Velocity and Standby Operation
Because CoolStep is not able to measure the motor load in standstill and at very low RPM, a lower
velocity threshold is provided for enabling CoolStep. It should be set to an application specific default
value. Below this threshold the normal current setting via IRUN respectively IHOLD is valid.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
50
12 STEP/DIR Interface
The STEP and DIR inputs provide a simple, standard interface compatible with many existing motion
controllers. The microPlyer step pulse interpolator brings the smooth motor operation of highresolution microstepping to applications originally designed for coarser stepping.
12.1 Timing
Figure 12.1 shows the timing parameters for the STEP and DIR signals, and the table below gives
their specifications. Only rising edges are active. STEP and DIR are sampled and synchronized to the
system clock. If the signal source is far from the chip, and especially if the signals are carried on
cables, the signals should be filtered or differentially transmitted.
+VCC_IO
DIR
SchmittTrigger
tSH
tDSU
tSL
tDSH
STEP
or DIR
Input
STEP
0.56 VCC_IO
Internal
Signal
0.44 VCC_IO
Active edge
(DEDGE=0)
Active edge
(DEDGE=0)
Figure 12.1 STEP and DIR timing, Input pin filter
STEP and DIR interface timing
Parameter
step frequency (at maximum
microstep resolution)
fullstep frequency
STEP input minimum low time
STEP input minimum high time
DIR to STEP setup time
DIR after STEP hold time
www.trinamic.com
AC-Characteristics
(taking into account possible lowest internal clock generator frequency)
Symbol
fSTEP
fFS
tSL
tSH
tDSU
tDSH
Conditions
Min
120
120
20
20
Typ
Max
4
Unit
MHz
8
kHz
ns
ns
ns
ns
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
51
12.2 Changing Resolution
The TMC2300 includes an internal microstep table with 1024 sine wave entries to generate sinusoidal
motor coil currents. These 1024 entries correspond to one electrical revolution or four fullsteps. The
microstep resolution setting determines the step width taken within the table. Depending on the DIR
input, the microstep counter is increased (DIR=0) or decreased (DIR=1) with each STEP pulse by the
step width. The microstep resolution determines the increment respectively the decrement. At
maximum resolution, the sequencer advances one step for each step pulse. At half resolution, it
advances two steps. Increment is up to 256 steps for fullstepping. The sequencer has special
provision to allow seamless switching between different microstep rates at any time. When switching
to a lower microstep resolution, it calculates the nearest step within the target resolution and reads
the current vector at that position. This behavior especially is important for low resolutions like
fullstep and halfstep, because any failure in the step sequence would lead to asymmetrical run when
comparing a motor running clockwise and counterclockwise.
EXAMPLES:
Fullstep:
Cycles through table positions: 128, 384, 640 and 896 (45°, 135°, 225° and 315° electrical
position, both coils on at identical current). The coil current in each position
corresponds to the RMS-Value (0.71 * amplitude). Step size is 256 (90° electrical)
Half step:
The first table position is 64 (22.5° electrical), Step size is 128 (45° steps)
Quarter step: The first table position is 32 (90°/8=11.25° electrical), Step size is 64 (22.5° steps)
This way equidistant steps result and they are identical in both rotation directions. Some older drivers
also use zero current (table entry 0, 0°) as well as full current (90°) within the step tables. This kind of
stepping is avoided because it provides less torque and has a worse power dissipation in driver and
motor.
Step position
Half step 0
Full step 0
Half step 1
Half step 2
Full step 1
Half step 3
Half step 4
Full step 2
Half step 5
Half step 6
Full step 3
Half step 7
table position
64
128
192
320
384
448
576
640
704
832
896
960
current coil A
38.3%
70.7%
92.4%
92.4%
70.7%
38.3%
-38.3%
-70.7%
-92.4%
-92.4%
-70.7%
-38.3%
current coil B
92.4%
70.7%
38.3%
-38.3%
-70.7%
-92.4%
-92.4%
-70.7%
-38.3%
38.3%
70.7%
92.4%
See chapter 3.2.1 for resolution settings available in stand-alone mode.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
52
12.3 MicroPlyer Step Interpolator and Stand Still Detection
For each active edge on STEP, MicroPlyer produces microsteps at 256x resolution, as shown in Figure
12.2. It interpolates the time in between of two step impulses at the step input based on the last
step interval. This way, from 2 microsteps (128 microstep to 256 microstep interpolation) up to 256
microsteps (full step input to 256 microsteps) are driven for a single step pulse.
The step rate for the interpolated 2 to 256 microsteps is determined by measuring the time interval of
the previous step period and dividing it into up to 256 equal parts. The maximum time between two
microsteps corresponds to 220 (roughly one million system clock cycles), for an even distribution of
256 microsteps. At 12 MHz system clock frequency, this results in a minimum step input frequency of
roughly 12 Hz for MicroPlyer operation. A lower step rate causes a standstill event to be detected. At
that frequency, microsteps occur at a rate of (system clock frequency)/216 ~ 256 Hz. When a stand still
is detected, the driver automatically begins standby current reduction if selected by pin PDN.
Active edge
(dedge=0)
Active edge
(dedge=0)
Active edge
(dedge=0)
Active edge
(dedge=0)
Attention
MicroPlyer only works perfectly with a jitter-free STEP frequency.
STEP
Interpolated
microstep
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
Motor
angle
2^20 tCLK
STANDSTILL
(stst) active
Figure 12.2 microPlyer microstep interpolation with rising STEP frequency (Example: 16 to 256)
In Figure 12.2, the first STEP cycle is long enough to set the stst bit standstill. Detection of standstill
will enable the standby current reduction. This bit is cleared on the next STEP active edge. Then, the
external STEP frequency increases. After one cycle at the higher rate microPlyer adapts the
interpolated microstep rate to the higher frequency. During the last cycle at the slower rate,
microPlyer did not generate all 16 microsteps, so there is a small jump in motor angle between the
first and second cycles at the higher rate.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
53
12.4 Index Signal
An active index output (enable diag_index) signals that the sine curve of motor coil A is at its positive
zero transition. This correlates to the zero point of the microstep sequence. Usually, the cosine curve
of coil B is at its maximum at the same time. Thus, the index signal is active once within each
electrical period, and corresponds to a defined position of the motor within a sequence of four
fullsteps. The index output this way allows the detection of a certain microstep pattern, and thus
helps to detect a position with more precision than a stop switch can do.
Current
COIL A
0
COIL B
Time
INDEX
Current
Time
STEPS
Time
Figure 12.3 Index signal at positive zero transition of the coil A sine curve
Hint
The index output allows precise detection of the microstep position within one electrical wave, i.e.
within a range of four fullsteps. With this, homing accuracy and reproducibility can be enhanced to
microstep accuracy, even when using an inexpensive home switch.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
54
13 Internal Step Pulse Generator
UART
The TMC2300 integrates a high-resolution step pulse generator, allowing motor motion via the UART
interface. However, no velocity ramping is provided. Ramping is not required, if the target motion
velocity is smaller than the start & stop frequency of the motor. For higher velocities, ramp up the
frequency in small steps to accelerate the motor, and ramp down again to decelerate the motor.
Figure 13.1 shows an example motion profile ramping up the motion velocity in discrete steps.
Choose the ramp velocity steps considerably smaller than the maximum start velocity of the motor,
because motor torque drops at higher velocity, and motor load at higher velocity typically increases.
motor
stop
v
acceleration
constant velocity
deceleration
Th
eo
re
t
ica
l
pr
of
ile
Target Velocity
Stop velocity
Start velocity
0
t
VACTUAL
Figure 13.1 Software generated motion profile
PARAMETER VS. UNITS
Parameter / Symbol
fCLK[Hz]
Unit
[Hz]
µstep velocity v[Hz]
µsteps / s
USC microstep count
counts
rotations per second v[rps]
rotations / s
TSTEP, TCOOLTHRS
-
VACTUAL
Two’s complement
signed internal
velocity
calculation / description / comment
clock frequency of the TMC2300 in [Hz]
v[Hz] = VACTUAL[2300] * ( fCLK[Hz] / 2^24 )
With nominal oscillator:
v[Hz] = VACTUAL[2300] * 0.715Hz
microstep resolution in number of microsteps
(i.e. the number of microsteps between two
fullsteps – normally 256)
v[rps] = v[Hz] / USC / FSC
FSC: motor fullsteps per rotation, e.g. 200
TSTEP = fCLK / fSTEP
The time reference for velocity threshold is
referred to the actual microstep frequency of
the step input respectively velocity v[Hz].
VACTUAL[2300] = ( fCLK[Hz]/2 / 2^23 ) / v[Hz]
With nominal oscillator:
VACTUAL[2300] = 0.715Hz / v[Hz]
Hint
To monitor internal step pulse execution, program the DIAG output to provide step pulses
(GCONF.diag_step). It toggles upon each step and thus shows half the microstep frequency. Use a
timer input on your CPU to count pulses. Alternatively, regularly poll MSCNT to grasp steps done in
the previous polling interval. It wraps around from 1023 to 0.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
55
14 Driver Diagnostic Flags
The TMC2300 drivers supply a complete set of diagnostic and protection capabilities, like short to GND
protection, short to VS protection and undervoltage detection. A detection of an open load condition
allows testing if a motor coil connection is interrupted. See the DRV_STATUS table for details.
14.1 Temperature Measurement
The driver integrates a two-level temperature sensor (pre-warning and thermal shutdown) for
diagnostics and for protection of the IC against excess heat. Heat is mainly generated by the motor
driver stages. Most critical situations, where the driver MOSFETs could be overheated, are avoided by
the short to GND protection. For many applications, the overtemperature pre-warning will indicate an
abnormal operation situation and can be used to initiate user warning or power reduction measures
like motor current reduction. The thermal shutdown is just an emergency measure and temperature
rising to the shutdown level should be prevented by design.
TEMPERATURE THRESHOLDS
Temperature
Level
150°C
120°C
Comment
This value is relatively safe to switch off the driver stage before the IC can be
destroyed by overheating. On a large PCB, the power MOSFETs reach roughly
150°C peak temperature when the temperature detector is triggered with this
setting.
Temperature level for pre-warning. In most applications, reaching this level is a
sign for abnormal heat accumulation. The overtemperature pre-warning threshold
of 120°C gives lots of headroom to react to high driver temperature, e.g. by
reducing motor current, or increasing waiting-time in between of two motions.
Attention
Overtemperature protection cannot in all cases avoid thermal destruction
motor current is exceed, e.g. by operating a motor in StealthChop with
automatic tuning parameters not fitting the operating conditions, excess
heat up the driver before the overtemperature sensor can react. This
conduction over the IC die.
of the IC. In case the rated
wrong parameters, or with
heat generation can quickly
is due to a delay in heat
After triggering the overtemperature sensor (ot flag), the driver remains switched off until the system
temperature falls below the pre-warning level (otpw) to avoid continuous heating to the shutdown
level.
14.2 Short Protection
The TMC2300 power stages are protected against a short circuit condition by an additional measurement of the current flowing through each of the power stage MOSFETs. This is important, as most
short circuit conditions result from a motor cable insulation defect, e.g. when touching the conducting
parts connected to the system ground. The short detection is protected against spurious triggering,
e.g. by ESD discharges, by retrying three times before switching off the motor.
Once a short condition is safely detected, the both driver bridges become switched off, and the s2ga
or s2gb flag, respectively s2vsa or s2vsb becomes set. In order to restart the motor, disable and reenable the driver. Note, that short protection cannot protect the system and the power stages for all
possible short events, as a short event is rather undefined and a complex network of external
components may be involved. Therefore, short circuits should basically be avoided.
www.trinamic.com
TMC2300 DATASHEET (Rev. 1.02 / 2019-NOV-06)
56
14.3 Open Load Diagnostics
UART
Interrupted cables are a common cause for systems failing, e.g. when connectors are not firmly
plugged. The TMC2300 detects open load conditions by checking, if it can reach the desired motor coil
current. This way, also undervoltage conditions, high motor velocity settings or short and
overtemperature conditions may cause triggering of the open load flag, and inform the user, that
motor torque may suffer. In motor stand still, open load cannot always be measured, as the coils
might eventually have zero current.
Open load detection is provided for system debugging.
In order to safely detect an interrupted coil connection, read out the open load flags at low or
nominal motor velocity operation, only. A flicker may occur with asymmetric sense resistors and does
not harm. However, the ola and olb flags have just informative character and do not cause any action
of the driver.
14.4 Diagnostic Output
drv_err
The diagnostic output DIAG provides important status information. An active DIAG output shows that
the driver cannot work normally. The index output signals the microstep counter zero position, to
allow referencing (homing) a drive to a certain current pattern. The function set of the DIAG output
can be modified by UART. Figure 14.1 shows the available signals and control bits.
Q S
R
Short circuit (s2vs, s2g) over temperature (ot)
Power stage disable (e.g. pin EN, STANDBY)
DIAG
MUX
Power-on reset
Overtemperature (ot)
StallDetection
(gated by TSTEP