Marlin: Extruder E0 issues with a Nema 34

Hello everyone!

I’ve decided to upgrade my 3D printer to a larger pellet extruder 3D printer. I’ve attached a Nema 34 motor to the E0 extruder, but it doesn’t turn as expected; it barely moves very slowly. I tested the motor in the X-axis, adjusting the correct steps per unit, and it works fine as it should. However, for some reason, it doesn’t work in the E0. I’ve set the same parameters (DEFAULT_AXIS_STEPS_PER_UNIT, DEFAULT_MAX_FEEDRATE, and DEFAULT_MAX_ACCELERATION) as the X-axis to the E0, but still, nothing happens. What am I missing? Thank you for your help.

PS: I’m using a Ramps board

How much current does you NEMA 34 stepper motor need? At a minimum, I’d expect you to need to adjust the current setting on the pot on the driver for that stepper. NEMA34 is big enough that I actually expect you to need a really beefy stepper driver- and you may need to use an external stepper driver when you get far enough to push pellets through it.

BTW, this seems interesting. Make a build thread here and share your work!

1 Like

Thank you for your response. My Nema 34 requires 4 amps, and yes, it does come with a robust stepper driver. :blush: As I mentioned earlier, it performs great on the X-Axis. However, for some reason, it’s not working as it should on the E0.

This is quite confusing because the default value for the Steps per Unit for both the E0 and XY axes in the MP3DP Firmware are the same 200 (DEFAULT_AXIS_STEPS_PER_UNIT { 200, 200, 800, 200 }). So why it doesn’t act the same way?

Essentially, what I’m aiming for is to have the E0 behave just like an axis. I’ve also tested E0 with a nema 17, and it works perfectly. So, there must be some configuration setting that I’m overlooking.

I’m starting this project so I will be sharing pics soon!

There’s some details you might be leaving out.
When you tested the NEMA 17 on the E0 axis, was that with all the settings as they are set for the NEMA 34?

If the NEMA 34 has its own provided driver, how is that implemented? Plugged into one of the POLULU sockets on the RAMPS, or cabled to the RAMPS headers? Pictures of how you connected things during the test are probably needed. Also specific details of the Marlin source you’ve modified.

Did you get any warnings or errors when you rebuilt Marlin with those modifications?

EDIT to add: Also, with 3d Printers, you cannot generally move the E0 ‘axis’ unless the hotend is above the minimum extrusion temperature. Did you heat up the hot end above that for your testing?

Are you getting any errors back from the Marlin console when you command those moves (extrusions)?

Yes, the settings are the same. Essentially, I simply removed the Nema 17 motor, its driver, and the jumper pins, and then connected the Nema 34 driver cables directly to the socket as in this image:

Appart from DEFAULT_AXIS_STEPS_PER_UNIT, I’ve changed the DEFAULT_MAX_FEEDRATE and DEFAULT_MAX_ACCELERATION with no visible effects, so i went back to stock. I’m using the stock MP3DP Firmware and no other changes have been made.

What it does improve is changing the steps at DEFAULT_AXIS_STEPS_PER_UNIT .It improves, but not as it should. I tried diffrerent values from 200 to 10000 and I can’t achieve the same results as in the X axis.

I’m using the M302 S0 command to extrude without a hotend. The motor spins very slowly, with no errors at the console, and what intrigues me is that if I swap it to the X-axis, it works great, using the same steps values and no changes in the driver, so my guess is that is something software related.

Just to be sure…

Are you changing the steps per unit in the LCD, or are you changing it in the firmware configuration.h, recompiling and re-flashing the RAMPS?

While the latter seems better, there is a hidden “gotcha”. M500 saves a bunch of EEPROM, including steps per unit. These changes can be persistent between flashes of the firmware. Re-checking the steps per unit on the LCD will tell you what is currently loaded, or in a pinch, sending M502 will reset everything back to the defaults baked into the firmware.

Also worth checking is the microstepping on your drivers. The DRV8825 drivers are set for 32× microstepping (200 steps/mm) the ST-M5045 (from your picture) allows up to 64× microstepping, which would produce half the speed, but I guess if it works on the X driver, it ought to be the same…

I’d never used M302 S0, and in glancing over the Marlin documentation there is this:


This probably isn’t something that’s been well-tested in the v1 modification of Marlin, so I’ll bet you’re correct that it’s going to take some work there.

If you send M302 by itself, what does Marlin report for state?

If you send an extrusion command on a fresh reboot of the controller, then send M302 S0, then send the same extrusion command, do the results differ? How about if you mix in M302 P1 to turn off cold extrusion checking?

You can also adjust the steps per mm in gcode. M92 E200 should do it. I had the same thought as Dan that you are changing the DEFAULT but not the value in the eeprom.

If you get the setting right, save it to eeprom with M500.

What steps per mm did you use for the X axis.