Okay, Zack. First, your motor is rated for 3 volts. It will indeed run
at a higher voltage, but with a greatly shortened lifespan due to
overheating. Whatever you do, you will get the best torque and performance
if you operate the motor at 3VDC.
Operating it at a lower voltage means getting considerably less power
because the power equation has a square term in it. If you cut the voltage
in half, for instance, the motor's resistance will ensure that the current
decreases in proportion. Since power can be expressed as I^2 R, then this
means that at half voltage, you have half current, and half squared is one
fourth. This dictates that at 1.5 volts, you can expect only one fourth of
the power output from this motor.
In a nutshell, try to stay close to 3 volts. Now for the CPU output
I hope you are not trying to directly drive a motor from a processor
output terminal. Of course not, you surely know better than that. Motors
have many things going against them when you try to control them
electronically. One of the biggest issue is that motors are inductive
devices and they generate huge spikes of noise when they run. A small 6
volt DC motor in a toy car can generate 200 volt spikes when running.
Placing a small ceramic capacitor right at the motor terminals can get
rid of a great deal of this, and adding an MOV can snub anything that leaks
through. Then you want a ferrite bead on the motor lines to prevent spikes
from getting back to the drivers or power system.
The output of your CPU will likely only be able to source or sink about
a milliamp or so current-wise. You will want to use a driver such as a
power MOSFET or H-bridge to turn the logical output into a beefier,
low-impedance motor driving signal. The processor output will provide the
control only and not directly drive the motor at all.
Assuming that you have properly interfaced the motor to the CPU pin in
question, and that you have your motor properly isolated so its electrical
hash will not reset or destroy your processor, then you must provide a 3
volt supply to the driver. This means that your processor will create the
logic levels, the signals from the CPU output pin will drive only the
H-bridge or driver circuit, and the motor gets its power from there.
Now for that 60% duty cycle thing.
That's it in brief. Don't do it. You see, you are still driving the
motor at 5 volts, not 3 volts, when power is there. What you really, truly
want to do is have a 3 volt supply for your motor and to use the H-bridge or
driver to supply that 3 volts to your motor. Now you can use the full range
of duty cycles from zero to 100% without problems.
The whole idea behind PWM is that you apply the full rated working
voltage to the motor at all times that it is running, so that full torque is
available to the load that your motor is driving. By varying the duty
cycle, you are allowing the motor to apply that torque at all times it is
operational, but you are getting different run speeds because the motor is
only on for a fraction of the total time.
So what you truly want is an independent 3 volt supply (which could be
derived from your existing power supply), a driver circuit that accepts
logic from your CPU, and the proper noise isolation to make the motor play
nicely with your digital electronics.
I hope this is helpful.
Sir Charles W. Shults III, K. B. B.