Stepper motors can not get past 150rpm

Hello everyone,

I'm designing a system that uses stepper motor to drive a certain carriage. The problem is that the stepper cannot get past 150rpm. Here is my current setup:

Arduino Uno
Rugged motor shield (30-40V max, 2.8A max)
Stepper motor 4-wire (6A/Phase; 3V; 0.5 ohm)
Power input in the shield is a laptop charger (19.5V -- 4.7A)

I set my PWM to 71 and the total RPM can only reach 150. At 151 RPM, the motor stalls and won't move no matter what the PWM is. I've seen this motor go up to 400-500rpm before so the motor isn't the problem. Sorry I'm a total noob at this, can someone tell me what I did wrong?

P.S. I'm using the arduino stepper library btw

Quote from the website on that shield:-

The Rugged Motor Driver shield is a motor driver for two brush DC motors or one bipolar stepper motor.

So it is not a driver for a stepping motor.
You don't feed a stepping motor with PWM.

For info on stepping motors see:-
http://www.thebox.myzen.co.uk/Workshop/Motors_3.html
and
http://www.thebox.myzen.co.uk/Workshop/Motors_4.html

Wait, I'm confused. Your quote is saying that the rugged motor shield do support one bipolar stepper motor, which is what this is right?

Also, I understand the chopping method which is PWM and I'm trying to limit the current going through the motor. From the article, should increasing the input voltage help with increasing the RPM?

Disconnect the motor from the carriage and see if the motor runs faster. If so, something in the carriage is preventing the motor from running faster.

Also, I understand the chopping method which is PWM and I'm trying to limit the current going through the motor.

Yes but the chopping method of regulation is based on the feedback from the actual current flowing. By simply applying a fixed PWM you have what is known as an open ended control loop, not a closed control loop. There are much better drivers to get the best out of your motor.

To get a motor to run faster you need to get the current into the windings as quick as possible. The only way to do that is to up the voltage. This means that more current will flow once it has reached the maximum, it is then that you must chop the voltage off. For your system you must find the optimum point of the open loop PWM where the current you want to use is reached. This requires you to look at the current waveform with a scope.

The other thing about stepping motors is they can go faster if you ramp up to the speed rather than try and achieve it from a standing start.

Thanks for a very informative answer. I will try to up the voltage to see if the rpm improves. Is there a particular driver out there that will be better for my motor?

One more question: I heard microstepping drivers will help with the rpm and also the accuracy of the stepper. Will this help my situation in this case?

Appreciate all the help :slight_smile:

Have a look at the motor drivers I used in this project:-
http://www.thebox.myzen.co.uk/Hardware/CNC_Conversion.html
I was only able to drive them at 12V, it would have been better at 24V.

To run a stepper faster you need t be able to put more current through the motor. not seeing your wiring PWM doesn't make much sense. With a simple driver and low voltages I have been able to get 300RPM with no fancy programming. What is the voltage and current rating of your motor? Have you measured the actual current? Or are you feeding the PWM into a step input in which case your motor is running somewhere in the 500/4 or 125 rpm.

To run a stepper faster you need t be able to put more current through the motor.

True, but then if there is too much current the motor overheats.
The PWM is an attempt to have a higher voltage so that the current gets into the winding quickly but then is cut short so as not to overheat the motor. This really needs to be synchronised with the motor switching and not free running.

Looks like you're using the PC PSU. Mine have two 12v so i will be able to run them in series to make 24v. There are four wires outputting from the 12v (two com and a positive and negative). Should the two COM connectors be connected to the Arduino ground?

I will try this voltage (24v) and post what I got from the oscilloscope

Should the two COM connectors be connected to the Arduino ground?

Yes always connect grounds together.