DRV8825 vs A4988

Hi,

I have a question about the DRV8825 driver from what i can gather is superseeding the A4988 and the latest Pololu DRV8825 is revisioned to replace A4988 without hardware modification.

My knowledge about how stepper motors work and what all the values mean is very new to me and i keep reading forums and sites to learn. I have gathered that the 8825 can use 1/32 resolution and higher current this sounded better to me but like i said i just starting to learn these things, then i came across a post where kuraasu answered about geared motors for better resolution and that drivers with 1/32 had the same effect as 200 vs 400 motor with 1/16.

My question about this is this a “good” way to make improvement to the resolution would the prints be more sensitive for motors returning to full step when power off or am i going about this all wrong?

Hi Duragz,

about the resolution: you’re right, both motor type and driver microstepping are part of the equation:
200 steps per rev. motor and x16 microstepping driver = 3200 microsteps per revolution.
400 steps and x16 = 6400 microsteps, and
200 steps and x32 = 6400 microsteps, too. The slightly overkill version would be
400 steps and x32 = 12800 microsteps.

The commonly available DRV8825 boards use the same pin layout and are therefore “Pololu-compatible”, i.e. they can be used to replace any other stepper driver board of that pin layout. Note however, that the K8200 controller board as a default has all three mode select pins on high, which will set most drivers to their maximum microstepping mode. This pre-setting can be changed by scratching three short circuit paths if necessary. The board is prepared for the usual 3x2 pin headers for mode select function, but the default MS setting is 111.

This pre-selection of x32 microstepping when simply plugging in DRV8825 driver boards is most important for the E axis. While the extruder would surely benefit from more resolution for slow movements, it is also the fastest axis in the printer during retracts. For the default value of 600 steps per mm, the maximum speed calculates as follows:
[max steps / s] / [steps / mm] = [max speed mm / s], or in numbers
(40000 steps/s) / (600 steps/mm) = 66.67 mm/s.
With the x32 microstepping, the E steps per mm would be 1200:
(40000 steps/s) / (1200 steps/mm) = 33.33 mm/s.
Thus, the retract motion will be slowed down from the set value of 65 mm/s (in Slic3r) to 33.33 mm/s, because the firmware cannot drive the E stepper any faster. Obviously, the same would happen if a 400 steps/rev motor is used in the extruder, and with the 400/x32 combination the max speed would be further decreased down to 16.67 mm/s.

For the X and Y axes, it’s a different picture. They only have 64.25 steps per mm in the default config (theoretical value 64.0), so they’re far away from their step-frequency speed maximum:
(40000 steps/s) / (64.25 steps/mm) = 622.6 mm/s.
Anyways, this value cannot be reached since the axis is limited to 500 mm/s by the max feedrate setting.
With the x32 drivers, you can double the axis resolution (128[.5] steps / mm, calibrate with a test print to find out whether the .5 is ok or not), and could still use speeds exceeding 300 mm/s. Again, the same is true for 400/x16. The 400/x32 combo would, not surprisingly, increase the resolution by another factor of two and limit the (travel) speed to approx. 155 mm/s.
The lateral movement from a single microstep is of course the inverse of the steps per mm value:
200/x16: 0.016 mm,
200/x32 and 400/x16: 0.008 mm, and
400/x32: 0.004 mm.
(All values rounded to micrometers.)

Using different pulleys and belts may of course alter all those numbers due to different axis calibration.

Last one: the Z axis. Here, the question about the behavior of the motor when current is switched off is important (the other three axes are simply not switched off during printing). Using x16 or x32 drivers won’t make a difference, since the motor will tend to move to the nearest fullstep angle when idle. In contrast, this means that it definitely does make a difference whether you’re using a motor with 200 or 400 steps per rev, since the fullstep angle is of course 1.8° and 0.9°, respectively. Speed on the other hand is fairly unimportant, since most movements are very short (one layer height) and acceleration is low. Resolution is already quite good (0.4 micron per microstep, 6.25 micron per fullstep), so there’s no real need for an increase here - but it won’t hurt, either. As for the motor-off-fullstep issue: chosing a matching layer height reduces the occurance of this problem to a single time per print job: at the beginning of the first layer.

Final point (ok, that makes the previous one the second-to-last one, but let’s not split hairs): current. It’s true that most DRV8825 drivers can handle more current than the ones base on the A4988. But you have to take into account that you don’t use the full current, since you set a reduced reference voltage on the driver. Unfortunately, you cannot directly use the same ref voltage on both drivers.
A4988: 0.05 Ω shunts, I_motor between 1.06 and 1.37 A (0.425 and 0.55 V, respectively),
DRV8825: 0.1 Ω shunts, I_motor between 1 and 1.4 A relates to a V_ref range of 0.5 to 0.7 V.
See the Pololu website or the RepRap wiki for details on the calculation (apart from the resistors, the math is different, too).

Cheers,
kuraasu

Thanks for that very educating answer

