May I also point out your requirement to vary the speed, but your components give no way to measure the speed.
Paul