Go Down

Topic: Stepper Driver Losing Power in the Middle of Use (Read 1 time) previous topic - next topic

ZZRAYZ

Hi,

I am using an UNO R3 to run a TB6600 stepper driver. I have my program setup to run a nema 23 stepper motor which turns a ball screw.

The program runs the motor in one direction quickly, then slows down running a little further then finally reverses and goes back to where it started.

The problem is that the TB6600 is losing power mid way through the reverse portion. It just stops and the power light goes off. I have to disconnect the power for ~10 seconds and then it works fine again for a while.

My total run time is 5-6 minutes. It has a large heat Sink and does not feel hot.
Is there a duty cycle that I am exceeding?
Did I just get a faulty part?
Am I somehow exceeding its capabilities? If so, is there a slightly better driver I can look into?

Any guidance would be appreciated.

Robin2

We need facts ...
  • Post a link to the datasheet for your stepper motor
  • Post a link to the datasheet for the stepper driver
  • Tell us what stepper motor power supply you are using (volts and amps)
  • Post your program


It sounds as if the driver is being overloaded and is shutting down to protect itself

...R
Stepper Motor Basics
Simple Stepper Code
Two or three hours spent thinking and reading documentation solves most programming problems.

ZZRAYZ

I do not have the data sheets. Here are the Stepper Motor specs from Amazon:

Manufacturer Part Number: 23HS45-4204S 57x100
Step Angle: 1.8°
Holding Torque: 3.0Nm(425oz.in)
Rated Current/phase: 4.2A
Phase Resistance: 0.9ohms
Recommended Voltage: 24-48V
Inductance: 3.8mH±20%(1KHz)
Weight: 1.8kg
Lead Length: 30cm

Here are the specs for the driver:

single chip bipolar sine microstep stepper motor driver
the new BiCD 0.13 nm process
up to 42V
resistance (a +) = 0.4
?the forward and reverse rotation control
5 subdivision mode options (1/1, 1/2, 1/4, 1/8, 1/16,1/32)
output current: IOUT = 4.0A (peak, in 100ms)
rated output: IOUT = 3.5 A
package: HZIP25 - 1.00F
input port internal pull-down resistor: 100 K
alarm output pin current:Ialert = 1mA
monitoring output pin (MO): Imo= 1mA
with reset and enable pin
with standby function
Break through the traditional, single power supply
built in overheating protection (TSD) circuit
Undervoltage protection, built-in (UVLO) circuit
built-in overcurrent detection (ISD), circuit

I have tried a 12V 5A power supply and a 24v 5A power supply. The results are the same.


ZZRAYZ

Here is my program

Code: [Select]

void setup()
{
  pinMode(8, OUTPUT);       // FORWARD(LEFT) = LOW; REVERSE(RIGHT) = HIGH
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH);
  pinMode(2, INPUT_PULLUP); // BUTTON2 - 5GAL HEAD
  pinMode(3, INPUT_PULLUP); // BUTTON3 - 15GAL HEAD
  pinMode(4, INPUT_PULLUP); // BUTTON4 - LEFT JOG
  pinMode(5, INPUT_PULLUP); // BUTTON5 - RIGHT JOG
}

 void loop()
{
   //__________________________________________________________________________________
   if (digitalRead(2) == LOW)// Button 2 PRESSED - 5GAL
  {
    digitalWrite(8, LOW);                       // TURN COUNTERCLOCKWISE - CUTTING
    for (int loop=0; loop<4500; loop++)         // FAST MOVEMENT -
    {
      digitalWrite(9, HIGH);
      delay(1);                                
      digitalWrite(9, LOW);
      delay(1);                                
    }
    for (int loop=0; loop<1125; loop++)         // SLOW CUTTING - SET NUMBER OF LOOPS (1000 = ~1")
    {
      digitalWrite(9, HIGH);
      delay(400);                              
      digitalWrite(9, LOW);
      delay(1);                                
    }
    delay(10000);                                // PAUSE TO FINALLIZE CUT
    digitalWrite(8, HIGH);                       // TURN CLOCKWISE - RETREATING
    for (int loop=0; loop<5625; loop++)          // BACKING UP - SET NUMBER OF LOOPS (1000 = ~1")
    {
      digitalWrite(9, HIGH);
      delay(1);                                
      digitalWrite(9, LOW);
      delay(1);                                
    }
  }
  //__________________________________________________________________________________
  
  if (digitalRead(3) == LOW)// Button 3 PRESSED - 15GAL
  {
    digitalWrite(8, LOW);                       // TURN COUNTERCLOCKWISE - CUTTING
    for (int loop=0; loop<3200; loop++)         // FAST MOVEMENT -
    {
      digitalWrite(9, HIGH);
      delay(1);                                
      digitalWrite(9, LOW);
      delay(1);                                
    }
    for (int loop=0; loop<1125; loop++)         // SLOW CUTTING - SET NUMBER OF LOOPS (1000 = ~1")
    {
      digitalWrite(9, HIGH);
      delay(400);                              
      digitalWrite(9, LOW);
      delay(1);                                
    }
    delay(10000);                                // PAUSE TO FINALLIZE CUT
    digitalWrite(8, HIGH);                       // TURN CLOCKWISE - RETREATING
    for (int loop=0; loop<4325; loop++)          // BACKING UP - SET NUMBER OF LOOPS (1000 = ~1")
    {
      digitalWrite(9, HIGH);
      delay(1);                                
      digitalWrite(9, LOW);
      delay(1);                                  
    }
  }
   //__________________________________________________________________________________
  if (digitalRead(4) == LOW)   // BUTTON 4 PRESSED - COUNTER-CLOCKWISE - LEFT ONCE
  {
    digitalWrite(8, LOW);                        // FORWARD - CUTTING
    digitalWrite(9, HIGH);
    delay(5);                                  
    digitalWrite(9, LOW);
    delay(1);                                  
  }
   //__________________________________________________________________________________
  if (digitalRead(5) == LOW)  // BUTTON 5 PRESSED - CLOCKWISE - RIGHT ONCE
  {
    digitalWrite(8, HIGH);                       // REVERSE - RETREATING
    digitalWrite(9, HIGH);
    delay(5);                                  
    digitalWrite(9, LOW);
    delay(1);                                  
  }
   //__________________________________________________________________________________
}

 


