Paso 5: calibración
He trabajado con sensores de temperatura antes. Sé que son difíciles de calibrar especialmente en aire. Es muy difícil conseguir que dentro de un grado F de cada uno.
Como con la mayoría de los sensores de temperatura, la KTY81s no son muy precisas y deben ser calibrados. Por ejemplo, la resistencia a temperatura ambiente puede variar de 1900 a 2100 ohmios.
Si usted quiere construir esto, entonces necesitará calibrar sus sensores. Se trata de álgebra, tal vez un asesino juego para algunos lectores. Pero voy a tratar de llevarte a través de un simple ajuste lineal de dos puntos.
Teoría del procedimiento: Primero debes conseguir el sensor (o en este caso los sensores) a una temperatura fija y conocida. La temperatura conocida se mide con un instrumento conocido. Usé mi termómetro infrarrojo. Arduino se lee el sensor asociado y enviar un número entre 0 y 1023. Se registra la temperatura y la cuenta. Entonces para una temperatura distinta se repite todo el proceso.
Procedimiento aplicado: Envuelto el cable Ethernet hackeado en una bobina y había pegado en una caja, luego lo cerró. (Ver fotos) Lo pongo en un ambiente bastante estable en mi piso y permiten establecer por un tiempo. Luego tengo una lectura de Arduino, sólo las cuentas crudas de los sensores analógicos y había medido la temperatura en la caja con mi termómetro infrarrojo. (Ver imagen)
A continuación, fijar la caja exterior a una temperatura más caliente y repite el proceso.
Así que ahora debe tener dos temperaturas diferentes y dos diferentes cuentan para cada sensor.
Álgebra: Así que estos sensores son bastante lineales. Esto significa que los cambios de resistencia bastante uniformemente con la temperatura. Usé un ajuste lineal.
TempF = multiplicador * contar + Offset
TempF es la temperatura en grados Fahrenheit.
Cuenta es el número de Arduino.
Multiplicador es una constante para cada sensor.
Offset es una constante diferente para cada sensor.
Una vez usted averiguar lo que el multiplicador y el desplazamiento es para cada sensor cuando el Arduino lee la cuenta desde el sensor, el software este se multiplican por el multiplicador y añadir el desplazamiento para dar la temperatura en grados Fahrenheit.
Para encontrar el multiplicador y el desplazamiento de un sensor, sabes el TempF y cuentas para dos puntos diferentes así que tienes dos ecuaciones diferentes. Ejemplo:
A 83,5 grados, el quinto sensor tenía 999,3 cuentas.
A 75,5 grados, el quinto sensor tenía 979,5 cuentas.
Las dos ecuaciones son:
83.5 = M * 999.3 + O
75,5 = M * 979.5 + O
M = multiplicador y O = Offset
Usando álgebra puede restar la segunda ecuación de la primera
83,5 75,5 = M * 999.3 - M * 979.5 + O - O
Simplificar:
8 = M * 999.3 - M * 979.5
8 = 19.8 * M
M = 0.4040
Así que ya sabes lo que es M. Para encontrar O, simplemente enchufe el M una de las ecuaciones de partida:
83.5 = M * 999.3 + O
83.5 = 0.4040 * 999.3 + O
83.5 = 403.7576 + O
83,5-403.7576 = O
O =-320.258
Para comprobar sus cálculos puede conectar la M y O en la otra ecuación.
Alertar a los lectores: Algunos pueden preguntarse cómo tengo una cuenta de 999.3 cuando el Arduino solo salidas 0 a 1023. Eso es correcto pero estoy utilizando un valor promedio más de 25 muestras.
El desplazamiento es un número negativo. Esto está bien cuando el equipo sabe que añadir un número negativo es igual a restarlo.
Repita el procedimiento anterior para los otros cinco sensores y enchufe los valores en el software. Por cierto usé Excel para hacer los cálculos.
El software de Arduino está conectado.
Notas de software:
Una vez que el software es cargado en el Arduino, el terminal serie se utiliza para mostrar los resultados. Cada línea contiene las temperaturas del sensor superior hasta la parte inferior, separados por comas.
El software tendrá que ejecutar a través de 25 muestras antes de que comience con un promedio de correctamente. Esto le llevará unos minutos.
Notas de código:
flotador TempArray [NUM_SAMPLES] [MAX_TEMPS];
Se trata de un arreglo doble, sensores de 25 muestras x 6
Bajo "void setup(void) {" verá los multiplicadores y los desvíos para cada sensor.
Bajo "float getTemperatureF (unsigned int TempNum) {}"
Hay dos declaraciones de retorno.
La comentada "//return (SumTotal/NUM_SAMPLES);"
es la línea para obtener las cuentas primas promedio de calibración
El otro "volver multiplicador [TempNum] *(SumTotal/NUM_SAMPLES) + Offset [TempNum];"
Devuelve la temperatura calibrada.