Arduino driven stepper motor issues (low torque & RPM)

Hi everybody, I’m new to this forum :slight_smile:

I have a problem with stepper motor, which has very low torque for some reason (higher the speed-lower the torque) and I don’t know why. Stepper is driven by Arduino uno with help of 4× IRF540N mosfets and external power supply, only for motor. Motor has 5 wires (4 on each end of coils and one common wire that is presumably tapped in the middle of each of two coils and connected together). So I’m guessing that is 2 phase unipolar motor, but it has 5 instead of 6 wires (because common of both coils is connected together inside of the motor itself). I think it’s one of the MY16HS0-X models:

I’ll add pictures of circuit and its schematic diagram and program code.

Thank you very much for your help! :slight_smile:


That motor is a standard four phase unipolar motor. The center tap is intended to be connected to the power supply, and the other leads are intended to be switched to ground in a particular order.

The torque provided by stepper motors generally decreases as the step rate increases and approaches zero at the maximum step rate.

Here is a comprehensive guide.

Post a link to the datasheet for your stepper motor.

5-wire unipolar stepper motors are often driven with inexpensive ULN2003 chips - it may be worth considering whether your mosfets create an equivalent circuit.

Stepper motors generally work better with higher power supply voltages - but that requires that the stepper driver can limit the current to protect the motor. AFAIK the ULN2003 cannot do that, and obviously neither can your mosfets.

If you can separate the "5th" wire to make it a 6-wire stepper then it should be possible to drive it as a 4-wire bipolar motor with a specialized stepper driver such as a Pololu DRV8825.

Stepper Motor Basics

Thanks to both of you! :slight_smile:

I’m sorry, but I couldn’t post the picture of schematic diagram (I reached the upload limit per post).
So I’ll do that in this post…


In my circuit I did just the opposite of that (center tap is connected to - and others are switched to + in order, but that just changes the direction of rotation, right?).

Yeah I figured it out, that torque decreases as rpm increases and that you need to supply higher voltage at higher rpm, but my motor is still weird… (I can only go down to about 4ms delay - approx. 1rps… …when I try to go lower than that, the shaft will not turn - I can just hear rotating magnetic field). Even if i turn up the voltage, there is almost no difference between 1.2V or 15V…


I’m sorry, but I couldn’t find much information about my motor. (it’s Astrosyn, Type: 17PM-K041-P2F)

Thanks for suggesting those two chips (I’ll check them out). I also have some stepper motor driver chips (SLA7041MS), but I’m not sure if they’d work for that type of motor.

Thanks again! :slight_smile:

PS: I’ve measured the current whilst changing the voltage and it weirdly doesn’t change (stays at 100mA the whole time) :-//

The way you have wired the motors, the motor windings will never get more than a couple of volts. That won't work well, as you have discovered.

You need to turn the circuit around, with the motor leads connected to the MOSFET drains, and the center tap connected to (+) of the motor power supply.

Also, those MOSFETs won't work well at 5V on the gate. You need true logic-level units.