Hi,
I guess a f-V-converter is not the exoected "discrete" solution.
But I have no idea how to build it with discrete parts, too.
Regulation problem:
I've built something similar woth the use of a microcontroller.
A regulation loop to be stable wants fast feedback of RPM. Now your RPM sensor just gives a couple of pulses per rev.
Every edge is an RPM information. The problem here is, that with high RPM you get an information - let's say - every 10ms.
But with low RPM it's maybe every 100ms.
For a regulation loop it's hard to compensate for this.
You may get it stable for high RPM, but it becomes instable for low RPM.
Thus:
For small DC motors I've used a different approach.
An ideal motor has a perfect V-to-RPM behaviour and it has a perfect torque-to-current behaviour.
Thus: connect the motor to a given voltage and it will result in a fix RPM, independent of torque.
Easy for RPM regulation: just use the voltage of desire and get the RPM of desire.
A real motor acts as if there was a resistor in series with the motor.
This means: connect a voltage, the motor starts to turn. Increase the torque, this automatically increases current, this automatically increases the voltage drop at the series resistor, this automatically lowers the voltage for the (ideal) motor, this automatically results in reduced RPM.
The problem is the series resistor.
Thus I designed a power supply with integrated negative source resistor. Sounds complicated, but indeed it just has a shunt inside to measure the current and feedbacked this information to the voltage regulation.
As example this means: set the output voltage to 12V (unloaded) then connect a load of let's say 100mA, and the output voltage automatically rises to 12.1V. This acts like a "-1 Ohms" source impedance.
One hast to carefully adjust the negative resistance of the supply to the series resistance of the used motor.
One can only compensate to let's say 90% of the motor resistance. Overcompensation lets the motor spin from zero RPM to full RPM and back.
Klaus