Paso 8: Usando el sensor de temperatura MCP9701
Problema: La tensión de salida máxima es de 3,0 voltios y el Arduino estándar utiliza a menudo la fuente de 5 voltios desde el ordenador o portátil USB. Este voltaje puede variar haciendo que las lecturas varían.
Solución: Para mejorar la exactitud, decidí usar el 3.3Vdc desde el Arduino conectado al pin AREF Arduino a través de un resistor de 3.3K. Los 3.3Vdc fuente es mucho más precisa que los 5Vdc. Por el techno-geeks, resistencia interna es de 32K tan AREF = 3.3/(32K/(32K+3.3K) = 3.0 Vdc.
Para utilizar el pin AREF, fue agregada la siguiente línea en el código de Arduino.
analogReference(EXTERNAL);
Diseño de software:
Aquí está el código esencial:
Obtener las lecturas de temperatura media nsamps
para (byte j = 0; j < nsamp; j ++)
{
ThermValue += analogRead(ThermPin);
}
ThermValueAvg = ThermValue/nsamp;
mVout=(float) ThermValueAvg*3000.0/1023.0; 3.0V = 3000mV
=(MVout-400.0) TempC/19,5; TA = (Vout-400mV) / 19.5mV //Original
=(MVout-490.0) TempC/19,5; TA = (Vout-400mV) / 19.5mV //Modified
TempF = TempC * (9.0/5.0) + 32;
Explicación del código: El análogo ThermPin 2 muestrearon diez veces entonces un promedio de. La cuenta promedio analógica se convierte en mVolts(mVout). El mVout se convierte en TempC (centígrados). El primer cálculo TempC es comentado. Se trata de la conversión sugerida. Para el MCP9701 que yo estaba usando, encontré que se trataba de unos 8 grados, así que ajusté (ensayo y error) la fórmula para la segunda fórmula. Puede ajustar el valor de 490, si estás usando un MCP9701 y que no informa la temperatura correcta. Entonces siguiente línea convierte TempC TempF (Fahrenheit).