Pololu's DRV8825 - not quite the revolutionary driver i was hoping for Tl;dr:

Pololu’s DRV8825 - not quite the revolutionary driver i was hoping for

Tl;dr: Stick with A4988-based ones.

I got all excited when i saw the DRV8825-based stepper drivers coming up - they offered up to 2.5A at 45V with smaller losses than the usual A4988, possibly making them suitable even for larger Nema23 motors. They have 32x microstepping and are supposedly pin-compatible with the A4988. All in all, it sounds like a very nice driver and so i ordered some from @Pololu_Robotics_and with a large “early testers”-discount. Huge +1 to them for the offer and the super-fast shipping (two days from the US to Germany).

The machine i’m using is a Mendel90 configured with 18mm plywood, 12mm rods, 15mm HTD-3M belts, 0.48Nm 2.5A motors and a build envelope of (xyz) 400x200x200mm.

I was super excited to try these and swapped my XYZ drivers for the new ones. Pololu reminds you about this, but i forgot that the !Sleep pin works differently on the new drivers - it’s not pulled on the drivers, so on a typical RAMPS board the drivers will do nothing unless the !Sleep pin is somehow pulled up externally. I decided to add a pullup on the driver itself, which required some finicky soldering.
That got the chips running, but not for long until i shut the whole machine off again. The problem this time round was noise - lots of it. I’m 21 years old, so i guess my hearing at higher frequencies is still a bit better than that of a typical electrical engineer, but i doubt they’d miss a noise this annoying. When the steppers were idling, they gave off a loud high-pitched noise that probably resulted from the 30kHz internal PWM of the DRV8825 getting halved to a 15kHz noise. Even if you can’t hear it yourself, it will probably drive your cats / dogs /children insane.
With some more soldering i put the driver from mixed decay into slow decay mode (fast decay only made the noise worse), which fixed the idle noise, but made the drivers annoyingly loud when moving - no matter what current i set, i assume it somehow messes up microstepping. Still better than the high-pitched idle noise, but loud enough to restrict my printing times to the daytime since the printer was now audible throughout the whole house (mind you, this is a solid brick and concrete-built home, nothing like the typical American wood and drywall houses).
Another issue when combining a RAMPS / Arduino Mega with these drivers is the 32x microstepping. The same configuration the yields 16x microstepping on a A4988 gives you 32x microstepping on the DRV8825. While 32x microstepping should give you a smoother running stepper, those high step rates are too much for an Arduino Mega to keep up. So instead of running faster, the Arduino will choke and slow your machine down unless you go back to 16x microstepping.
While they were running cooler than the A4988s, just a fan blowing over the chips was not enough to keep the chips from overheating at 2.5A. One solution to cool the all-important thermal pad (which not-so-smartly resides on the bottom of the board) was to add longer “pin headers” made from stripped wire, allowing the cooling fan to blow over the underside of the board. On another board, i soldered a makeshift copper heatsink made from stripped mains wiring to the bottom pad. Both solutions were enough to keep the drivers cool with a fan blowing over them, so those two drivers glued onto the that aluminum heatsink would probably work without a fan. They did supply enough current to get my motors up to 120°C (250°F) after an hour of printing, which was way too hot. I’d have to either add a fan (not so nice for printing ABS in a cool environment like my basement) or somehow add heatsinks.

Just today i switched back to the A4988s, which don’t offer that much less performance, but run much quieter and “just work” without requiring SMD soldering skills in e.g. a RAMPS. Once you add heatsinks to the A4988, they are very reliable and quiet drivers, not to mention that a StepStick costs half as much as a DRV8825-based board.
While the DRV8825 does manage higher current levels that the A4988, and i could have lived with having to modify the driver, the annoying noise levels killed the DRV8825 for me.

Thank you, very usefull information

Thanks for the info. I have 4 of the new drivers too, now I am thinking maybe not install them.

Couple of your “problems” seem self-inflicted. What exactly are you doing that requires the current turned up as much as it is on your drivers? Unless you’ve got some extremely underpowered or mismatched stepper motors, you shouldn’t have to turn your drivers up enough to even require heat-sinking. My A4988s aren’t heatsinked at all and have never hit thermal protection shutdown. I see the huge heatsinks you have attached to your A4988s and can’t help but think something you’re doing is just flat-out incorrect. Exactly what model of stepper motor are you pairing these with?

This is also why you’re getting such a noticeable high pitch whine.

And if the 1/32 microstepping is too much, why not drop down to 1/16? There’s nothing that says you are required to use 1/32 microstepping and if you were really serious about it, you’d actually just get a 400 step/rev stepper as the mechanical steps are more accurate than going higher resolution microstep.

I’m still very thankful for the information, but I feel maybe you don’t quite have these paired up with a proper stepper motor.

@Roy_Griffith Please do try them out, i’m always interested in other operator’s experiences.

