I currently have a 3pi+ robot with 75:1 LP 6V Micro Metal Gearmotors. The robot doesn’t start moving when the motor speeds are less than 40, and the maximum speed is 400. I’m looking to replace the motors with some that give me a wider range of speeds. I can compromise on the maximum achievable speed as long as the max to min ratio is higher than the one I have right now. I don’t have a lot of experience working with dc motors, so I would appreciate your help.
Unfortunately, I would expect you to have similar behavior with any of motor choice once you start trying to run them at duty cycles that low (around 10%). With brushed DC motors like these there is always going to be some minimum duty cycle to overcome the motor’s cogging torque.
However, there are a few options for accessing lower speeds. The most complete solution is probably to implement closed-loop speed control, which you could do on the 3pi+ using the built-in encoders. Alternatively, a simpler solution could be to pulse your motor with a higher duty cycle briefly then reduce it after it has overcome the cogging torque. This is basically doing the same thing as when you physically give the motor a kick.
If you have additional parts mounted on your 3pi+ you might also try removing those to see if that changes your results since the weight of your robot also contributes to the start-up torque.