Calibración del dispositivo
Antes de poder empezar a medir temperatura debemos calibrar el dispositivo. Todos los componentes electrónicos no son iguales y aunque todos tienen en teoría las mismas propiedades, en la práctica, los valores de los componentes son diferente aunque sean iguales. Esto es aplica a todos los dispositivos.
Para ello debemos obtener:
- La tensión Vref de referencia del Arduino.
- La tensión de Offset de los operacionales.
- Obtener la corriente real del generador de corriente y el valor real de la ganancia del amplificador operacional.
Tensión de referencia de Arduino.
Vamos a utilizar la tensión de referencia interna de Arduino. En teoría, dicha tensión es de 1.1 voltios; en realidad esta tensión no será exactamente esa tensión, si no que será muy próxima.
Aquí es donde entra un problema de diseño. Para poder usar correctamente la referencia interna debemos dejar el pin VREF al aire y en el esquema por costumbre en los diseños se llevó a VCC (5 voltios). Por lo tanto hemos de cortar la patilla como se muestra en la imagen:

En el .zip del esquema, la versión llamada "copia" tiene ese fallo corregido por lo que no hará falta.

Si bien la tensión no es 1.1V debe estar muy cercana a ella: 1.08, 1.09, 1.11 etc.
Para poder continuar con el proceso de calibrado debemos armarnos un juego de resistencias de pruebas. Dichas resistencias serviran para tener con un valor real de resistencia los valores de tensión en la placa.

Básicamente usaremos tres resistencias de valor aproximadamente entre el rango de temperatura. Recomendable una de 100 ohmios. En nuestro caso hemos usado 68, 100, 110, 147 ohmios. A cada una de ellas le hemos soldado una tercera pata para poder "simular" una pt100 de tres hilos.
El "tridente" simplemente es un puente para poder medir el offset.
Medición del offset del amplificador operacional.
Para medir el offset del amplificador operacional debemos ubicar la salida del operacional en la PCB, siendo esta una resistencia. En la siguiente imagen podemos determinar el punto para cada canal.

Instalamos el puente en el bloque terminal y mediremos en la resistencias los valores de tensión que obtenemos. Dicha tensión debería ser del orden de milivoltios, si hubiera tensión superiores tendremos algún fallo en la placa o algún componente.
Un amplificador operacional no es ideal, y cuando su entrada es cero, su salida no va a ser nunca cero. Esta tensión se puede medir y anular.
Una vez tengamos los datos podremos rellenar el array voff del programa.
Medición de la corriente y el valor de la ganancia.
A partir de ahora, debemos tomar bastante medidas y conviene utilizar papel y realizar una tabla.
Para un determinado canal debemos medir la tensión entre en el bloque de terminales (imagen anterior), y la tensión en la resistencia.
La tensión en el bloque de terminales nos sirve para obtener la corriente real que genera el LM317. El valor de la resistencia la conocemos. La tensión en el bloque de terminales será la caida de tensión que se produce en la resistencia. Por lo tanto aplicando la ley de Ohm (I=V/R) obtendremos la corriente.
Esta corriente debe ser muy cercana a miliamperio que escogimos, así que el valor debe estar muy próximo.
Anotada la corriente, medimos la tensión en la salida del amplificador, con lo que podremos obtener la ganancia real del amplificador dividiendo esta tensión entre la del bloque de terminales.
Igualemente, las resistencias del amplificador operacional se calcularon para obtener una ganancia aproximada de 6, con lo que el valor que obtengamos debe ser muy cercano.
Este proceso lo repetiremos para cada una de las resistencias y obtendremos una serie de valores de corriente y ganancia.
Debemos ajustar estos valores de tal manera que cuando introduzcamos los datos al programa el valor obtenido sea muy proximo a la temperatura teorica de la pt100 con ese valor de resistencia.
Con estos valores podemos rellenar los array iref y av que son la corriente de referencia y la ganancia de tensión en el programa.
Dejo un ejemplo de la hoja de calculo que realicé para tomar los datos:

La calibración no es perfecta y puede que tengamos un error de un par de grados, cosa que para la aplicación no es grave. Solo que es un proceso entretenido.