Drive a small DC motor at very low speed WITHOUT microcontroller.

This circuit is designed to control the speed of a small DC motor (in this case a 5V motor salvaged from an old CD drive) at low RPM. The current is measured and used to control the duty cycle of the PWM signal that drives the motor.
The author decided to use a complete analog design to tackle this issue based on an application note of Texas Instruments in the data sheet of the good old dual OPAMP LM358 . Although he knew that the positive feedback used in this circuit is not considered to be the most favourable approach, he managed to get a stable solution after some experimenting and tweaking. With the component values used in the schematic a duty cycle ranging from 17% (at 55Hz, no load) to 21% (at 45Hz, under load) was measured, which was good enough for the application he wanted. But his own bottom line is: "in my next design, I will use a microcontroller".