Desea un rango de señal de 0V a 5V. ¿No todos :-)? Vayamos por un enfoque diferente y veamos a dónde nos lleva eso.
Punto de partida: la solución más barata y sencilla.
Eso sería una resistencia en serie para crear un divisor de voltaje. Ese es el mínimo absoluto. Me he dado cuenta de que la gente no piensa mucho en esa resistencia, simplemente elige un valor redondo agradable como 10k \ $ \ Omega \ $. Pero encontré que hay un valor óptimo para esto.
La curva muestra la diferencia de voltaje entre la lectura mínima y máxima (9k \ $ \ Omega \ $ y 20k \ $ \ Omega \ $ resp.) en función de la resistencia de la serie (en k \ $ \ Omega \ $ ). Ver, de hecho tiene un máximo. Eso es fácil de encontrar si lo recuerdas
\ $ \ left (\ dfrac {f (x)} {g (x)} \ right) '= \ dfrac {f' (x) \ cdot g (x) - f (x) \ cdot g ' (x)} {g ^ 2 (x)} \ $
La diferencia \ $ V_ {MAX} \ $ - \ $ V_ {MIN} \ $ tiene un extremo para
\ $ \ dfrac {d} {d R_X} \ left (\ dfrac {R_ {MAX}} {R_ {MAX} + R_X} - \ dfrac {R_ {MIN}} {R_ {MIN} + R_X} \ right) = 0 \ $
Resolviendo para \ $ R_X \ $ da
\ $ R_X = \ sqrt {R_ {MIN} \ cdot R_ {MAX}} \ $
¡Una belleza!
Entonces, en nuestro caso, la resistencia de la serie será 13.42k \ $ \ Omega \ $, puede verificar esto en el gráfico. Al colocar las resistencias entre 0V y + 5V, esto nos dará un rango de salida de [2V, 3V]. Ese es el rango máximo que puedes obtener con 1 resistencia (*).
¿Es suficiente? El Arduino tiene un ADC de 10 bits, por lo que este rango le dará un rango de 200 niveles discretos. Eso debería dar una precisión suficiente para un sensor de bricolaje. Así que no hay otros componentes como opamps necesarios.
(*) La respuesta aceptada proporciona un rango de 1.9V, pero tiene ecuaciones incorrectas . Es imposible obtener un rango superior a 1V con 1 resistencia y solo un suministro de + 5V.