I've been buying 3 volt dc gearmotors for about three years from China, they've screwed up my order and now my motors are rotating at twice the RPM from 24 to 48. How do I drop the the voltage properly to get the correct RPM for my application ? Shipping them back would be what I would do if it wouldn't cost me $500 back and forth and of course I have deadlines
You don't want to use a resistor to control the speed of a DC motor, because that reduces the torque and the speed becomes dependent on the load. What you need is a pulse width modulator (PWM). I am attaching a drawing of an elegant circuit I designed many years ago that has worked well. The output frequency is around 200 Hz and the duty cycle can be varied from near 0% to near 100%. Be sure to use a LMC555, not a LM555. The drive transistor can be any kind that will handle the motor current. A reverse diode around the motor as shown is a good idea to keep inductive spikes from damaging the transistor.
You can also pick up pre-built PWM circuits online for cheap if you are looking for a quick install.
If the motor is the same as the original except the reduction gear has been changed, the torque is already 1/2 of the original. Some experimentation with resistor values is in order. A starting value for the series resistor can be found by the motor voltage divided by the motor current. For example, if the motor draws 100 mA at 3 V the resistor value to begin with is 3V/100mA = 30 ohms. For safety and reliability the resistor power dissipation rating should be at least equal to 3 volts dropped across the resistor. For example, if the resistor is 30 ohms its dissipation rating should be at least (3^2)/30 = 9/30 = 300 mW. A 1/2 watt resistor would be sufficient.