"I'm going to need analogue control"
This is almost always done by rapidly connecting and disconnecting the motor to power, using PWM or something similar.
The switching is faster than the motor can respond, and often the designer picks a switching frequency faster than the 20 kHz humans can hear.
generating PWM signals
There are 3 popular methods of generating PWM signals: ( a, b )
- Generate the PWM in software ("Bit-banging Pulse Width Modulation"). Typically this is the lowest-cost approach. With enough 74HC595 or TPIC6595 chips, one Arduino can control any number of motors. (But I doubt you'll be able to get 20 kHz PWM frequency this way).
- Generate the PWM using on-chip PWM hardware on the microcontroller. With enough Arduinos, you can control any number of motors at a high PWM frequency with 3 or 4 motors per Arduino.
- Generate the PWM using dedicated PWM peripheral chips such as the TLC5947, which the microcontroller occasionally loads with a new PWM duty cycle. With enough TLC5947 chips, one Arduino can control any number of motors and still maintain a high PWM frequency.
Converting PWM signals into something that can drive a motor
It appears your motors are rated at 85 mA start, 75 mA continuous.
That is really tiny for a motor.
But it's still more power than most digital logic chips can drive directly.
As you can see from this list, only one of the chips mentioned above (the TPIC6595) is really designed to directly drive that amount of power:
- TPIC6595 datasheet: test conditions ... 250 mA continuous sink current capability.
- TLC5947 datasheet: test conditions ... 30 mA continuous sink current
- ATmega328P datasheet: "test conditions ... 20 mA at VCC = 5V, 10 mA at VCC = 3V... Pins are not guaranteed to source current greater than the listed test condition."
- 74HC595 datasheet: test conditions ... 7.8 mA.
We typically use some kind of "buffer" between the digital logic chips (any of the above chips) and a motor.
For motors that we only need to turn in one direction, we typically we use flyback diode and either a nFET or a npn transistor as the "buffer":
- ULN2803A or ULQ2803A (transistor + flyback diode array) datasheet: test conditions ... over 150 mA continuous.
- There are thousands of discrete transistors and diodes that can easily handle: 10 V, 1 A. ( a )
For motors that we need to turn both "forwards" and "reverse", we typically use 4 transistors arranged in a H bridge as the "buffer":
- L293D H bridge datasheet: test conditions ... 600 mA.
- There are thousands of discrete transistors and diodes that can easily handle: 10 V, 1 A.