Mini stepper motors replacement

In my search for replacement parts I reached the “stepper motor” phase. So I set out for a search and ended up at my favourite local 3D parts retailer selling what I think are Chinese B-brand stepper motors. While browsing through their offering I noticed they sell small (40mm) and very small (34mm) NEMA 17 replacements, of which the very small looked extremely attractive as an extruder stepper replacement because of the smaller weight and hence smaller inertia of the X-axis. While googling for answers if the smaller torque would be a problem on Wade’s type of geared extruders (the jury still isn’t out, it seems) I also found that the different current rating is of extreme importance and would need to be adjusted in the firmware as well. So, apart from the question if this is a wise thing to do, I’d like to know:

  • Is the different current rating adjustable with M907 on the mini firmware? This would relieve me from having to build and flash my own firmware. This topic seems to convey negative results from M907?
  • If so, what are the units of M907? A, mA, % or a byte value?
  • If not, what particular defines would have to be changed in the firmware? The topic aboveonly mentions DIGIPOT_MOTOR_CURRENT in byte values, but what value is 255 in the Mini firmware?
  • And last but not least: the mentioned stepper motors are rated 12V and I know the Mini has a 24V power supply, does this hold for the stepper motor drivers as well? I read the motors are current driven and stepper drivers seem able to adapt for different voltages, is this true for the drivers on the mini rambo as well?

Long story short, would I be better of ordering this Lulzbot 34mm short NEMA 17 replacement (which has a rated voltage of 2.8!?) or let go of the idea entirely?

Ok, to answer myself and maybe others interested: for stepper motor drivers, current is leading and voltage is adapted. Rated voltage only says something about a (test) condition at which the rated current is drawn. The stepper drivers takes care of the excessive current when different voltages are applied. Source:
So this only leaves the question of changing the stepper motor current in firmware or finding likewise current spec’ed motors.

I think I have seen some of those Chinese B-brand stepper motors. I have not tried to see about getting them to work. Not a real fan of customizing the firmware to try.

As for that other topic he looks to have had a failing RAMBo board there.

In the meantime I’ve found several 1.5A replacements overseas, both 40 and 34mm. So firmware shouldn’t be the problem anymore. Only question is, will the torque be sufficient. I’ve put this on hold for now, but will keep in mind all the possibilities of replacing the stepper motors.

And I’ve learned a thing or two about stepper motors and drivers :wink:

Another thing to consider is that the Digipot that supplies the driver voltage reference is only 5 volts.

Hmm… you made me worry there for a moment but I don’t see any problem with Vref being only 5V?

Vref is responsible for ITripMAX via ITripMAX = Vref / ( 8 × Rs). But let’s assume I want to replace 1.5A rated stepper motors with ~1.5A rated stepper motors, nothing changes for ITrip, let alone ITripMAX and Vrated for the new stepper motors does not depend on Vref or vice versa, as long as Vbb can supply the necessary voltage for the driver current belonging to the internal impedance per phase, which is measured via Rs?

Another remark: I do believe there’s something fishy in the current Lulzbot Marlin firmware, since one of the last remarks in the mentioned M907 topic are

Furthermore, trying to change the voltages with G-Code commands M907 () and M908 did not change the voltage.
) in current Lulzbot code M907 is broken for digipot, I added the handling for the X,Y,Z & E codes to make it work, so no, my test works.

But sticking to ~1.5A motors should prevent triggering that flaw.
A4982-Datasheet.pdf (1.29 MB)

Again, answering myself and hopefully serving others looking for answers: There are two defines in Marlin fw that set max current for Mini.
One in pins_MINIRAMBO.h

#define DEFAULT_PWM_MOTOR_CURRENT  {1300, 1600, 1250} // XY Z E0

and in Configuration_adv.h that overrules DEFAULT_PWM_MOTOR_CURRENT

#define PWM_MOTOR_CURRENT {1300, 1630, 1250} // Values in milliamps