Así que tienes:
R_x R_fixed
Vcc -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Rx es una resistencia desconocida (probablemente un sensor de algún tipo). Y ahora mismo estás usando R_fija al 0,1% para calcular efectivamente R_x, pero quieres usar una resistencia fija más barata con una tolerancia menor, quizás del 1%. Al hacerlo, quieres realizar algún tipo de calibración durante la producción para corregir el aumento del error, ¿es así?
La forma en la que acabas haciendo esto es poniendo un byte en EEPROM (o alguna otra memoria no volátil) que actúa como un "offset" en tu cálculo, y es algo perfectamente viable. La cosa es que te va a costar algo de tiempo durante la producción hacer la actividad de calibración. Para hacer la calibración, necesitarás una de esas resistencias del 0,1% (llámala R_cal) de valor nominalmente comparable a tu resistencia del 1% para sustituir a R_x en el circuito. Midiendo V_sensada, puedes inferir con mayor precisión el valor de R_fijada (es decir, a algo así como el 0,2%).
Si R_cal y R_fixed son nominalmente el mismo valor, se esperaría que V_sensed fuera igual a Vcc / 2. Se almacenaría la desviación medida de Vcc / 2 como un byte de compensación de calibración, y siempre se añadiría a V_sensed tal como lo percibe su ADC.
El escollo, tal y como yo lo veo, es que hay un montón de trabajo involucrado en hacer la medición y posteriormente en almacenar el valor. Otra cosa que hay que tener en cuenta es que la temperatura puede influir en que una resistencia se desvíe de su valor nominal, por lo que hay que tener un entorno de calibración razonablemente bien controlado en cuanto a la temperatura. Por último, no olvide utilizar equipos de medición calibrados, ya que es otra fuente potencial de error aditivo. Un último escollo que se me ocurre es que el byte de calibración debe ser almacenado en unidades del lsb de tu ADC (así que si tienes un ADC de 12 bits, las unidades del byte de offset de calibración deben ser "Vcc/2^12 voltios").
Editar
Si utiliza dos resistencias fijas para dividir una tensión grande hasta una escala inferior, como se indica a continuación:
R1_fixed R2_fixed
V_in -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Sección reeditada
Así que ahora quieres utilizar una referencia de tensión de precisión (llámala V_cal) para estimular V_in durante un paso de calibración en la producción. Lo que tienes ahí es en teoría:
V_sensed = V_predicted = V_cal * R2_fixed / (R1_fixed + R2_fixed) = V_cal * slope_fixed
Pero lo que tienes en realidad es:
V_sensed = V_measured = V_cal * R2_actual / (R1_actual + R2_actual) = V_cal * slope_actual
En efecto, tienes una pendiente de la función de transferencia diferente en la realidad de lo que se podría predecir a partir de los valores de las resistencias. La desviación de la función de transferencia del divisor predicha será lineal con respecto a la tensión de entrada, y puedes asumir con seguridad que 0V de entrada te dará 0V de salida, por lo que hacer una medición de referencia de tensión de precisión debería darte suficiente información para caracterizar este factor de escala lineal. A saber:
V_measured / V_predicted = slope_fixed / slope_actual
slope_actual = slope_fixed * V_measured / V_predicted
Y utilizarías slope_actual como valor calibrado para determinar la tensión en función de la tensión medida.
abajo cortesía de @markrages
Para obtener la sensibilidad real de la pendiente a los valores de las resistencias se requiere una diferenciación parcial:
0 votos
¿A qué tipo de herramientas de producción tiene acceso? ¿Puedes conseguir/construir algo parecido a un programador/probador de cama?
0 votos
@reemrevnivek - Actualmente no. Mi fabricante de placas de circuito impreso realiza pruebas E en cada placa, pero no garantiza que la soldadura funcione.
0 votos
Hace 40 años, donde yo trabajaba (electrónica industrial), esto era bastante habitual en las placas con agujeros pasantes. La resistencia que se seleccionaba estaba en los terminales de la torreta, por lo que se podía añadir fácilmente más tarde. En una placa SMT, es difícil imaginar que fuera rentable.