I have this dc geared motor running on 12V.

I'm using PWM to control its speed. The problem is that on 12V, the motor is running way to fast for my purpose. With a duty cycle of 22/255 the speed is ok, but it would be nice if it could run even slower.
However the motor stalls when the duty cycle gets under the 20's...
Are there tricks to make it run on even lower duty cycles? I've tried adding a capacitor, but the speed went way up, so that didn't help.
Use synchronous rectification (1/2 H-bridge) rather than a single switch if you
want more linear speed control from PWM?
What PWM frequency are you using BTW, this affects the ratio of slow to fast decay
mode when doing single-switch control.
Also what exactly are you trying to achieve? Slow accurate motion normally needs
a stepper motor or an encoder + servo feedback loop.
I'm using this motor to coil extruded plastic. The purpose is that the motor's speed is adjusted to the extruded filament's speed. I have 5 ldrs that check for the height of the filament and the speed of the motor is changed to 'fast' when its too low, or 'slow' when the wire is getting too high. (just watch the clip, its hard to explain for me
)
note that in this clip, I'm using an older motor, the one I'm using now is more robust, and I'm using a gear now instead of a toothed belt, for easier swapping of coiled filament rolls.
So I'm using a simple transistor
for this motor.
I'm running it on the default 490Hz. If possible I'd like to keep it as it is, because I don't like to change the timers, It gave me lots of trouble in the past (I'm running steppers, serial communication, other time-sensitive stuff on the same arduino) so yeah, rather not changing the pwm frequency ![]()
I know a stepper could offer a neater rpm control, but it's relying on feedback from the sensors to change its speed, so absolute control from user experience isn't required.
To be honest, I'm not using a stepper because I don't have one, and the ones with enough torque are more expensive than this geared motor ![]()
Complicated circuit, I'd use a low-side logic-level MOSFET - that'll give the
full 12V to the motor instead of about 10.5V too.
Motors are usually PWM'd at 4kHz, 8kHz or 16kHz, for what its worth.
If the PWM is restricted to low duty range (short motor on-time) then a higher motor voltage may be acceptable.