Enabling/disabling stepper power from Arduino due to heat build; NPN transistor?


I currently have 4x stepper motors (not load bearing), which are being controlled by an Arduino. The power source is an external 12V supply, which goes through a LM2596 DC-DC converter to step this down to 5V, which then supplies power to the motors and arduino.

Motor being used: Ebay link
Driver board: X113647

Everything works fine at the moment, but something I have noticed is the motors that are 'idle' get quite warm (they may move once every 60 mins depending on the situation). In the first 5 mins or so, it's warm but not hot, but after this it continues to climb getting hotter (i've only left them 10 mins and they got to around 43C). The drivers themselves aren't too hot (generally 8-10C less than the motors) but also get warm over time and seem to increase along with the motor.

I think the reason for this is because the motor phases are being continually energised to hold position when 'idel' and heat builds as the phase isn't ever switched off (as position doesn't change for a period of time).

Does that sound like what is causing the heat build in the 'idle' motors?

If my theory is correct, I have two ideas to deal with the issue:

  • Turn off the power to the steppers/drivers when there isn't going to be any movement for some time and motor needs to be idle
  • Turn off the motor phases rather than the power to the driver/motor

The first question is, is there a way to turn off the phases from the Arduino via the Stepper library or another stepper library (i.e. AccelStepper. Or is there a way to just turn all phases off outside of the libraries)?

If I opt to turn off the power to the drivers themselves, I imagine I need an NPN transistor or something, is that correct and how you can control external power on/off states?

The X113647 driver has a jumper connecting two pins which enabled positive connections to the board, if this is removed the driver doesn't receive power. My working theory is I remove the jumper, and use a NPN transistor to control power flow between these two pins.


Setting all the stepper pins to Low, seems to work in disabling the phases.

I'm going to do some experiments with this to see if this solves the heat build issue, if anyone has anyy input in on the original post in the meatime, that would be greatly appreciated.


It is normal for stepper motors to be hot - uncomfortable to touch. Your scheme for de-powering them will work but it also means that the motor is not guaranteed to hold position and you may also find that when next energised a motor may sometimes move one step forwards or backwards.


You could PWM the current active phase to reduce current when the motor is stationary - its pretty common
to drop to about half current for an idle motor to reduce the heating. Of course you'll need to use PWM pins
for every phase to do this, and a suitable PWM frequency (experimentation might be needed).

Thanks for the input everyone. After some experimentation I think I'm going to go with setting all the pins to LOW when I know it is idle. The steppers aren't load bearing and this avoids having to add more hardware to control things, plus I will have 4x steppers in total so PWM pins probably are not feasible.

Did some tests and no heat issues after 40 mins, so I think I'm good :slight_smile:

Appreciate you taking the time to get back to me.