The shutting down to protect itself makes sense. I was looking at a DQ542MA with the following specs:

Input Voltage: 18-50 VDC
Input Current: < 4A
Output Current: 1.0A~4.2A
Consumption: 80W; Internal Insurance: 6A
Working Temperature: -10℃~45℃
Stocking Temperature: -40℃~70℃
Humidity: Not condensation, no water droplets
Gas: Prohibition of combustible gases and conductive dust
Weight: 200G

Would this handle it better?

Robin2

Your motor appears to require 4.2 amps and your motor driver can only supply 3.5 amps continuously. I am not surprised that it shuts down.

I reckon you need a stepper driver that can provide at least 5 amps continuously, and 6 amps would give a bigger margin of safety.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

ZZRAYZ

Okay. That makes sense.
I have a smaller motor that I can use. I believe it is a 2.8-3.0a motor. Should my driver be able to handle it okay

Robin2

I have a smaller motor that I can use. I believe it is a 2.8-3.0a motor. Should my driver be able to handle it okay
Do you really need to ask?

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

ZZRAYZ

I know that 3.0a is less than 3.5a but you suggested 6a for my 4.2a motor. I was asking about the 'margin of safety' you mentioned.

Robin2

I know that 3.0a is less than 3.5a but you suggested 6a for my 4.2a motor. I was asking about the 'margin of safety' you mentioned.
More margin is better. But it seems you already have the motor and the driver so why not try them?

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

ZZRAYZ

So I finally had time to test. I switched to the smaller motor and it ran further through the program. It was just about complete and then the same thing happened, the driver power light went out and it stopped.

I switched to my 24v 5a power supply and it started running fine but stopped earlier than with the big motor or the small motor when hey had the 12v 5a supply.

It seems very reasonable that the driver is shutting itself down to protect itself but I do not understand what the issue is. If the motor is not pulling too much and the power supply is supplying enough, what else should I check?

Robin2

It seems very reasonable that the driver is shutting itself down to protect itself but I do not understand what the issue is. If the motor is not pulling too much and the power supply is supplying enough, what else should I check?
Try setting the current limit to a lower value - comfortably below the driver's upper limit. That will reduce the motor torque - but it may help to isolate the problem.

If there is still a problem I would suspect a faulty stepper driver.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

ZZRAYZ

I set it down to 2.8 and it still failed. So I ordered a new driver. Hopefully a faulty driver was the problem

Thank you for your help with diagnosing this.

Robin2

I will be interested to hear more when you get the new driver.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

ZZRAYZ

So I ordered a Leadshine DM542T stepper driver (4.2a) and it arrived today. It requires 20-50v so I hooked up my 24v 5a power supply and my smaller stepper motor(3a). I tested it on my table. It doesn't have the ball screw attached but it did work correctly. It ran all the way through the program without powering off and it was still on and ready to receive button presses after.

While I haven't had a chance to test installed in its final application, it is working hooked up on my table which is something my other setup would not do. I guess I just got a junk driver or it was no where near as powerful as it claimed to be.

Thank you for your help with solving this

Robin2

Two or three hours spent thinking and reading documentation solves most programming problems.

Go Up