I have a need to run 10 DC motors using a single Arduino Uno. I don’t need to control their speed and I don’t need to run more than one motor at the same time. The motors are small: 12V, stall current <300 mA. I just need to switch them on/off. I need to be able to run one of the motors in reverse but the rest will only ever run in one direction.
I’m thinking MOSFETs and shift registers is the way forward somehow but I’m too much of a novice to figure out the details. I’m not worried about the coding at this stage but I need help with defining the hardware and how to connect it. What would you use, which components specifically?
Using a motor driver is a good option.
The motors can be controlled by a logic level N channel MOSFET switching the low side of the motor.
What other I/O will be handled? Maybe the shift register can be left out.
For the motor that needs to run in both directions, you need an H-bridge.
For the other motors, you could also use H-bridges. But because these motors only need to run in one direction, each H-bridge could be used to drive 2 motors.
Please avoid old, outdated and inefficient H-bridges like L29x. Choose more modern H-bridges using MOSFET technology.
For example TB6612FNG is a dual H-bridge. Each module could drive 2 motors in forward/reverse or 1 motor in forward/reverse and 2 motors in single direction, or 4 motors in a single direction. You would need just 3 of these modules.