@ThantiK I like my printer fast :slight_smile: Since it has a larger build envelope than usual, the y-carriage is rather heavy at almost 1.5kg, the x-carriage clocks in at half a kilogram. I can achieve “regular” printing speeds with the y-axis and 250mm/s, 8000mm/s², 20 jerk on the x-axis. On each of the four printers i’ve built so far i’ve needed heatsinks to get up to sane printing speeds, using different motors on each printer.
Those heatsinks i’ve glued onto the A4988 were ones that i had lying around and knew that they would work. As expected, they are barely getting warm :stuck_out_tongue:
The noise i saw with the DRV8825 didn’t change much as i tried out different current settings, so it could be that they really just didn’t like my motors (or i’m overly sensitive to noise). I’m disappointed mostly because the A4988 does a much better job at staying quiet under the same circumstances (it does gets noisier as you increase current to unhealthy levels, though). I’ve also got a CNC mill build coming up next year and was hoping to use the DRV8825 with higher-voltage Nema23 motors, since the specs suggest that would be entirely possible, but now i’d rather spend some premium on leadshine drivers.

The steppers i’m using these with are 42BYGH0425 (ebay). Performance-wise they “feel” very similar to e.g. a QSH4218-51-049 that i’ve use on another printer.

I did go back to 1/16 microstepping, but i think even that’s more than enough resolution as long as we’re squeezing our plastic from nothing smaller than .25mm nozzles. It does make the printer feel a bit smoother, though, so i guess 1/16 is the sweet spot for RepRap-class 3D printers.

I’d already identified the lower PWM frequency as potentially problematic with these drivers. Also, the max current is only attainable when the thermal pad on the bottom of the chip is forcefully held at 25c regardless of how much power it’s dissipating. This is true for most silicon these days, so take all current ratings with a generous fistful of salt.

Still like to hear from others testing them out, the motors on my prusa make a LOT of noise, but on other printers they’re significantly quieter, not sure if it’s something to do with noisy supply or something else.

Another possibility that I have yet to try is the Toshiba TB6064: http://www.ecomorder.com/techref/ecomprice.asp?p=416074
@James_Newton has a fair bit of experience with them.

The 6064 is probably overkill for this application. And it’s a chopper, so it will have the same issues with whine, mid band resonance, and motor heating. The 6064 is better for high power, medium speed drive like that on a CNC machine.

I would actually love to see someone try the Linistepper driver. It’s a combination of old school linear drive (which eliminates the chopper whine, resonance and motor heating) with active current regulation (which avoids the speed issues and higher power requirement of linear drivers).

And it is fully open source, using a PIC and some TIP122 drivers. It costs more ($30 each in sets of 3) than the Polulu drivers, but it is MUCH less prone to frying and costs about $5 to repair if it does; you just replace the drive transistor set.

People don’t seem to want to try it for two reasons:

  1. It is a unipolar driver, and there is a religious bias for bi-polar drive in this community, which I don’t think is justified on the X and Y axis. The Z should stay bipolar for the extra torque, but X and Y are more about speed, and bipolar torque drops off with higher speed. It does require a motor with more than 4 wires, which can be a real problem if you invested in 4 wire motors.

  2. It takes up a lot more room and needs a big heat sink. I personally don’t understand why that is such a big deal; all the electronics should be in a box anyway, so it’s protected from accidental shorts and provided with ventilation air flow. If I build one (I just have a small CNC machine) I will put all my electronics in a PC case with the PC that runs it.

I’m working with a local friend to try out the Linistepper on a Mendel Max when he and find the time. I truly believe that it will spin the X and Y motors faster, smoother, and at higher speeds. They sound sweet, and have more than enough power for the application. Someone should give one a try… If you use the kit, I’ll buy it back from you if it doesn’t work out.
http://www.ecomorder.com/techref/ecomprice.asp?p=416015

@James_Newton I’d say #1 would be holding back most users - bipolar 4-wire steppers are the most common and probably also the cheapest kind of stepper driver when you’re going for Nema17 ones. And while space isn’t such a big deal for me personally, power consumption would be. I assume the Lininstep works, well, like a linear power regulator? So it would waste about 8V if you’re running a 2A, 4V stepper with a 12V supply? So, with four axes, you’d generate 64W of heat (and therefore waste 64W of perfectly fine electricity) - that would nearly double the power draw of your average Mendel-class printer and quite possibly generate some significant fan noise.
@John_Bump I’ve looked into the TB6064 board you’re suggesting, and it is definitely overkill for any Reprap. But it looks very nice for even larger CNC mills - if those DRV8825 i’ve got lying around don’t want to work well with Nema23 motors, i’ll definitely get some of the TB6064.

