TMC2225 is Similar to TMC2208, it is an ultra-quiet two-phase stepper motor driver, continuous drive current 1.4A, peak current 2A, voltage range 4.75V-36V, 256 subdivision. The flexible microPlyer interpolation unit provides up to 256 subdivisions, allowing perfect sinusoidal control even in systems with limited pulse frequencies; these are also designed because stealthChop2 ultra-quiet technology is widely used in 3D printing. Compatible with existing 3D printer electronics, eliminating the expensive costs of redesign. With a standard step/dir interface, it is easy to use. It can replace the original TMC2100, lower heat, especially for 3D printing market.
- UART configuration interface (9600-500k Baud)
- Power tube built-in drive current 1.4A ,peak current 2A, voltage range 4.75V-36V
- Up to 256 native microsteps (without interpolation)
- CoolStep ™ current dynamic adjustment technology, can save 70% of the energy
- stealthChop2 - faster motor acceleration/deceleration than stealthChop
- dcStep ™, stallGuard2 ™ stall detection technology
- Automatic stealthChop and spreadCycle switchover depending on velocity
- Hardware compatible with StepStick and Pololu A4988 Stepper Driver
- Components on bottom PCB side for better heat emission
- Automatic standby current reduction
- SteaClthhop mute technology
- spreadCycle - highly dynamic motor control chopper
|Configuration||CFG Pins or UART|
|Native Microsteps||up to 1/256|
|Logic Voltage (VIO)||3-5V|
|Motor Voltage (VM)||5.5-36V|
|Motor Phase Current max||1.2A RMS, 2.0A Peak|
|Internal V- Regulator||enabled|
|VM||Motor Supply Voltage|
|VIO||Logic Supply Voltage|
|A2||Motor Coil 1|
|A1||Motor Coil 1|
|B1||Motor Coil 2|
|B2||Motor Coil 2|
|STEP||STEP input (internal pull-down resistor)|
|DIR||DIR input (internal pull-down resistor)|
|EN||Enable Motor Outputs: GND=on, VIO=off|
|MS1||Microsteps resolution configuration (internal pull-down resistors) MS2, MS1: 00: ¼, 01: ⅛, 10: 1/16, 11: 1/32|
|RX||UART RX, Directly connected to the PDN|
|TX||UART TX, Connected to the PDN via a 1K resistor|
|DIAG||Diagnostic output. Hi level upon driver error. Reset by ENN=high.|
|SPREAD||Chopper mode selection: Low=StealthChop, High=SpreadCycle|
|VREF||Analog Reference Voltage|
The TMC2225 outputs continuous motor current up to 1.4A and peak current up to 2A. Therefore, the reference voltage of the driver module should not exceed 1V. At the same time, the driver module must be dissipated, otherwise it will affect the life of the driver module.
Motor Current Setting (Same As TMC2208)¶
The best way to set the motor current is by measuring the voltage on the Vref pin (0…2.5V) and adjusting the voltage with the potentiometer. The maximum settable motor current is 1.77A RMS (0.11Ohm sense resistors), but the SilentStepSticks can only be used up to 1.2A RMS.
Irms = (Vref * 1.77A) / 2.5V = Vref * 0.71
Vref = (Irms * 2.5V) / 1.77A = Irms * 1.41 = Imax
Vref -> Voltage on Vref pin
Irms -> RMS (Root Mean Square) current per phase (Irms = Imax / 1.41)
Imax -> Maximum current per phase (Imax = Irms * 1.41)
1. Vref measures Gnd and the voltage at the middle of the potentiometer.
2. Do not connect the motor when measuring the voltage, otherwise it is easy to burn the driver.
3. Power should be connected when measuring voltage, do not just connect USB power supply.
4. Please pay special attention to directions!
OTP Setting (Refer to TMC2208)¶
With the TMC2208 Configurator you can change the settings and program the OTP (One-Time-Programmable) memory of a Trinamic TMC2208 via the UART interface.
To run the program:¶
- Install ScriptCommunicator
- Download TMC2208.scez
- Start the TMC2208.scez file with the ScriptCommunicator: ScriptCommunicator TMC2208.scez
- Choose the right serial port and click Connect
- Modifications in the Configurator are directly transmitted
The OTP bits can be programmed only one time. If you enable spreadCycle then TOFF cannot be 0 (null).
You can use every RS232 serial adapter with 0-5V logic levels (e.g. FTDI-Breakout) and the SilentStepStick Tester/Programmer can be used as connection adapter.
The jumper next to the PDN_UART pin has to be closed on the TMC2208 SilentStepStick to enable the pin access via the pin header.
Firmware Setting (Same As TMC2208)¶
You don't need to set the firmware, just need to set the microstep to the firmware through MS2, MS1, usually it is 16 microsteps.
If you want use UART mode, Please confirm that your wiring is correct.
And then，you can perform some column configuration on the driver through firmware. The setup steps are as follows:
For your convenience, we have made adjustments to all the new TMC drivers in the new version. We have added pin headers that extend the board for the position where you may need wiring (SPI or UART).
For the UART, we added a 1K resistor to the board, providing RX and TX directly, and you don't need to solder.
For F6 or similar boards, please forget the above two points and cut off the extended pin headers, They are of no use to you. Just install it directly on the board, and following the instructions of the board.
For the board that needs wiring, please refer to the picture below:
Remove the "//" in front of the axis you need to use the TMC2225 driver，and change the stepper driver type，I assume you need the XY axis.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/** * Stepper Drivers * * These settings allow Marlin to tune stepper driver timing and enable advanced options for * stepper drivers that support them. You may also override timing options in Configuration_adv.h. * * A4988 is assumed for unspecified drivers. * * Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC5130, TMC5130_STANDALONE * :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE'] */ #define X_DRIVER_TYPE TMC2208 #define Y_DRIVER_TYPE TMC2208 //#define Z_DRIVER_TYPE A4988 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define E0_DRIVER_TYPE A4988 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 //#define E4_DRIVER_TYPE A4988
Here, I usually recommend using the default value. But if you need to configure the current and subdivision, you can do it in Configure_adv.h. If you want to configure other options, please read the TMC2225 datasheet to make sure you know the result of your own operation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
// @section tmc_smart /** * To use TMC2130 stepper drivers in SPI mode connect your SPI pins to * the hardware SPI interface on your board and define the required CS pins * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). * You may also use software SPI if you wish to use general purpose IO pins. * * You'll also need the TMC2130Stepper Arduino library * (https://github.com/teemuatlut/TMC2130Stepper). * * To use TMC2208 stepper UART-configurable stepper drivers * connect #_SERIAL_TX_PIN to the driver side PDN_UART pin with a 1K resistor. * To use the reading capabilities, also connect #_SERIAL_RX_PIN * to PDN_UART without a resistor. * The drivers can also be used with hardware serial. * * You'll also need the TMC2208Stepper Arduino library * (https://github.com/teemuatlut/TMC2208Stepper). */ #if HAS_TRINAMIC #define R_SENSE 0.11 // R_sense resistor for SilentStepStick2130 #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256 #define X_CURRENT 800 // rms current in mA. Multiply by 1.41 for peak current. #define X_MICROSTEPS 16 // 0..256 #define Y_CURRENT 800 #define Y_MICROSTEPS 16 #define Z_CURRENT 800 #define Z_MICROSTEPS 16 #define X2_CURRENT 800 #define X2_MICROSTEPS 16 #define Y2_CURRENT 800 #define Y2_MICROSTEPS 16 #define Z2_CURRENT 800 #define Z2_MICROSTEPS 16 #define E0_CURRENT 800 #define E0_MICROSTEPS 16 #define E1_CURRENT 800 #define E1_MICROSTEPS 16 #define E2_CURRENT 800 #define E2_MICROSTEPS 16 #define E3_CURRENT 800 #define E3_MICROSTEPS 16 #define E4_CURRENT 800 #define E4_MICROSTEPS 16 /** * Use software SPI for TMC2130. * The default SW SPI pins are defined the respective pins files, * but you can override or define them here. */ //#define TMC_USE_SW_SPI //#define TMC_SW_MOSI -1 //#define TMC_SW_MISO -1 //#define TMC_SW_SCK -1 /** * Use Trinamic's ultra quiet stepping mode. * When disabled, Marlin will use spreadCycle stepping mode. */ #define STEALTHCHOP /** * Monitor Trinamic TMC2130 and TMC2208 drivers for error conditions, * like overtemperature and short to ground. TMC2208 requires hardware serial. * In the case of overtemperature Marlin can decrease the driver current until error condition clears. * Other detected conditions can be used to stop the current print. * Relevant g-codes: * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given. * M911 - Report stepper driver overtemperature pre-warn condition. * M912 - Clear stepper driver overtemperature pre-warn condition flag. * M122 S0/1 - Report driver parameters (Requires TMC_DEBUG) */ //#define MONITOR_DRIVER_STATUS #if ENABLED(MONITOR_DRIVER_STATUS) #define CURRENT_STEP_DOWN 50 // [mA] #define REPORT_CURRENT_CHANGE #define STOP_ON_ERROR #endif /** * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD. * This mode allows for faster movements at the expense of higher noise levels. * STEALTHCHOP needs to be enabled. * M913 X/Y/Z/E to live tune the setting */ //#define HYBRID_THRESHOLD #define X_HYBRID_THRESHOLD 100 // [mm/s] #define X2_HYBRID_THRESHOLD 100 #define Y_HYBRID_THRESHOLD 100 #define Y2_HYBRID_THRESHOLD 100 #define Z_HYBRID_THRESHOLD 3 #define Z2_HYBRID_THRESHOLD 3 #define E0_HYBRID_THRESHOLD 30 #define E1_HYBRID_THRESHOLD 30 #define E2_HYBRID_THRESHOLD 30 #define E3_HYBRID_THRESHOLD 30 #define E4_HYBRID_THRESHOLD 30
Please submit any technical issue into our forum