yo hice algo parecido a lo que tienes para el robot de sumo, y la solución digital creo es la mas efectiva, aunque la analógica tambien puede andar. Para la analogica se me ocurre que puedes usar un filtro con una resitencia y un condensador (los entendidos que me digan si es pasa bajo o pasa alto
) y la salida a un comparador con un set.
Para la parte digital, yo lo que hago es algo así como un pseudo fuzzy logic.
Los receptores trabajan con una modulación de los 30khz, dependiendo del receptor, entre los 400 y los 800us, es decir, tienes que enviarle un tren de pulsos en 30khz durante 600us y luego apagar el emisor, porque sino se satura.
Entonces lo que hago es enviar 30 pulsos de 600us y contar las veces que recibo rebote del objeto.
Defino un umbral de por ejemplo 15 pulsos detectados y si la cuenta es superior la doy como buena, sino la descarto.
Lo que puedes hacer tambien para mejorar el uso del emisor es achicar el ancho del pulso, es decir, achicas el ancho de los 30khz, pero aumentas la corriente, para esto deberias ver la hoja del dato del emisor para no pasarlo de la corriente. Esto me ha resultado y aumenté el rango.
Luego con estos valores, de la corriente y del umbral puedes jugar asta encontrar lo que necesitas.