I'm trying to control 6 24V 3W DC motors with my Arduino. The motors only need to run in one direction, and I need to be able to control the speed with a reasonable threshold. In addition, the motors will never be running all at once, in other words it's possible that I drive them with one one chip, and the switch which motor somehow. It might just be easier to build a driver per board though. I'm a little new to driving motors with an Arduino, so any help would be great.
You could use one MOSFET per motor…
You could use a ULN2803 (8 drivers per I.C.).
3W @ 24V is only 125mA. However, the stall current (and therefore the starting current) may be higher. Measure the motor resistance to work it out. If it's no more than 500mA, then a ULN2803 (as already suggested) should be adequate. If it's more, then use one mosfet per motor.
You also know that the current is limited by your power supply, so some detail about that would be useful.
The stall current might be limited by the motor winding resistance or the supply. If the motor only draws that current briefly (at start up perhaps) then it might not matter too much (if you use PWM you can limit the drive at start up anyway).
Good engineering however suggests you build the motor driver to survive continuous stall current anyway.
A good quality motor can have surprising high stall current(*), it is often the case that the supply is the limiting factor in practice.
(*) lower resistance windings mean more efficiency during normal operation, meaning less heat to dissipate and less slow-down under mechanical load.