Hola Cristhian. ¿ Has probado hacer como se procede en los conversores ADC por aproximaciones sucesivas ? Esto es de la siguiente forma:
El valor de entrada se compara con el valor medio de la escala. Si el conversor es de 8bits (0-255) se compara el valor de entrada con 128.
Si el valor de entrada es mayor es mayor entonces se aumenta el valor a comparar a 3/4 osea 194.
Si por el contrario el valor de entrada es menor se compara con 1/4 de la escala osea 64.
Y así sucesivamente siempre reduciendo la mitad de la escala en cada paso hasta que se llega al final cuando se tiene que el valor de entrada es igual al valor de comparación.
Dado que la variación de ese valor, en tu caso, no sera tan rápida como si el sistema estuviera monitoreando una aplicación de audio en donde la señal varia muy rápidamente, una vez el sistema sepa que se acomodo a esa señal puede empezar a corregir en +-1 de incremento/decremento para seguir la medición. O, incluso, si ves que al llegar ahí oscila mucho solo hacer los cambios correctivos cuando detecte que la medición supera en +-10 el valor leído.
Digamos que lee que la entrada vale 100, hace todo lo que tiene que hacer: colocar el dutty en x, etc y luego no hace nada hasta que vea que el valor supere para arriba o abajo en, este caso, 90 o 110. Osea la das histeresis por software.
Quizás haya que aumentar o disminuir la histeresis en las pruebas hasta que obtengas el resultado que desees y te quede un sistema estable (el de +-10 lo dije para el ejemplo).
Saludos.
- Javier -