Tuesday 2 October 2012

Replacing pololu stepper drivers with TB6560s

Edit - Update - Use DRV8825s instead.

I've noticed that this blog post is still getting referenced, so I feel an update is in order. I no longer recommend the TB6560s - they are a bit of work to install and very noisy. At higher currents this noise manifests as artefacts on the print. These days I've replaced my TB6560s with DRV8825s that fit in the sockets on my ramps board - They are less of a hassle than the TB6560s, take up much less room, make nicer prints and I can actually be in the same room as the printer as it isn't nearly as loud.

If I were building a new printer I would also consider the new SilentStepStick based on the TMC2100 as it also looks really nice. It should also be able to drive a lot of current, the spec is for 1.2 amp continuous which is pretty good.

During the end of July and early August this year we put together a reprap 3D printer.  I decided on the mendelmax as it looked rigid and I liked the use of  leadscrews rather than threaded rod.

The design uses the standard ramps board with pololu stepper drivers.  However, Dust (who kindly printed all my plastics) had noted that the y-axis on his machine was very heavy.  With that in mind, I sourced 2.5amp steppers and decided on replacing the pololus on the ramps board with boards based on the TB6560 which I got from ebay.

The only pololu I left was the extruder driver as it didn't need as high a current.  I soldered header pins onto the TB6560 which plug into the sockets on the ramps board.  It never knows that there aren't pololus in the sockets, so no firmware changes are necessary.   

The new drivers are pretty great, they are much easier to set the current on, you just toggle some switches rather than dial a surface mount pot on the pololus and hope you have set a reasonable current (to be fair, you can measure it, it is just annoying to do so).  They also allow me to run at 3amps continuous on all three axis, though it makes a lot of noise and is probably unnecessary except on the y-axis.  At three amps the 2.5amp steppers get very hot, and I started to become concerned about the PLA plastic the machine is built out of melting, so I cable tied a pair of old CPU heatsinks to the X and Y axis steppers (Z duty cycle is too low for it to get hot).  It looks pretty dubious but works really well the steppers barely feel warm.

All this allows the machine to run at some fairly silly speeds.  As I recall, the video below was taken at 300 $^{mm}/s$, 9000 $^{mm}/s^2$ acceleration and 20 $^{mm}/s^3$ Jerk

The machine does sometimes skip in the y-axis at these speeds, particularly when using Cura's default line fill; I've since dialed the acceleration and jerk down to 5000 $^{mm}/s^2$ and 15 $^{mm}/s^3$ and it doesn't seem to miss any steps.  Running that fast also produces heaps of artifacts in the prints, particularly on smaller radius arcs, the machine makes a kind of trilling sound and a wave pattern gets printed into the part.  So I generally run the machine much slower than this for part quality issues.

There were some problems with the stepper drivers I'm using, the 5v regulator on two of the boards was just DOA.  I "fixed" this by soldering a wire from the 5v out of the working regulator to the 5v out pad of the two dead regulators (after cutting the leg).  It works but the remaining regulator gets really hot but has so far been fine.

EDIT -- added some wiring information
The wiring from the pololu socket to the TB6560 board is as follows
Pololu TB6560
STEP $\to$ CLK+
DIR $\to$ CW+
EN $\to$ EN+

Connect the CLK-, CW- and EN- together (as you don't really need anything too fancy) and then run that to any ground pin on the pololo sockets.

To help clear up the necessary wiring, I have bashed together an example wiring diagram for replacing the y-axis pololu driver with one of these TB6560 boards.  Please excuse the shoddy diagram, its 1.30am in the morning :P