Medir rotação e controlar motor bidireccionalmente

Desculpem mas sou novato neste ramo mas curioso…
Basicamente o que preciso é de medir a rotação de uma roda e, com base nessa rotação e numa rotação ótima de 26 rpm, controlar um outro motor. Se o valor rpm estiver abaixo do valor de referência, rodar o outro motor à direita. Se for acima, rodar à esquerda. Terei também de prever uns fins de curso em ambos os lados deste segundo motor para parar ao chegar a esse limite.
No real, o que pretendo é medir a rotação de uma roda de água. Quando esta ultrapassar as 26 rpm, terei de ativar um motor para desviar água da roda e e assim reduzir as rpm da roda. Quando estiver abaixo, preciso recolocar água na roda para aumentar rpm.
Será possível? Podem ajudar-me por onde começar?
Abraço

Um primeiro passo pode ser este: https://www.instructables.com/Water-Wheel-With-Speedometer-DIY/

E talvez o segundo passo: https://www.instructables.com/How-to-Control-Servo-Motor-Using-Arduino/ ou https://www.instructables.com/Simple-Robotic-Arduino-Arm/ para finalizar o Super Servo do Ludicon para acionar a comporta: Super servo de 100 kgf.cm - PARTE 1 - YouTube Boa Sorte!