Gave a good perspective on how good the default hardware is, i’ll do the structural upgrade/changes first then see if i feel like overkilling it just for educational purposes :slight_smile:

Hi kuraasu,
I have a question about adjusting micro steps on A4988.
In the Marlin firmware there are the values 64.25 for X and Y axis (full steps).
The Z-Axis has 2560 (micro)steps.
When dismounting the A4988 there are no jumpers set (and settable without soldering).
So, all A4988 should be running with full steps, I think.
Could it be possible, that the firmware does a calculation on the step values?

If in the future I want to use an additional Extruder will have to change the board.
The RUMBA has microswitches to adjust the micro stepping. How would the setting of jumpers be in this case?
Or should I set all switches to LOW (like on the stock PCB)?

Cheers
schumsel293

Hi schumsel293,

[quote=“schumsel293”]In the Marlin firmware there are the values 64.25 for X and Y axis (full steps).
The Z-Axis has 2560 (micro)steps.[/quote]
no, both are microsteps.

More precisely: the firmware does not distinguish between full or microsteps at all, it’s just “steps” there. Since the Pololus are set to use microstepping, each firmware step is interpreted as a microstep by the motor driver.

That’s right, there are no jumpers. But the board has narrow bridges between the pins; you can see them easily on the backside. The three mode select inputs are therefore all set to high level by default, which means x16 microstepping for the A4988 and x32 microstepping for the DRV8825 drivers.

[quote=“schumsel293”]If in the future I want to use an additional Extruder will have to change the board.
The RUMBA has microswitches to adjust the micro stepping. How would the setting of jumpers be in this case?[/quote]
It depends on the drivers and the microstepping you want to use.
A4988 and x16: 111,
DRV8825 and x16: 001,
DRV8825 and x32: 111 (among others)

Cheers,
kuraasu

Hi kuraasu,

thanks for the quick response.
Now I understand the logic of micro stepping.
When reading your post from Oct. 12, 2013 again I now noticed, that you mentioned the existence of those narrow bridges on the board already.

Cheers
schumsel293

Hy kuraasu,
why 64,25 instead of the round 64 value ? I’m sorry but I’m not a Mathematic or electronic specialist :wink:

[quote=“Tag”]Hy kuraasu,
why 64,25 instead of the round 64 value ? I’m sorry but I’m not a Mathematic or electronic specialist :wink:

The theoretical calc assumes that the pulleys and belts are absolutely exact measured.
This will not happen in the real world.

I think the 64.25 result from testing to be the “right” value, taking the tolerances into account.
But that may differ from machine to machine.

cheers,

Christian

Hi, if you wanted to use the DRV8825 as a replacement for the A4988 and only use the 16th micro stepping, it looks like you would only need to cut off two of the header pins from the driver board, and set voltages with the pot (saves cutting tracks on the main board).

Looking at the data sheet for the DRV8825
ti.com/lit/ds/symlink/drv8825.pdf Pages 10 and 13

It looks like the mode inputs have pull down resistors, so if unconnected would stay low.
For 16th micro stepping only mode 2 needs to be high, so not connecting mode 0 and mode 1 would achieve this.

pololu.com/picture/view/0J4231
So cutting off the M0 and M1 header pins would give a direct replacement.

I haven’t tried this yet but will over the weekend as I’m converting the Z axis to twin motor / leadscrew and want to use a DRV8825 to handle the increased current but don’t need 32nd stepping (as kuraasu points out with a 2mm Z axis and 200 steps per rotation, without micro stepping the resalution is 0.01mm. Do we need it on that axis).

then i came across a post where kuraasu answered about geared motors for better resolution and that drivers with 1/32 had the same effect as 200 vs 400 motor with 1/16.???

== crossword puzzles ==

I can verify that these are good upgrades for the K8200:

1.) Replace A4988’s with DRV8825 for X and Y

Replace the X and Y axis A4988 stepper drivers with DRV8825’s to double the printer precision. Just swap in the 8825’s and DO NOT cut any traces or pins on the controller. Adjust the control voltage on the 8255’s to 0.92v. Edit Configuration.h to double the STEPS_PER_MM for each of X and Y from 64.25 to 128.5 and re-flash your controller.

Result: The X and Y axes will automatically have twice the resolution, resulting in finer prints with fewer “jaggies.”

2.) Replace the X and Y 1.8° stepper motors (42BYGHM811) with 0.9° steppers (42BYGHM809).

These motors are the same size and appearance as the stock stepper motors, but take twice as many pulses (400 instead of 200) to complete a full revolution. Edit Configuration.h to (again) double the STEPS_PER_MM for each of X and Y and re-flash your controller.

Result: The X and Y axes will again have twice the resolution, resulting in finer prints with fewer “jaggies.”

The best part is that you do not need to make any changes to your settings in Slic3r or Repetier, which means that you can print old .gcode files without re-slicing them. The printer will just know that it has twice the precision that it had before each upgrade.

See also: viewtopic.php?f=47&t=16104