Делал и по-другому: на валу двигателя ставил крыльчатку, оптопару KTIR0411, ATmega8 измеряла частоту вращения и спомощью PID-регулятора поддерживала на заданном уровне.
ШИМ фильтровал, от ШИМ частота вращения зависит почти линейно. Если требуется более точное поддержание скорости, тогда нужен ФАПЧ, но он более требователен к джиттеру сигнала с датчика.