Running a low voltage motor with Arduino

I am working on a device to make photographic emulsion. It needs a micro pump like the one in this picture to control the speed of reagents introduced in the emulsion. The pump, although only 3V, runs at 350 mA so I can’t use it directly plugged to Arduino pins (max 20 mA). At the same time I must put it to work at lower rotations then when it is in its normal regime.

I thought of using an external power source (two AA batteries) and a TIP120 with PWM control from Arduino. But somehow I find strange that the logical signal will be 5V and the load will be at 3V level. Would that work? Does anybody see another solution for speed control?

I know I could test it, but I can’t damage this pump because it is the only one I have. So any insight will be very welcome.

The TIP120 drops 2V or more internally, so you need to use a 5V supply for a 3V motor. Furthermore, it is switched on by current, not voltage, so you must have a suitable base resistor between the port pin and the TIP120 base (1 K should be fine, minimum 150 Ohms).

Brushed D.C. motor voltage ratings are recommendations, not absolute limits. However, if you run it at higher than recommended voltages it will run faster and have a shorter lifetime.

Another option is a low voltage motor driver.

The reason to use the more expensive motor driver is that it is much more efficient than the TIP120. The 2V dropped by the TIP 120 at 350mA of current dissipates 2V * 0.35A = 0.7W of power dissipated as heat. The output resistance (Rds(on)) of the motor driver is 0.280 Ohms. At 0.35A that is 0.35A2 * 0.28Ohms = 0.035W.

Thanks for your inputs. I will think of a motor driver instead of TIP120.

In essence, the TIP120 and similar, like the ULN280x, should be regarded as obsolete - used only as a replacement part in old equipment. Not even useful for experimentation.

More appropriate parts (FETs) are available and have been available for some time, but are now basically as cheap as the TIP120.