Yes, it’s a linear driver, so it does waste power in the drive transistor. Choppers actually waste power in the motor due to the eddy current and other AC losses in the coils. The Linistepper (Lini-stepper) doesn’t incur those losses, but the advantage there isn’t enough to fully make up all the linear heat loss, so it does require a bit more power. It doesn’t require as much more as you are calculating, because it actively regulates the power. Think of it as a low drop out power regulator. Honestly, 12 volts and 2 amps are the low end of the power curve for most of the drivers I work with in the CNC world. At that low a requirement, I don’t think you would see much difference between the Linistepper and a chopper in terms of the power used. I run Linisteppers at 24 volts, 2 amps (each axis) off of a pair of 300W PC power supplies. You should be able to run 12 volts 2 amps on 2 axis with a single 300W PC supply without any problem.

My Linisteppers have worked great. The only problem is heat dissipation since I’m driving a cnc mill with them. I’m thinking about moving them over to the 3d printer and getting a set of the TB6064’s, purely because of the heat issue: the mill works great from late september to april but I can’t get heat out fast enough during the summer.

John, what voltage and amperage are they running at? And what type heatsink? Mine get toasty, so I use a CPU cooler.

12V, 3.4A/phase, heatsink is 30cm on a side, 20cm deep, with two high-speed 110vac fans blowing on it. The problem is my workshop is unheated/cooled, so mid-summer it’s 44C in there.

Note I’m not mad at them: they do a great job. I’m just running them at the limit of what they’re designed for, in a bad environment.

Heh. Cool. You’re pushing them past their limit. Im jazzed they handling it. I’d like to see a polulu do that. Anyway, yes, you need to move up to 6064s. If you try the Linisteppers on a 3d printer, I’ll give you a 6064 kit. And if you document the 6064s I’ll refund your price on another one.

Well now I have to, don’t I? Heh. But boy the linis have been charmers. (Once I realized that I mistakenly set up 18th-step as 16th-step in software, which is why my test samples were coming out just slightly the wrong size. Sheesh.)

I’m not sure that all these problems are intrinsic problems with the DRV8825, they’re more like problems with the Pololu board design.

Of course the sleep, enable etc. pins on the chip need to be pulled to the right states for the chip to work, and if that’s not the case then that’s the fault of the board design.

Trying to keep the same small breakout board form factor as Pololu has used for the other Allegro ICs and keep the same pinout (or a compatible pinout) for all the different ICs is intrinsically going to be limited, and sooner or later the chips will be different enough that it’s not practical.

The decay mode should be chosen appropriately based on the application and the tradeoffs you want to make - and it should be broken out to a jumper on the board so it can be changed.

Finally, in terms of thermal performance, the heat isn’t really getting dissipated by conduction out through the plastic package of the chip to a heatsink glued on top - that’s a path of high thermal resistance. Most of the heat is conducted out through the metal leadframe and in particular the metal paddle which is exposed on the bottom of the package and soldered to the groundplane on the board.

The board really has to be designed properly for good thermal performance - with a generous amount of groundplane area around the IC, well connected thermally to the exposed paddle and the other ground pins on the IC. There should be as much groundplane as possible on both layers, with plenty of via stitching connecting the two layers with low (thermal) resistance. The exposed paddle also needs to be soldered properly.

The copper on the board is where most of the heatsinking actually happens - the temperature of the silicon is a strong function of the PCB layout design, and a weaker function of a heatsink glued to the top of the plastic, because the thermal path to the heatsink is high resistance and the thermal path to the board groundplane is quite low resistance. 2-ounce copper should also be used, preferably. I think the tiny Pololu boards intrinsically have bad thermal performance, no matter how the layout is designed, just because they’re so small and there is just so little groundplane area available.

These chips really need to go on a board that is bigger than the tiny Pololu breakout boards, designed for good thermal performance, with the decay mode and microstepping bits exposed on jumpers that can easily be changed, with the enable and sleep lines either patched out or pulled to a proper logic level on the board.

Excellent comments, Luke! Have you seen the “power peg” idea where the PCB has a big thru hole under the chip so the paddle touches a copper cylinder which passes heat thru that hole to a heatsink on the bottom of the board?

Just to make this clear: The DRV8825 can put out a ton of current without overheating - enough to soften and bend my x-end, printed from ABS. It would be enough to have the chip on the bottom and the thermal pad connected via a couple of vias to the other side (and maybe attach a small heatsink to that). @Whosa_whatsis posted about a design that does this right.
The Pololus heat up much more, because apparently, their integrated mosfets have a higher resistance in regular operation. It wouldn’t be that much of a hassle for the manufacturer to just include beefier mosfets, but i guess it would cannibalize sales of the higher-end parts.

View of upcoming heat tech: thermalcore, which is a single layer of thin flexible pcb printed on a solid chunk of aluminium. The hot IC’s love being thermally bonded to (but electrically insulated from) an enormous heatsink. Routing’s tricky, and rework is difficult, but the thermal performance is awesome.