In the previous article, I described replacing the stepper motor drivers on my Graber i3.
The main reason for the upgrade was noise. The old drivers worked, but axis movements produced a characteristic high-pitched sound that I wanted to eliminate.
At the same time, I had no intention of replacing the printer's entire control electronics.
RAMPS 1.4 was perfectly capable of doing its job, and switching to Klipper had already allowed me to work around the main limitations of the old 8-bit controller.
All that remained was choosing new drivers.
In the end, I settled on TMC2209.
But why these particular drivers?
Which Options I Considered
There are many stepper motor drivers available for RAMPS 1.4.
Some of the most common are A4988, DRV8825, TMC2208, and TMC2209.
They all perform the same basic task: controlling stepper motors using step and direction signals from the controller.
However, they differ in their current control algorithms, supported operating modes, and configuration options.
My main criteria were noise level, compatibility with the existing electronics, stable operation, and reasonable cost.
Maximum printing speed wasn't a priority.
After all, I was upgrading an old Graber i3, not building a new high-speed printer.
A4988 and DRV8825 — Proven Solutions
A4988 and DRV8825 were among the most common drivers used in hobbyist 3D printers for many years.
They're inexpensive, well understood, and supported by virtually all popular firmware.
A4988 supports up to 1/16 microstepping, while DRV8825 supports up to 1/32.
However, increasing the number of microsteps doesn't automatically result in a proportional improvement in positioning accuracy.
With these drivers, stepper motors often produce a clearly audible sound, especially at certain speeds.
That doesn't mean A4988 or DRV8825 are bad drivers.
They're perfectly suitable for many applications and are still used in various devices.
But if the main goal of an upgrade is to reduce printer noise, it makes sense to consider more modern alternatives.
TMC2208 — Already Much Quieter
One such option is TMC2208.
Its main advantage for a typical 3D printer is support for StealthChop2 technology.
This control algorithm can significantly reduce audible stepper motor noise.
Instead of the characteristic high-pitched whine, the motor can run much more quietly.
TMC2208 also supports configuration via UART, allowing some operating parameters to be changed through software.
For my Graber i3, the capabilities of TMC2208 might already have been sufficient.
However, there was another interesting option — TMC2209.
Why TMC2209
TMC2209 is similar to TMC2208 in many ways, but offers additional capabilities.
It also supports StealthChop2, which allows stepper motors to operate quietly.
At the same time, TMC2209 supports SpreadCycle, another current control algorithm that can provide more stable motor operation under higher loads and during dynamic movements.
These modes serve somewhat different purposes.
StealthChop2 focuses primarily on reducing noise, while SpreadCycle places more emphasis on the motor's dynamic performance.
However, neither mode is universally better than the other.
The optimal choice depends on the printer's mechanics, movement speeds, and motor load.
Another difference is that TMC2209 supports higher current than TMC2208.
This broadens its range of applications, although the actual allowable current depends on the specific module and cooling conditions.
Maximum current wasn't a deciding factor for my printer, but having some extra headroom was useful.
TMC2209 also supports StallGuard4, a technology for estimating motor load.
Under suitable conditions, it can be used to detect when an axis reaches its end of travel without a separate endstop switch.
However, this feature requires appropriate wiring and configuration.
In my case, it wasn't a reason for choosing the driver.
What mattered most was the combination of quiet operation, sufficient performance headroom, and compatibility with the existing electronics.
UART — Do I Need It?
TMC2209 supports UART, which allows motor current, operating modes, and other driver parameters to be configured through software.
With Klipper, this is quite convenient: many settings can be defined directly in the printer.cfg configuration file.
However, RAMPS 1.4 wasn't originally designed with dedicated UART connections for each driver socket.
Using UART would therefore require additional wiring.
That wouldn't have been particularly difficult for me, but I didn't see a need for it.
My main goal was to reduce stepper motor noise, and TMC2209 can operate in standalone STEP/DIR mode for that purpose.
So I decided not to use UART, and I don't plan to add it in the future.
Of course, without UART, some software configuration features remain unavailable.
But in my case, they didn't offer enough benefits to justify making the wiring more complicated.
As a result, I was able to use modern drivers while keeping the simple RAMPS 1.4 wiring arrangement.
What About Microstepping?
When comparing drivers, people often focus on the maximum number of microsteps.
A4988 supports up to 1/16 microstepping, while DRV8825 supports up to 1/32.
TMC2209 also supports various microstepping modes and internal interpolation up to 256 microsteps.
However, it's important not to confuse smoother movement with positioning accuracy.
Interpolation can make motor operation smoother, but it doesn't turn the mechanical system into a device with an absolute positioning accuracy of 1/256 of a full step.
Print quality still depends on backlash, structural rigidity, the condition of the guides and belts, and other mechanical factors.
That's why the number of microsteps wasn't my main selection criterion.
Stable and quieter motor operation mattered much more.
Does It Make Sense to Install TMC2209 on RAMPS 1.4?
At first glance, combining an old RAMPS 1.4 board with modern drivers might seem unusual.
Today, there are boards with 32-bit microcontrollers, built-in UART support, and plenty of additional features.
But in my case, replacing all the electronics didn't make much sense.
The printer was already running Klipper, with the main calculations performed by a Linux-based TV Box.
Arduino Mega 2560 continued handling microcontroller tasks, while RAMPS 1.4 provided connections for the motors, heaters, and sensors.
Installing TMC2209 allowed me to improve stepper motor control without rebuilding the entire system.
It's important to remember, however, that compatibility depends on more than just the driver's name.
Before installation, you need to check the specific module, pin layout, microstepping settings, and connection method.
Not all TMC2209 modules have exactly the same pinout.
Were More Expensive Drivers Worth It?
When dealing with an old printer, cost always matters.
You can gradually replace almost every component, but at some point, nothing remains of the original Graber i3 except the name.
That's exactly what I wanted to avoid.
TMC2209 offered a reasonable compromise between features, cost, and compatibility with the existing electronics.
They could address the main problem — reducing stepper motor noise — while still providing some additional capabilities.
I didn't need record-breaking speeds or a complicated new control board.
I simply wanted to make the printer I already owned more convenient to use.
Conclusion
Choosing TMC2209 wasn't an attempt to install the most advanced components in an old Graber i3 at any cost.
For me, it was a way to address a specific shortcoming while keeping the existing electronics.
A4988 and DRV8825 remain suitable for many applications, and TMC2208 can also provide quiet operation.
But TMC2209 offers a good combination of quiet operating modes, performance headroom, and additional features.
Importantly, my setup didn't require UART or modifications to the driver wiring.
Of course, installing TMC2209 doesn't fix mechanical problems or turn an old printer into a modern high-speed machine.
But it does allow another step forward in its modernization without completely rebuilding the printer.
What's Next
In the next article, I'll return to another Graber i3 upgrade — installing a bed probe.
I've already described how the probe helped simplify first-layer calibration.
But I haven't yet explained why I chose an inductive sensor instead of the popular 3DTouch.
Both approaches have their advantages and limitations.
That's what I'd like to explore in the next article.