Hello dear all.
I am totally new to electronics, arduino and driver (my background is totally different).
I am looking for help on stepper motor NEMA 17, (many of you can say that there are many post about it). Well, i checked many of them and i could not find any answer.
Look i have an arduino uno, and of course my stepper motor nema 17 with the following specifications
42SHD0217-24B
Shaft diameter Ø 4.5 x 22 mm (single shaft)
Connection 6-pole connector (JST), 4 pins used
Steps per revolution 200
Holding torque 0.45 Nm
Rated voltage 3.3 V
Rated current 1.5 A
Step angle 1.8°
Amount of Phases 2
Phase resistance 2.2 Ω
Phase inductivity 5 mH
Isolation resistance Min. 100 MΩ at 500 V DC
Isolation class B (130°)
Rotational inertia 57 g·cm²
Detent torque 0,015 Nm
Operating temperature -10 - 50 °C
Dimensions 42 x 42 x 42 mm
Weight 0,3 kg
NEMA 17-04 stepper motor
Then i looked for a driver, and i decided to go for the following one TB6600 (HY-DIV268n-5A)
With the following specifications
Specifications:
Voltage range (power supply): 8-42VDC (12-36V recommended)
Voltage range (signals): 2.0-5.5V
Maximum peak current per bridge (adjustable via dipswitch): 0.2A, 0.6A, 1.2A, 1.8A, 2.5A, 3.3A, 4.2A, 5.0A
5 micro step options
Driver type: Toshiba TB6600
Input signal isolation via optocouplers
Built-in thermal protection
Built-in protection against over current
Built-in heatsink
Dimensions: 106x76x33mm (without screw terminals)
The reason!, because i saw many post and almost of all them discard the driver L298N.
Hence the first question is: Is my chosen driver RIGHT?.
Then, i set the current to 1.2A into my driver, also 1 step.
my wiring is the following one (see image

)
i followed this link https://mytectutor.com/tb6600-stepper-motor-driver-with-arduino/
i just want to run my motor in one direction also i want really small speed but of course continuous movement
Hence i wrote my code
const int stepPin = 5;
const int dirPin = 2;
const int enPin = 8;
void setup() {
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(enPin,OUTPUT);
digitalWrite(enPin,LOW);
}
void loop() {
digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
for (int x = 0; x < 200; x++) {
digitalWrite(stepPin, HIGH);
delay(30); // Adjust this delay as needed to reduce the speed and heat
digitalWrite(stepPin, LOW);
delay(30); // Adjust this delay as needed to reduce the speed and heat
}
}
Then everything works nice and neat, up to the point on which the motor gets extremely hot, also the driver gets hot.
i need to run the motor for at least 3 hours (can be less).
Is my code right?.
Is my wiring right?
Is my driver right?
How to lower the temperature?
Can you provide any suggestions?
Note: i lowered the current on my driver to 0.6A in order to see improvement, but as i told you i have no idea about this topic.
Thanks in advance
Alberto