Tuning the steppermotors?


Can I tune the voltages of the stepper motors? They are getting really hot and the noise is to loud. I remember doing this on my Makerbot and Printrbot. I have tried googling on how to do this on the rambo board but can’t find anything.


That can be controlled through software on the RAMBo board in the firmware. Which motors are getting warm/making a noise?

I haven’t checked them all, but they feel hot. Do you have any information on how to proceed.

Please be aware that changing this value can cause your steppers to be underpowered, and may lead to printing issues due to skipped steps/etc. You may want to add an aluminium heatsink to the steppers to passively cool them if you think they are getting too hot.

You’re using the TAZ 3 firmware (24v). Configuration_adv.h contains the settings you wish to change- on line 206, 207:

// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
#define DIGIPOT_MOTOR_CURRENT {175,175,220,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)

It will be interesting to see what speeds you are able to reliably maintain with different settings.

Which index corresponds to which axis? Given that Z_DUAL_STEPPER_DRIVERS is not defined, I take it that the 5 values will correspond to X, Y, Z, Extruder 0, and Extruder 1 in some order.

That’s the typical stepper order.

Our extruder stepper is getting very hot as well (>90*C) and in our quest to fix the problem (add heatsink, reduce mechanical resistance, etc)
I also thoroughly tested limiting the current via the DIGIPOT_MOTOR_CURRENT setting in Configuration_adv.h.

To my surprise, the setting did not seem to have any effect.

  • I verified that the necessary #defines are set and that the corresponding code is actually compiled in
  • I tried various setting with no difference what so ever. Setting current to either 0 or 255 makes no difference, no matter the stepper / aka address on the current limiting SPI chip.
  • I tried the newest SPI Arduino library as well as the one shipped with 2014Q3
  • I discovered the M907, M908 gcode instructions
  • I fixed a trivial bug in the M907 command, where M907 X Y Z E was not handled in the case of DIGIPOT_MOTOR_CURRENT set
  • I played around with that, again with it making no difference what so ever.

So… Question:
Am I missing something critical here? If so, what?
Or is our SPI-DIGIPOTI Chip or our SPI BUS shot?

Guess the next step would be reading the datasheet and to dust off my OpenLogicBench and sniff that SPI bus.
Unless someone has a much better suggestion? Can point me at something obvious I’m missing maybe?


3D Printer: LulzBot TAZ4.1
Board: RAMBo 1.3L
Firmware: Marlin 2015-Q1 with settings for TAZ4 from 2014-Q3

Nema 17 I believe are good up to 130c so 90c should be a safe operating temperature.

Lulzbot’s NEMA17 (specs:https://www.lulzbot.com/store/parts/nema-17-stepper-motor) is comfortable in a range from -20 °C to +50°C and has an absolute maximum rating of 80°C. So 90°C is far outside it’s specs and the motor does actually stop working at this temperature.

Maybe you mistook Celsius for the strange, evil, old and obsolete Fahrenheit?

Previously we thought the problem was the mechanical resistance (https://forum.lulzbot.com/t/brand-new-1week-stock-taz5-x-axis-stepper-getting-very-hot/2903/9), but unfortunately we were mistaken :frowning:
The motor is still getting hot.

Doing further research, I discovered that the SPI signal which is sent to the AD5206 digital potentiometeron the Rambo1.3L Board (co-responsible for stepper current limiting) is barely readable by an oszilloscope. In fact, the SPI signal we saw, barely has anything to do with what the firmware is supposed to send to the chip. The logic analyzer could not even differentiate HIGH from LOW. That might be the reason, that setting any kind of current limiting in the firmware, has absolutely no effect. (yes we verified this)

Ok, so AD5204 (the digital potenziometer) is used as voltage divider, with VCC connected to each Ax via 3.3K resistor (measuring 1.74V) and GND connected to each Bx. The voltages on Wx control the current limit for each stepper.

Measuring the voltages after reset:
@W1: 1.74V (Addr: 0, Value: 0xFF, current limit for E0)
@W2: 1.74V (Addr: 1, Value: 0xFF, current limit for E1)
@W3: 0.86V (Addr: 2, Value: 0x80 == DEFAULT, not connected)
@W4: 1.74V (Addr: 3, Value: 0xFF, current limit for Z)
@W5: 0.86V (Addr: 4, Value: 0x80 == DEFAULT, current limit for X)
@W6: 0.86V (Addr: 5, Value: 0x80 == DEFAULT, current limit for Y)

That is definitely not what’s configured in the Firmware.

Furthermore, trying to change the voltages with G-Code commands M907 (*) and M908 did not change the voltage.

So something definitely does not work as it should here…

Can anybody else, please, measure her/his AD5204 and confirm this is a general issue or just an issue with our TAZ?
Any Rambo1.3L Engineers here? The firmware looks correct to my eyes, could this be a hardware bug?

Thanks for any Help!

See https://github.com/ultimachine/RAMBo/blob/master/docs/RAMBoSchem.pdf page 3 for the DigiPot schematic.
(*) 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.

I’m interested to see what changes you applied to make M907 work. Also, what unit is M907 in Lulzbot Marling fw? I can’t for the life of me find an answer online and find the code for M907 a bit fuzzy (about units) since it manipulates the current indirectly via digipot pwm *).

Also, would it be safe to assume that having the correct M907 in my start g-code would result in a correctly operating printer, but leaves the risk of destroying motors if only omitted once (assuming the ITrip of the stepper motor is lower than default firmware default)?

*) found the answer here: http://reprap.org/wiki/MiniRambo#Changing_Motor_Current_.28similar_to_Trimpot.2FDigipot.29