Introduction: Minimum Speed of NEMA 17 Step Motor With Various Resolution of TB-6600 Step Motor Driver.

About: I am a sports physiotherapist (PhD PT). I have experience on Blood Lactate Threshold and Surface EMG. I interest in bio signal processing.

In this project I tested minimim speed of NEMA 17 Step Motor with various resolution of TB-6600 Step Motor Driver.

Supplies

Main Components

1) NEMA 17-HS4401 Step Motor

2) TB-6600 Step Motor Driver

3) Arduino UNO

4) 24 V 3A Power Supply


Other Components

5) Nema 17 Stepper Motor Holder

6) 350mm Lead Screw Nut - Trapezoidal T8 8mm

7) T8 Trapezoidal Nut Mounting Bracket

8) 3D Printer Flexible Coupling 5x8mm Coupler

9) KP 08 Pillow Block Bearing (Bore Diameter: 8mm)

10) 8mm Chrome-Plated Induction Hardened Shaft - 350mm

11) SK8 Aluminum Shaft Holder 8mm

12) 40x40x11mm Heatsink Block - Adhesive

13) Limit Switch

14) SCE8UU Linear Bearing

Step 1: Fundamental Terms I

Each single step consist of one high and one low duration. Sum of this duration is called Step Duration.


Step Duration (s) = 2 x Step Delay


Step Frequency (Hz) = 1/Step Duration

e.g.

Step Delay= 500 micro seconds (500 micro seconds for LOW and 500 microseconds for HIGH)

Step Duration= 2 x 500 micro seconds = 1000 micro seconds = 0.001 seconds

Step Frequency (Hz) = 1/Step Duration = 1/ 0.001 =1000 Hz

Step 2: Fundamental Terms II

Motor Speed (RPM) = (Step Frequency (Hz) x 60 ) / Driver Resolution


e.g. If driver resolution is 800 steps per revolution

Motor Speed = (1000 Hz x 60) / 800 =75 RPM

Step 3: How Tables Are Calculated

According to formulas above I have calculated possible values for each driver resolution.

When I tested the calculated values for each resolution, I removed the values ​​​​for which I could not get movement from the step motor.

Step 4: Micro Step Settings of TB-6600

NEVER CHANGE RESOLUTION SETTINGS WHEN THE DRIVER IS POWERED


Step 5: ARDUINO C++ Code

e.g.

const int delayTime=500; // 500 micro seconds

....

....

 digitalWrite(stepPin, HIGH);

 delayMicroseconds(delayTime);

 digitalWrite(stepPin, LOW);

 delayMicroseconds(delayTime);

Step 6: Full Step 200 Pulse Per Revolution

200 microsecond is the minimum stepDelay at 200 pulse/rev resolution. Noise level is high.

Step 7: 1/2 Step (400 Pulse/rev)

100 microsecond is the minimum stepDelay at 400 pulse/rev resolution.

Step 8: 1/4 Step (800 Pulse/rev)

60 microsecond is the minimum stepDelay at 800 pulse/rev resolution.

Step 9: 1/8 Step (1600 Pulse/rev)

30 microsecond is the minimum stepDelay at 1600 pulse/rev resolution.

Step 10: 1/16 Step (3200 Pulse/rev)

10 microsecond is the minimum stepDelay at 800 pulse/rev resolution.

Step 11: 1/32 Step (6400 Pulse/Rev)

1 microsecond is the minimum stepDelay at 800 pulse/rev resolution.

Step 12: Summary

1/8 Step (1600 Pulse/rev) and higher resolutions may be suitable for stabil appications.

If I have time I will put youtube videos about these tests.

Maximum speed that I have tested are last row of tables.