Problema con sensor de infrarojos y PWM.

#1
Buenas!

Estoy haciendo un proyecto que consta de mantener dentro de un tubo una pelota con la ayuda de dos ventiladores de dc, uno arriba y otro abajo. El control lo hago con un pic 16f876A y el programa lo escribo en lenguaje C. Para saber donde tengo la pelota uso un sensor de infrarojo (que no es lineal), el cual hago entrar el voltage en un pin analogico.
En proyecto tengo que escoger una distancia (uso un potenciometro y entro el voltaje en un pi analogico y despues hago que en un display se visualice la distancia en que se va quedar la pelota) y hacer que la pelota se mantenga alli quieta, aunque tape un ventilador el otro tiene que hacer el "trabajo" para dejarla en esa altura. Para controlar los motores utilizo los dos PWM del pic que van a parar a unos transistores que trabajan en corte o saturacion y no tengo realimentacion.
Mi problema es que no se como hacer el programa. Declarar una variable para que despues de seleccionar la altura el programa haga que la pelota se quede alli y que si tapo un ventilador, el programa responda.
No se si me explicado bien, me gustaria que alguien me pudiera hechar una mano. No pido que me hagan el programa, aunque no estaria nada mal, pero si alguna idea o ayuda.

Gracias!
 
#2
tienes que buscar una ecuacion que te permita igualar la señal del sensor y la del potenciometro, para que cuando el usuario seleccione un valor en el potenciometro puedas saber a cuanto equivaldria en señal del sensor, y posteriormente incrementar o decrementar constantemente la velocidad de los ventiladores para que la bolita quede exactamente donde la necesitas

Solo que en este problema hay un truco.... el ajuste de la velocidad no es inmediato.... la bolita va a tardar un tiempo x en responder al cambio de velocidad y debes considerar eso en tus ajustes...
 
Arriba