I'm trying to control stepper motor(NEMA 23/3A per phase) datasheet

I'm using Leadshine M542 Microstepper Driver datasheet

Its controlled by an Arduino UNO with simple potentiometer that can control the speed of the motor.

After starting the motor motor dissipate more heat(about 60 degree of Celsius) than usual.What is the solution for reduce heat dissipation of the motor?

Arduino code

#define DIR 8
#define STP 9
#define POT A0

unsigned int val;

void setup() {
  pinMode(DIR, OUTPUT);
  pinMode(STP, OUTPUT);

  digitalWrite(DIR, HIGH);


void loop() {
    val = map(analogRead(POT), 0, 1023, 150, 1500);
    digitalWrite(STP, HIGH);
    digitalWrite(STP, LOW);
    delayMicroseconds(10  0);

  • \$\begingroup\$ more heat than usual? What's usual? Or more heat than you want? What have you programmed the M542 to deliver? A stepper motor always dissipates power, moving or not, and always dissipates the amount the controller has been programmed to deliver to it. \$\endgroup\$ – Neil_UK Nov 13 '17 at 5:11
  • \$\begingroup\$ 60 degree of Celsius.Normally, I never see that amount of heat at any stepper motor. I added the code also. \$\endgroup\$ – user_fs10 Nov 13 '17 at 5:34
  • \$\begingroup\$ You have to find how you reduce the current when the motor doesn't move. When it moves, the voltage is applied against BEMF, which is a kind of reversed voltage, proportional to velocity, so the current is limited. When velocity is zero, current is higher, normally set by the driver. Most drivers have an option to set lower current when stopped. \$\endgroup\$ – Gregory Kornblum Nov 13 '17 at 5:48
  • \$\begingroup\$ @GregoryKornblum In my application motor always rotating. Is there any problem of my Arduino code? \$\endgroup\$ – user_fs10 Nov 13 '17 at 7:09
  • \$\begingroup\$ No idea, i understand mitors, less the code. \$\endgroup\$ – Gregory Kornblum Nov 13 '17 at 7:13

60C is not an unusually high temperature for a stepper motor, though it is hot enough to surprise somebody who doesn't expect it.

If you want the motor to run cooler, then you have two options, and you can use both.

1) Improve the removal of heat from the motor. Mount it on a heatsink, or blow a fan at it.

2) Program the stepper motor driver to deliver less current to it in the hold, this will however reduce the hold torque. If that's not sufficient, program it to deliver less current when stepping, this will however reduce the driving torque.

Option 3) Stepper motors are very inefficient, and get hot. Replace it with a conventional motor, either brushed or BLDC, servo-controlled if you need accurate position.

  • \$\begingroup\$ I think I have to reduce phase current from the driver.Ill try it. \$\endgroup\$ – user_fs10 Nov 13 '17 at 7:19

Steppers usually don't need the same amount of torque to hold a position as they do to move. Drivers usually have an idle current setting and an active setting. In your datasheet on page 9, switch 4 selects if it reduces the current to half at idle or keeps it the same. If you keep it the same, I wouldn't be surprised if your motor is so hot that you can't touch it.

  • \$\begingroup\$ Im using Half Current mode and motor always rotating. \$\endgroup\$ – user_fs10 Nov 13 '17 at 7:12
  • \$\begingroup\$ I would adjust the dynamic current settings. It looks like on page 9 of the datasheet you can change the programmed run current with switches 1, 2, and 3. See what minimum current you can get away with without skipping steps, then increase just a bit to give you some margin. What is your load? Do you need all that torque? \$\endgroup\$ – Mike Barber Nov 13 '17 at 15:56

Each coil appears to be rated for about 8 watts or 16 watts total based on the resistance and current ratings. Depending on your supply voltage and configuration you can compute this or measure it.

If you use more power it will get hot, so follow the advice of Mike and Neil.

Why did you not compute power from Ohm's law?

When it is idle the power is all in heat. Heat reduces the strength of the magnets and that reduces the torque on the motor reducing the margin for skipped steps.

Bye the bye, I have the same controller but don't need this much current so I just use an arduino CNC shield with 2A, 12V drivers and operate the CNC gantry with Gerber Panel (.exe) ( very nice). Since I wanted high speed instead of high resolution, I use full steps and get over 1m/s speed with software controlled acceleration and velocity limits in the above s/w. Although I bought small fans for the motors, I never needed them with a low power idle mode..

  • \$\begingroup\$ How do you calculate wattage of the motor?Its complicated than you told I think. motor colis has inductance and BEMF. So, It cant calculate using Ohms law. \$\endgroup\$ – user_fs10 Nov 13 '17 at 7:16
  • \$\begingroup\$ Heat loss is mainly in the coil resistance and there are 3 configurations listed with R and I given for the motor thus I^2R. Consider the static condition with no BEMF. \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Nov 13 '17 at 12:05
  • \$\begingroup\$ Recall I said "When it is idle, the power is all in heat." ( i.e. worst case) Heat loss reduces in motion with BEMF. What voltage and config?. \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Nov 13 '17 at 12:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.