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?

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.

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